Tätä skriptiä ei tulisi asentaa suoraan. Se on kirjasto muita skriptejä varten sisällytettäväksi metadirektiivillä // @require https://update.greasyfork.org/scripts/389838/731225/IBM%20script.js
.
// ==UserScript==
// @name IBM script
// @namespace ibm-v18-javascript
// @description IBM script to be used on other grease scripts
// @version 18
// @grant none
// ==/UserScript==
/*!
* Name: ibm.com v18 production file
* Release: 142.0.0
* Built: 2019-08-21 4:54:04 AM
* Owner: Michael Santelia, Vlad Saling
* Copyright (c) 2019 IBM Corporation
* Description: Official file for production use
*/
var IBMPerformance = {
mark: function(e) {
try {
window.performance.mark(e)
} catch (e) {}
},
measure: function(e, t, i) {
try {
window.performance.measure(e, t, i)
} catch (e) {}
}
};
IBMPerformance.mark("V18-begin-execute"), window.v18JsStart = (new Date).getTime(),
function() {
for (var e, t = ["assert", "assert", "cd", "clear", "count", "countReset", "debug", "dir", "dirxml", "dirxml", "dirxml", "error", "error", "exception", "group", "group", "groupCollapsed", "groupCollapsed", "groupEnd", "info", "info", "log", "log", "markTimeline", "profile", "profileEnd", "profileEnd", "select", "table", "table", "time", "time", "timeEnd", "timeEnd", "timeEnd", "timeEnd", "timeEnd", "timeStamp", "timeline", "timelineEnd", "trace", "trace", "trace", "trace", "trace", "warn"], i = t.length, n = window.console = window.console || {}, o = function() {}; i--;) n[e = t[i]] || (n[e] = o)
}(),
function(m, p, h) {
function f(e, t) {
return typeof e === t
}
function a(e) {
var t = x.className,
i = u._config.classPrefix || "";
if (T && (t = t.baseVal), u._config.enableJSClass) {
var n = new RegExp("(^|\\s)" + i + "no-js(\\s|$)");
t = t.replace(n, "$1" + i + "js$2")
}
u._config.enableClasses && (t += " " + i + e.join(" " + i), T ? x.className.baseVal = t : x.className = t)
}
function s(e, t) {
if ("object" == typeof e)
for (var i in e) C(e, i) && s(i, e[i]);
else {
var n = (e = e.toLowerCase()).split("."),
o = u[n[0]];
if (2 == n.length && (o = o[n[1]]), void 0 !== o) return u;
t = "function" == typeof t ? t() : t, 1 == n.length ? u[n[0]] = t : (!u[n[0]] || u[n[0]] instanceof Boolean || (u[n[0]] = new Boolean(u[n[0]])), u[n[0]][n[1]] = t), a([(t && 0 != t ? "" : "no-") + n.join("-")]), u._trigger(e, t)
}
return u
}
function g() {
return "function" != typeof p.createElement ? p.createElement(arguments[0]) : T ? p.createElementNS.call(p, "http://www.w3.org/2000/svg", arguments[0]) : p.createElement.apply(p, arguments)
}
function v(e, t) {
return !!~("" + e).indexOf(t)
}
function b(e, t, i, n) {
var o, a, s, r, l, c = "modernizr",
d = g("div"),
u = ((l = p.body) || ((l = g(T ? "svg" : "body")).fake = !0), l);
if (parseInt(i, 10))
for (; i--;)(s = g("div")).id = n ? n[i] : c + (i + 1), d.appendChild(s);
return (o = g("style")).type = "text/css", o.id = "s" + c, (u.fake ? u : d).appendChild(o), u.appendChild(d), o.styleSheet ? o.styleSheet.cssText = e : o.appendChild(p.createTextNode(e)), d.id = c, u.fake && (u.style.background = "", u.style.overflow = "hidden", r = x.style.overflow, x.style.overflow = "hidden", x.appendChild(u)), a = t(d, e), u.fake ? (u.parentNode.removeChild(u), x.style.overflow = r, x.offsetHeight) : d.parentNode.removeChild(d), !!a
}
function y(e) {
return e.replace(/([a-z])-([a-z])/g, function(e, t, i) {
return t + i.toUpperCase()
}).replace(/^-/, "")
}
function r(e, t) {
return function() {
return e.apply(t, arguments)
}
}
function w(e) {
return e.replace(/([A-Z])/g, function(e, t) {
return "-" + t.toLowerCase()
}).replace(/^ms-/, "-ms-")
}
function l(e, t, i, n) {
function o() {
s && (delete Y.style, delete Y.modElem)
}
if (n = !f(n, "undefined") && n, !f(i, "undefined")) {
var a = function(e, t) {
var i = e.length;
if ("CSS" in m && "supports" in m.CSS) {
for (; i--;)
if (m.CSS.supports(w(e[i]), t)) return !0;
return !1
}
if ("CSSSupportsRule" in m) {
for (var n = []; i--;) n.push("(" + w(e[i]) + ":" + t + ")");
return b("@supports (" + (n = n.join(" or ")) + ") { #modernizr { position: absolute; } }", function(e) {
return "absolute" == getComputedStyle(e, null).position
})
}
return h
}(e, i);
if (!f(a, "undefined")) return a
}
for (var s, r, l, c, d, u = ["modernizr", "tspan", "samp"]; !Y.style && u.length;) s = !0, Y.modElem = g(u.shift()), Y.style = Y.modElem.style;
for (l = e.length, r = 0; r < l; r++)
if (c = e[r], d = Y.style[c], v(c, "-") && (c = y(c)), Y.style[c] !== h) {
if (n || f(i, "undefined")) return o(), "pfx" != t || c;
try {
Y.style[c] = i
} catch (e) {}
if (Y.style[c] != d) return o(), "pfx" != t || c
}
return o(), !1
}
function n(e, t, i, n, o) {
var a = e.charAt(0).toUpperCase() + e.slice(1),
s = (e + " " + F.join(a + " ") + a).split(" ");
return f(t, "string") || f(t, "undefined") ? l(s, t, n, o) : function(e, t, i) {
var n;
for (var o in e)
if (e[o] in t) return !1 === i ? e[o] : f(n = t[e[o]], "function") ? r(n, i || t) : n;
return !1
}(s = (e + " " + E.join(a + " ") + a).split(" "), t, i)
}
function o(e, t, i) {
return n(e, h, h, t, i)
}
var c = [],
d = [],
e = {
_version: "3.3.1",
_config: {
classPrefix: "",
enableClasses: !0,
enableJSClass: !0,
usePrefixes: !0
},
_q: [],
on: function(e, t) {
var i = this;
setTimeout(function() {
t(i[e])
}, 0)
},
addTest: function(e, t, i) {
d.push({
name: e,
fn: t,
options: i
})
},
addAsyncTest: function(e) {
d.push({
name: null,
fn: e
})
}
},
u = function() {};
u.prototype = e, (u = new u).addTest("applicationcache", "applicationCache" in m), u.addTest("geolocation", "geolocation" in navigator), u.addTest("history", function() {
var e = navigator.userAgent;
return (-1 === e.indexOf("Android 2.") && -1 === e.indexOf("Android 4.0") || -1 === e.indexOf("Mobile Safari") || -1 !== e.indexOf("Chrome") || -1 !== e.indexOf("Windows Phone")) && (m.history && "pushState" in m.history)
}), u.addTest("postmessage", "postMessage" in m), u.addTest("svg", !!p.createElementNS && !!p.createElementNS("http://www.w3.org/2000/svg", "svg").createSVGRect);
var t = !1;
try {
t = "WebSocket" in m && 2 === m.WebSocket.CLOSING
} catch (e) {}
u.addTest("websockets", t), u.addTest("localstorage", function() {
var e = "modernizr";
try {
return localStorage.setItem(e, e), localStorage.removeItem(e), !0
} catch (e) {
return !1
}
}), u.addTest("sessionstorage", function() {
var e = "modernizr";
try {
return sessionStorage.setItem(e, e), sessionStorage.removeItem(e), !0
} catch (e) {
return !1
}
}), u.addTest("websqldatabase", "openDatabase" in m), u.addTest("webworkers", "Worker" in m);
var k = e._config.usePrefixes ? " -webkit- -moz- -o- -ms- ".split(" ") : ["", ""];
e._prefixes = k;
var C, i, x = p.documentElement,
T = "svg" === x.nodeName.toLowerCase(),
S = "Moz O ms Webkit",
E = e._config.usePrefixes ? S.toLowerCase().split(" ") : [];
e._domPrefixes = E, C = f(i = {}.hasOwnProperty, "undefined") || f(i.call, "undefined") ? function(e, t) {
return t in e && f(e.constructor.prototype[t], "undefined")
} : function(e, t) {
return i.call(e, t)
}, e._l = {}, e.on = function(e, t) {
this._l[e] || (this._l[e] = []), this._l[e].push(t), u.hasOwnProperty(e) && setTimeout(function() {
u._trigger(e, u[e])
}, 0)
}, e._trigger = function(e, t) {
if (this._l[e]) {
var i = this._l[e];
setTimeout(function() {
var e;
for (e = 0; e < i.length; e++)(0, i[e])(t)
}, 0), delete this._l[e]
}
}, u._q.push(function() {
e.addTest = s
});
var I, $ = (I = !("onblur" in p.documentElement), function(e, t) {
var i;
return !!e && (t && "string" != typeof t || (t = g(t || "div")), !(i = (e = "on" + e) in t) && I && (t.setAttribute || (t = g("div")), t.setAttribute(e, ""), i = "function" == typeof t[e], t[e] !== h && (t[e] = h), t.removeAttribute(e)), i)
});
e.hasEvent = $, u.addTest("hashchange", function() {
return !1 !== $("hashchange", m) && (p.documentMode === h || 7 < p.documentMode)
}), u.addTest("pointerevents", function() {
var e = !1,
t = E.length;
for (e = u.hasEvent("pointerdown"); t-- && !e;) $(E[t] + "pointerdown") && (e = !0);
return e
}), u.addTest("canvas", function() {
var e = g("canvas");
return !(!e.getContext || !e.getContext("2d"))
}), u.addTest("audio", function() {
var e = g("audio"),
t = !1;
try {
(t = !!e.canPlayType) && ((t = new Boolean(t)).ogg = e.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/, ""), t.mp3 = e.canPlayType('audio/mpeg; codecs="mp3"').replace(/^no$/, ""), t.opus = e.canPlayType('audio/ogg; codecs="opus"') || e.canPlayType('audio/webm; codecs="opus"').replace(/^no$/, ""), t.wav = e.canPlayType('audio/wav; codecs="1"').replace(/^no$/, ""), t.m4a = (e.canPlayType("audio/x-m4a;") || e.canPlayType("audio/aac;")).replace(/^no$/, ""))
} catch (e) {}
return t
}), u.addTest("canvastext", function() {
return !1 !== u.canvas && "function" == typeof g("canvas").getContext("2d").fillText
}), u.addTest("video", function() {
var e = g("video"),
t = !1;
try {
(t = !!e.canPlayType) && ((t = new Boolean(t)).ogg = e.canPlayType('video/ogg; codecs="theora"').replace(/^no$/, ""), t.h264 = e.canPlayType('video/mp4; codecs="avc1.42E01E"').replace(/^no$/, ""), t.webm = e.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/, ""), t.vp9 = e.canPlayType('video/webm; codecs="vp9"').replace(/^no$/, ""), t.hls = e.canPlayType('application/x-mpegURL; codecs="avc1.42E01E"').replace(/^no$/, ""))
} catch (e) {}
return t
}), u.addTest("webgl", function() {
var e = g("canvas"),
t = "probablySupportsContext" in e ? "probablySupportsContext" : "supportsContext";
return t in e ? e[t]("webgl") || e[t]("experimental-webgl") : "WebGLRenderingContext" in m
}), u.addTest("cssgradients", function() {
for (var e, t = "background-image:", i = "", n = 0, o = k.length - 1; n < o; n++) e = 0 === n ? "to " : "", i += t + k[n] + "linear-gradient(" + e + "left top, #9f9, white);";
u._config.usePrefixes && (i += t + "-webkit-gradient(linear,left top,right bottom,from(#9f9),to(white));");
var a = g("a").style;
return a.cssText = i, -1 < ("" + a.backgroundImage).indexOf("gradient")
}), u.addTest("multiplebgs", function() {
var e = g("a").style;
return e.cssText = "background:url(https://),url(https://),red url(https://)", /(url\s*\(.*?){3}/.test(e.background)
}), u.addTest("opacity", function() {
var e = g("a").style;
return e.cssText = k.join("opacity:.55;"), /^0.55$/.test(e.opacity)
}), u.addTest("rgba", function() {
var e = g("a").style;
return e.cssText = "background-color:rgba(150,255,150,.5)", -1 < ("" + e.backgroundColor).indexOf("rgba")
}), u.addTest("inlinesvg", function() {
var e = g("div");
return e.innerHTML = "<svg/>", "http://www.w3.org/2000/svg" == ("undefined" != typeof SVGRect && e.firstChild && e.firstChild.namespaceURI)
});
var _ = g("input"),
A = "autocomplete autofocus list placeholder max min multiple pattern required step".split(" "),
M = {};
u.input = function(e) {
for (var t = 0, i = e.length; t < i; t++) M[e[t]] = !!(e[t] in _);
return M.list && (M.list = !(!g("datalist") || !m.HTMLDataListElement)), M
}(A);
var D = "search tel url email datetime date month week time datetime-local number range color".split(" "),
L = {};
u.inputtypes = function(e) {
for (var t, i, n, o = e.length, a = 0; a < o; a++) _.setAttribute("type", t = e[a]), (n = "text" !== _.type && "style" in _) && (_.value = "1)", _.style.cssText = "position:absolute;visibility:hidden;", /^range$/.test(t) && _.style.WebkitAppearance !== h ? (x.appendChild(_), n = (i = p.defaultView).getComputedStyle && "textfield" !== i.getComputedStyle(_, null).WebkitAppearance && 0 !== _.offsetHeight, x.removeChild(_)) : /^(search|tel)$/.test(t) || (n = /^(url|email)$/.test(t) ? _.checkValidity && !1 === _.checkValidity() : "1)" != _.value)), L[e[a]] = !!n;
return L
}(D), u.addTest("hsla", function() {
var e = g("a").style;
return e.cssText = "background-color:hsla(120,40%,100%,.5)", v(e.backgroundColor, "rgba") || v(e.backgroundColor, "hsla")
});
var j = "CSS" in m && "supports" in m.CSS,
B = "supportsCSS" in m;
u.addTest("supports", j || B);
var O = {}.toString;
u.addTest("svgclippaths", function() {
return !!p.createElementNS && /SVGClipPath/.test(O.call(p.createElementNS("http://www.w3.org/2000/svg", "clipPath")))
}), u.addTest("smil", function() {
return !!p.createElementNS && /SVGAnimate/.test(O.call(p.createElementNS("http://www.w3.org/2000/svg", "animate")))
});
var P, N = (P = m.matchMedia || m.msMatchMedia) ? function(e) {
var t = P(e);
return t && t.matches || !1
} : function(e) {
var t = !1;
return b("@media " + e + " { #modernizr { position: absolute; } }", function(e) {
t = "absolute" == (m.getComputedStyle ? m.getComputedStyle(e, null) : e.currentStyle).position
}), t
};
e.mq = N;
var R, q, H, z, U, W = e.testStyles = b;
u.addTest("touchevents", function() {
var t;
if ("ontouchstart" in m || m.DocumentTouch && p instanceof DocumentTouch) t = !0;
else {
var e = ["@media (", k.join("touch-enabled),("), "heartz", ")", "{#modernizr{top:9px;position:absolute}}"].join("");
W(e, function(e) {
t = 9 === e.offsetTop
})
}
return t
}), (R = navigator.userAgent, q = R.match(/applewebkit\/([0-9]+)/gi) && parseFloat(RegExp.$1), H = R.match(/w(eb)?osbrowser/gi), z = R.match(/windows phone/gi) && R.match(/iemobile\/([0-9])+/gi) && 9 <= parseFloat(RegExp.$1), U = q < 533 && R.match(/android/gi), H || U || z) ? u.addTest("fontface", !1) : W('@font-face {font-family:"font";src:url("https://")}', function(e, t) {
var i = p.getElementById("smodernizr"),
n = i.sheet || i.styleSheet,
o = n ? n.cssRules && n.cssRules[0] ? n.cssRules[0].cssText : n.cssText || "" : "",
a = /src/i.test(o) && 0 === o.indexOf(t.split(" ")[0]);
u.addTest("fontface", a)
}), W('#modernizr{font:0/0 a}#modernizr:after{content:":)";visibility:hidden;font:7px/1 a}', function(e) {
u.addTest("generatedcontent", 7 <= e.offsetHeight)
});
var F = e._config.usePrefixes ? S.split(" ") : [];
e._cssomPrefixes = F;
var V = function(e) {
var t, i = k.length,
n = m.CSSRule;
if (void 0 === n) return h;
if (!e) return !1;
if ((t = (e = e.replace(/^@/, "")).replace(/-/g, "_").toUpperCase() + "_RULE") in n) return "@" + e;
for (var o = 0; o < i; o++) {
var a = k[o];
if (a.toUpperCase() + "_" + t in n) return "@-" + a.toLowerCase() + "-" + e
}
return !1
};
e.atRule = V;
var Q = {
elem: g("modernizr")
};
u._q.push(function() {
delete Q.elem
});
var Y = {
style: Q.elem.style
};
u._q.unshift(function() {
delete Y.style
});
var X = e.testProp = function(e, t, i) {
return l([e], h, t, i)
};
u.addTest("textshadow", X("textShadow", "1px 1px")), e.testAllProps = n, e.testAllProps = o, u.addTest("cssanimations", o("animationName", "a", !0)), u.addTest("backgroundsize", o("backgroundSize", "100%", !0)), u.addTest("borderimage", o("borderImage", "url() 1", !0)), u.addTest("borderradius", o("borderRadius", "0px", !0)), u.addTest("boxshadow", o("boxShadow", "1px 1px", !0)),
function() {
u.addTest("csscolumns", function() {
var e = !1,
t = o("columnCount");
try {
(e = !!t) && (e = new Boolean(e))
} catch (e) {}
return e
});
for (var e, t, i = ["Width", "Span", "Fill", "Gap", "Rule", "RuleColor", "RuleStyle", "RuleWidth", "BreakBefore", "BreakAfter", "BreakInside"], n = 0; n < i.length; n++) e = i[n].toLowerCase(), t = o("column" + i[n]), ("breakbefore" === e || "breakafter" === e || "breakinside" == e) && (t = t || o(i[n])), u.addTest("csscolumns." + e, t)
}(), u.addTest("flexbox", o("flexBasis", "1px", !0)), u.addTest("flexboxlegacy", o("boxDirection", "reverse", !0)), u.addTest("cssreflections", o("boxReflect", "above", !0)), u.addTest("csstransforms", function() {
return -1 === navigator.userAgent.indexOf("Android 2.") && o("transform", "scale(1)", !0)
}), u.addTest("csstransforms3d", function() {
var t = !!o("perspective", "1px", !0),
e = u._config.usePrefixes;
if (t && (!e || "webkitPerspective" in x.style)) {
var i;
u.supports ? i = "@supports (perspective: 1px)" : (i = "@media (transform-3d)", e && (i += ",(-webkit-transform-3d)")), W("#modernizr{width:0;height:0}" + (i += "{#modernizr{width:7px;height:18px;margin:0;padding:0;border:0}}"), function(e) {
t = 7 === e.offsetWidth && 18 === e.offsetHeight
})
}
return t
}), u.addTest("csstransitions", o("transition", "all", !0));
var G, K = e.prefixed = function(e, t, i) {
return 0 === e.indexOf("@") ? V(e) : (-1 != e.indexOf("-") && (e = y(e)), t ? n(e, t, i) : n(e, "pfx"))
};
try {
G = K("indexedDB", m)
} catch (e) {}
u.addTest("indexeddb", !!G), G && u.addTest("indexeddb.deletedatabase", "deleteDatabase" in G),
function() {
var e, t, i, n, o, a;
for (var s in d)
if (d.hasOwnProperty(s)) {
if (e = [], (t = d[s]).name && (e.push(t.name.toLowerCase()), t.options && t.options.aliases && t.options.aliases.length))
for (i = 0; i < t.options.aliases.length; i++) e.push(t.options.aliases[i].toLowerCase());
for (n = f(t.fn, "function") ? t.fn() : t.fn, o = 0; o < e.length; o++) 1 === (a = e[o].split(".")).length ? u[a[0]] = n : (!u[a[0]] || u[a[0]] instanceof Boolean || (u[a[0]] = new Boolean(u[a[0]])), u[a[0]][a[1]] = n), c.push((n ? "" : "no-") + a.join("-"))
}
}(), a(c), delete e.addTest, delete e.addAsyncTest;
for (var J = 0; J < u._q.length; J++) u._q[J]();
m.Modernizr = u
}(window, document),
function(e, t) {
"use strict";
"object" == typeof module && "object" == typeof module.exports ? module.exports = e.document ? t(e, !0) : function(e) {
if (!e.document) throw new Error("jQuery requires a window with a document");
return t(e)
} : t(e)
}("undefined" != typeof window ? window : this, function(x, e) {
"use strict";
var t = [],
T = x.document,
n = Object.getPrototypeOf,
r = t.slice,
f = t.concat,
l = t.push,
o = t.indexOf,
i = {},
a = i.toString,
g = i.hasOwnProperty,
s = g.toString,
c = s.call(Object),
v = {},
b = function(e) {
return "function" == typeof e && "number" != typeof e.nodeType
},
y = function(e) {
return null != e && e === e.window
},
d = {
type: !0,
src: !0,
noModule: !0
};
function w(e, t, i) {
var n, o = (t = t || T).createElement("script");
if (o.text = e, i)
for (n in d) i[n] && (o[n] = i[n]);
t.head.appendChild(o).parentNode.removeChild(o)
}
function k(e) {
return null == e ? e + "" : "object" == typeof e || "function" == typeof e ? i[a.call(e)] || "object" : typeof e
}
var S = function(e, t) {
return new S.fn.init(e, t)
},
u = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;
function m(e) {
var t = !!e && "length" in e && e.length,
i = k(e);
return !b(e) && !y(e) && ("array" === i || 0 === t || "number" == typeof t && 0 < t && t - 1 in e)
}
S.fn = S.prototype = {
jquery: "3.3.1",
constructor: S,
length: 0,
toArray: function() {
return r.call(this)
},
get: function(e) {
return null == e ? r.call(this) : e < 0 ? this[e + this.length] : this[e]
},
pushStack: function(e) {
var t = S.merge(this.constructor(), e);
return t.prevObject = this, t
},
each: function(e) {
return S.each(this, e)
},
map: function(i) {
return this.pushStack(S.map(this, function(e, t) {
return i.call(e, t, e)
}))
},
slice: function() {
return this.pushStack(r.apply(this, arguments))
},
first: function() {
return this.eq(0)
},
last: function() {
return this.eq(-1)
},
eq: function(e) {
var t = this.length,
i = +e + (e < 0 ? t : 0);
return this.pushStack(0 <= i && i < t ? [this[i]] : [])
},
end: function() {
return this.prevObject || this.constructor()
},
push: l,
sort: t.sort,
splice: t.splice
}, S.extend = S.fn.extend = function() {
var e, t, i, n, o, a, s = arguments[0] || {},
r = 1,
l = arguments.length,
c = !1;
for ("boolean" == typeof s && (c = s, s = arguments[r] || {}, r++), "object" == typeof s || b(s) || (s = {}), r === l && (s = this, r--); r < l; r++)
if (null != (e = arguments[r]))
for (t in e) i = s[t], s !== (n = e[t]) && (c && n && (S.isPlainObject(n) || (o = Array.isArray(n))) ? (a = o ? (o = !1, i && Array.isArray(i) ? i : []) : i && S.isPlainObject(i) ? i : {}, s[t] = S.extend(c, a, n)) : void 0 !== n && (s[t] = n));
return s
}, S.extend({
expando: "jQuery" + ("3.3.1" + Math.random()).replace(/\D/g, ""),
isReady: !0,
error: function(e) {
throw new Error(e)
},
noop: function() {},
isPlainObject: function(e) {
var t, i;
return !(!e || "[object Object]" !== a.call(e) || (t = n(e)) && ("function" != typeof(i = g.call(t, "constructor") && t.constructor) || s.call(i) !== c))
},
isEmptyObject: function(e) {
var t;
for (t in e) return !1;
return !0
},
globalEval: function(e) {
w(e)
},
each: function(e, t) {
var i, n = 0;
if (m(e))
for (i = e.length; n < i && !1 !== t.call(e[n], n, e[n]); n++);
else
for (n in e)
if (!1 === t.call(e[n], n, e[n])) break; return e
},
trim: function(e) {
return null == e ? "" : (e + "").replace(u, "")
},
makeArray: function(e, t) {
var i = t || [];
return null != e && (m(Object(e)) ? S.merge(i, "string" == typeof e ? [e] : e) : l.call(i, e)), i
},
inArray: function(e, t, i) {
return null == t ? -1 : o.call(t, e, i)
},
merge: function(e, t) {
for (var i = +t.length, n = 0, o = e.length; n < i; n++) e[o++] = t[n];
return e.length = o, e
},
grep: function(e, t, i) {
for (var n = [], o = 0, a = e.length, s = !i; o < a; o++) !t(e[o], o) !== s && n.push(e[o]);
return n
},
map: function(e, t, i) {
var n, o, a = 0,
s = [];
if (m(e))
for (n = e.length; a < n; a++) null != (o = t(e[a], a, i)) && s.push(o);
else
for (a in e) null != (o = t(e[a], a, i)) && s.push(o);
return f.apply([], s)
},
guid: 1,
support: v
}), "function" == typeof Symbol && (S.fn[Symbol.iterator] = t[Symbol.iterator]), S.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "), function(e, t) {
i["[object " + t + "]"] = t.toLowerCase()
});
var p = function(i) {
var e, p, w, a, o, h, u, f, k, l, c, C, x, s, T, g, r, d, v, S = "sizzle" + 1 * new Date,
b = i.document,
E = 0,
n = 0,
m = se(),
y = se(),
I = se(),
$ = function(e, t) {
return e === t && (c = !0), 0
},
_ = {}.hasOwnProperty,
t = [],
A = t.pop,
M = t.push,
D = t.push,
L = t.slice,
j = function(e, t) {
for (var i = 0, n = e.length; i < n; i++)
if (e[i] === t) return i;
return -1
},
B = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
O = "[\\x20\\t\\r\\n\\f]",
P = "(?:\\\\.|[\\w-]|[^\0-\\xa0])+",
N = "\\[" + O + "*(" + P + ")(?:" + O + "*([*^$|!~]?=)" + O + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + P + "))|)" + O + "*\\]",
R = ":(" + P + ")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|" + N + ")*)|.*)\\)|)",
q = new RegExp(O + "+", "g"),
H = new RegExp("^" + O + "+|((?:^|[^\\\\])(?:\\\\.)*)" + O + "+$", "g"),
z = new RegExp("^" + O + "*," + O + "*"),
U = new RegExp("^" + O + "*([>+~]|" + O + ")" + O + "*"),
W = new RegExp("=" + O + "*([^\\]'\"]*?)" + O + "*\\]", "g"),
F = new RegExp(R),
V = new RegExp("^" + P + "$"),
Q = {
ID: new RegExp("^#(" + P + ")"),
CLASS: new RegExp("^\\.(" + P + ")"),
TAG: new RegExp("^(" + P + "|[*])"),
ATTR: new RegExp("^" + N),
PSEUDO: new RegExp("^" + R),
CHILD: new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + O + "*(even|odd|(([+-]|)(\\d*)n|)" + O + "*(?:([+-]|)" + O + "*(\\d+)|))" + O + "*\\)|)", "i"),
bool: new RegExp("^(?:" + B + ")$", "i"),
needsContext: new RegExp("^" + O + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + O + "*((?:-\\d)?\\d*)" + O + "*\\)|)(?=[^-]|$)", "i")
},
Y = /^(?:input|select|textarea|button)$/i,
X = /^h\d$/i,
G = /^[^{]+\{\s*\[native \w/,
K = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
J = /[+~]/,
Z = new RegExp("\\\\([\\da-f]{1,6}" + O + "?|(" + O + ")|.)", "ig"),
ee = function(e, t, i) {
var n = "0x" + t - 65536;
return n != n || i ? t : n < 0 ? String.fromCharCode(n + 65536) : String.fromCharCode(n >> 10 | 55296, 1023 & n | 56320)
},
te = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,
ie = function(e, t) {
return t ? "\0" === e ? "�" : e.slice(0, -1) + "\\" + e.charCodeAt(e.length - 1).toString(16) + " " : "\\" + e
},
ne = function() {
C()
},
oe = be(function(e) {
return !0 === e.disabled && ("form" in e || "label" in e)
}, {
dir: "parentNode",
next: "legend"
});
try {
D.apply(t = L.call(b.childNodes), b.childNodes), t[b.childNodes.length].nodeType
} catch (i) {
D = {
apply: t.length ? function(e, t) {
M.apply(e, L.call(t))
} : function(e, t) {
for (var i = e.length, n = 0; e[i++] = t[n++];);
e.length = i - 1
}
}
}
function ae(e, t, i, n) {
var o, a, s, r, l, c, d, u = t && t.ownerDocument,
m = t ? t.nodeType : 9;
if (i = i || [], "string" != typeof e || !e || 1 !== m && 9 !== m && 11 !== m) return i;
if (!n && ((t ? t.ownerDocument || t : b) !== x && C(t), t = t || x, T)) {
if (11 !== m && (l = K.exec(e)))
if (o = l[1]) {
if (9 === m) {
if (!(s = t.getElementById(o))) return i;
if (s.id === o) return i.push(s), i
} else if (u && (s = u.getElementById(o)) && v(t, s) && s.id === o) return i.push(s), i
} else {
if (l[2]) return D.apply(i, t.getElementsByTagName(e)), i;
if ((o = l[3]) && p.getElementsByClassName && t.getElementsByClassName) return D.apply(i, t.getElementsByClassName(o)), i
}
if (p.qsa && !I[e + " "] && (!g || !g.test(e))) {
if (1 !== m) u = t, d = e;
else if ("object" !== t.nodeName.toLowerCase()) {
for ((r = t.getAttribute("id")) ? r = r.replace(te, ie) : t.setAttribute("id", r = S), a = (c = h(e)).length; a--;) c[a] = "#" + r + " " + ve(c[a]);
d = c.join(","), u = J.test(e) && fe(t.parentNode) || t
}
if (d) try {
return D.apply(i, u.querySelectorAll(d)), i
} catch (e) {} finally {
r === S && t.removeAttribute("id")
}
}
}
return f(e.replace(H, "$1"), t, i, n)
}
function se() {
var n = [];
return function e(t, i) {
return n.push(t + " ") > w.cacheLength && delete e[n.shift()], e[t + " "] = i
}
}
function re(e) {
return e[S] = !0, e
}
function le(e) {
var t = x.createElement("fieldset");
try {
return !!e(t)
} catch (e) {
return !1
} finally {
t.parentNode && t.parentNode.removeChild(t), t = null
}
}
function ce(e, t) {
for (var i = e.split("|"), n = i.length; n--;) w.attrHandle[i[n]] = t
}
function de(e, t) {
var i = t && e,
n = i && 1 === e.nodeType && 1 === t.nodeType && e.sourceIndex - t.sourceIndex;
if (n) return n;
if (i)
for (; i = i.nextSibling;)
if (i === t) return -1;
return e ? 1 : -1
}
function ue(t) {
return function(e) {
return "input" === e.nodeName.toLowerCase() && e.type === t
}
}
function me(i) {
return function(e) {
var t = e.nodeName.toLowerCase();
return ("input" === t || "button" === t) && e.type === i
}
}
function pe(t) {
return function(e) {
return "form" in e ? e.parentNode && !1 === e.disabled ? "label" in e ? "label" in e.parentNode ? e.parentNode.disabled === t : e.disabled === t : e.isDisabled === t || e.isDisabled !== !t && oe(e) === t : e.disabled === t : "label" in e && e.disabled === t
}
}
function he(s) {
return re(function(a) {
return a = +a, re(function(e, t) {
for (var i, n = s([], e.length, a), o = n.length; o--;) e[i = n[o]] && (e[i] = !(t[i] = e[i]))
})
})
}
function fe(e) {
return e && void 0 !== e.getElementsByTagName && e
}
for (e in p = ae.support = {}, o = ae.isXML = function(e) {
var t = e && (e.ownerDocument || e).documentElement;
return !!t && "HTML" !== t.nodeName
}, C = ae.setDocument = function(e) {
var t, i, n = e ? e.ownerDocument || e : b;
return n !== x && 9 === n.nodeType && n.documentElement && (s = (x = n).documentElement, T = !o(x), b !== x && (i = x.defaultView) && i.top !== i && (i.addEventListener ? i.addEventListener("unload", ne, !1) : i.attachEvent && i.attachEvent("onunload", ne)), p.attributes = le(function(e) {
return e.className = "i", !e.getAttribute("className")
}), p.getElementsByTagName = le(function(e) {
return e.appendChild(x.createComment("")), !e.getElementsByTagName("*").length
}), p.getElementsByClassName = G.test(x.getElementsByClassName), p.getById = le(function(e) {
return s.appendChild(e).id = S, !x.getElementsByName || !x.getElementsByName(S).length
}), p.getById ? (w.filter.ID = function(e) {
var t = e.replace(Z, ee);
return function(e) {
return e.getAttribute("id") === t
}
}, w.find.ID = function(e, t) {
if (void 0 !== t.getElementById && T) {
var i = t.getElementById(e);
return i ? [i] : []
}
}) : (w.filter.ID = function(e) {
var i = e.replace(Z, ee);
return function(e) {
var t = void 0 !== e.getAttributeNode && e.getAttributeNode("id");
return t && t.value === i
}
}, w.find.ID = function(e, t) {
if (void 0 !== t.getElementById && T) {
var i, n, o, a = t.getElementById(e);
if (a) {
if ((i = a.getAttributeNode("id")) && i.value === e) return [a];
for (o = t.getElementsByName(e), n = 0; a = o[n++];)
if ((i = a.getAttributeNode("id")) && i.value === e) return [a]
}
return []
}
}), w.find.TAG = p.getElementsByTagName ? function(e, t) {
return void 0 !== t.getElementsByTagName ? t.getElementsByTagName(e) : p.qsa ? t.querySelectorAll(e) : void 0
} : function(e, t) {
var i, n = [],
o = 0,
a = t.getElementsByTagName(e);
if ("*" !== e) return a;
for (; i = a[o++];) 1 === i.nodeType && n.push(i);
return n
}, w.find.CLASS = p.getElementsByClassName && function(e, t) {
if (void 0 !== t.getElementsByClassName && T) return t.getElementsByClassName(e)
}, r = [], g = [], (p.qsa = G.test(x.querySelectorAll)) && (le(function(e) {
s.appendChild(e).innerHTML = "<a id='" + S + "'></a><select id='" + S + "-\r\\' msallowcapture=''><option selected=''></option></select>", e.querySelectorAll("[msallowcapture^='']").length && g.push("[*^$]=" + O + "*(?:''|\"\")"), e.querySelectorAll("[selected]").length || g.push("\\[" + O + "*(?:value|" + B + ")"), e.querySelectorAll("[id~=" + S + "-]").length || g.push("~="), e.querySelectorAll(":checked").length || g.push(":checked"), e.querySelectorAll("a#" + S + "+*").length || g.push(".#.+[+~]")
}), le(function(e) {
e.innerHTML = "<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";
var t = x.createElement("input");
t.setAttribute("type", "hidden"), e.appendChild(t).setAttribute("name", "D"), e.querySelectorAll("[name=d]").length && g.push("name" + O + "*[*^$|!~]?="), 2 !== e.querySelectorAll(":enabled").length && g.push(":enabled", ":disabled"), s.appendChild(e).disabled = !0, 2 !== e.querySelectorAll(":disabled").length && g.push(":enabled", ":disabled"), e.querySelectorAll("*,:x"), g.push(",.*:")
})), (p.matchesSelector = G.test(d = s.matches || s.webkitMatchesSelector || s.mozMatchesSelector || s.oMatchesSelector || s.msMatchesSelector)) && le(function(e) {
p.disconnectedMatch = d.call(e, "*"), d.call(e, "[s!='']:x"), r.push("!=", R)
}), g = g.length && new RegExp(g.join("|")), r = r.length && new RegExp(r.join("|")), t = G.test(s.compareDocumentPosition), v = t || G.test(s.contains) ? function(e, t) {
var i = 9 === e.nodeType ? e.documentElement : e,
n = t && t.parentNode;
return e === n || !(!n || 1 !== n.nodeType || !(i.contains ? i.contains(n) : e.compareDocumentPosition && 16 & e.compareDocumentPosition(n)))
} : function(e, t) {
if (t)
for (; t = t.parentNode;)
if (t === e) return !0;
return !1
}, $ = t ? function(e, t) {
if (e === t) return c = !0, 0;
var i = !e.compareDocumentPosition - !t.compareDocumentPosition;
return i || (1 & (i = (e.ownerDocument || e) === (t.ownerDocument || t) ? e.compareDocumentPosition(t) : 1) || !p.sortDetached && t.compareDocumentPosition(e) === i ? e === x || e.ownerDocument === b && v(b, e) ? -1 : t === x || t.ownerDocument === b && v(b, t) ? 1 : l ? j(l, e) - j(l, t) : 0 : 4 & i ? -1 : 1)
} : function(e, t) {
if (e === t) return c = !0, 0;
var i, n = 0,
o = e.parentNode,
a = t.parentNode,
s = [e],
r = [t];
if (!o || !a) return e === x ? -1 : t === x ? 1 : o ? -1 : a ? 1 : l ? j(l, e) - j(l, t) : 0;
if (o === a) return de(e, t);
for (i = e; i = i.parentNode;) s.unshift(i);
for (i = t; i = i.parentNode;) r.unshift(i);
for (; s[n] === r[n];) n++;
return n ? de(s[n], r[n]) : s[n] === b ? -1 : r[n] === b ? 1 : 0
}), x
}, ae.matches = function(e, t) {
return ae(e, null, null, t)
}, ae.matchesSelector = function(e, t) {
if ((e.ownerDocument || e) !== x && C(e), t = t.replace(W, "='$1']"), p.matchesSelector && T && !I[t + " "] && (!r || !r.test(t)) && (!g || !g.test(t))) try {
var i = d.call(e, t);
if (i || p.disconnectedMatch || e.document && 11 !== e.document.nodeType) return i
} catch (e) {}
return 0 < ae(t, x, null, [e]).length
}, ae.contains = function(e, t) {
return (e.ownerDocument || e) !== x && C(e), v(e, t)
}, ae.attr = function(e, t) {
(e.ownerDocument || e) !== x && C(e);
var i = w.attrHandle[t.toLowerCase()],
n = i && _.call(w.attrHandle, t.toLowerCase()) ? i(e, t, !T) : void 0;
return void 0 !== n ? n : p.attributes || !T ? e.getAttribute(t) : (n = e.getAttributeNode(t)) && n.specified ? n.value : null
}, ae.escape = function(e) {
return (e + "").replace(te, ie)
}, ae.error = function(e) {
throw new Error("Syntax error, unrecognized expression: " + e)
}, ae.uniqueSort = function(e) {
var t, i = [],
n = 0,
o = 0;
if (c = !p.detectDuplicates, l = !p.sortStable && e.slice(0), e.sort($), c) {
for (; t = e[o++];) t === e[o] && (n = i.push(o));
for (; n--;) e.splice(i[n], 1)
}
return l = null, e
}, a = ae.getText = function(e) {
var t, i = "",
n = 0,
o = e.nodeType;
if (o) {
if (1 === o || 9 === o || 11 === o) {
if ("string" == typeof e.textContent) return e.textContent;
for (e = e.firstChild; e; e = e.nextSibling) i += a(e)
} else if (3 === o || 4 === o) return e.nodeValue
} else
for (; t = e[n++];) i += a(t);
return i
}, (w = ae.selectors = {
cacheLength: 50,
createPseudo: re,
match: Q,
attrHandle: {},
find: {},
relative: {
">": {
dir: "parentNode",
first: !0
},
" ": {
dir: "parentNode"
},
"+": {
dir: "previousSibling",
first: !0
},
"~": {
dir: "previousSibling"
}
},
preFilter: {
ATTR: function(e) {
return e[1] = e[1].replace(Z, ee), e[3] = (e[3] || e[4] || e[5] || "").replace(Z, ee), "~=" === e[2] && (e[3] = " " + e[3] + " "), e.slice(0, 4)
},
CHILD: function(e) {
return e[1] = e[1].toLowerCase(), "nth" === e[1].slice(0, 3) ? (e[3] || ae.error(e[0]), e[4] = +(e[4] ? e[5] + (e[6] || 1) : 2 * ("even" === e[3] || "odd" === e[3])), e[5] = +(e[7] + e[8] || "odd" === e[3])) : e[3] && ae.error(e[0]), e
},
PSEUDO: function(e) {
var t, i = !e[6] && e[2];
return Q.CHILD.test(e[0]) ? null : (e[3] ? e[2] = e[4] || e[5] || "" : i && F.test(i) && (t = h(i, !0)) && (t = i.indexOf(")", i.length - t) - i.length) && (e[0] = e[0].slice(0, t), e[2] = i.slice(0, t)), e.slice(0, 3))
}
},
filter: {
TAG: function(e) {
var t = e.replace(Z, ee).toLowerCase();
return "*" === e ? function() {
return !0
} : function(e) {
return e.nodeName && e.nodeName.toLowerCase() === t
}
},
CLASS: function(e) {
var t = m[e + " "];
return t || (t = new RegExp("(^|" + O + ")" + e + "(" + O + "|$)")) && m(e, function(e) {
return t.test("string" == typeof e.className && e.className || void 0 !== e.getAttribute && e.getAttribute("class") || "")
})
},
ATTR: function(i, n, o) {
return function(e) {
var t = ae.attr(e, i);
return null == t ? "!=" === n : !n || (t += "", "=" === n ? t === o : "!=" === n ? t !== o : "^=" === n ? o && 0 === t.indexOf(o) : "*=" === n ? o && -1 < t.indexOf(o) : "$=" === n ? o && t.slice(-o.length) === o : "~=" === n ? -1 < (" " + t.replace(q, " ") + " ").indexOf(o) : "|=" === n && (t === o || t.slice(0, o.length + 1) === o + "-"))
}
},
CHILD: function(h, e, t, f, g) {
var v = "nth" !== h.slice(0, 3),
b = "last" !== h.slice(-4),
y = "of-type" === e;
return 1 === f && 0 === g ? function(e) {
return !!e.parentNode
} : function(e, t, i) {
var n, o, a, s, r, l, c = v !== b ? "nextSibling" : "previousSibling",
d = e.parentNode,
u = y && e.nodeName.toLowerCase(),
m = !i && !y,
p = !1;
if (d) {
if (v) {
for (; c;) {
for (s = e; s = s[c];)
if (y ? s.nodeName.toLowerCase() === u : 1 === s.nodeType) return !1;
l = c = "only" === h && !l && "nextSibling"
}
return !0
}
if (l = [b ? d.firstChild : d.lastChild], b && m) {
for (p = (r = (n = (o = (a = (s = d)[S] || (s[S] = {}))[s.uniqueID] || (a[s.uniqueID] = {}))[h] || [])[0] === E && n[1]) && n[2], s = r && d.childNodes[r]; s = ++r && s && s[c] || (p = r = 0) || l.pop();)
if (1 === s.nodeType && ++p && s === e) {
o[h] = [E, r, p];
break
}
} else if (m && (p = r = (n = (o = (a = (s = e)[S] || (s[S] = {}))[s.uniqueID] || (a[s.uniqueID] = {}))[h] || [])[0] === E && n[1]), !1 === p)
for (;
(s = ++r && s && s[c] || (p = r = 0) || l.pop()) && ((y ? s.nodeName.toLowerCase() !== u : 1 !== s.nodeType) || !++p || (m && ((o = (a = s[S] || (s[S] = {}))[s.uniqueID] || (a[s.uniqueID] = {}))[h] = [E, p]), s !== e)););
return (p -= g) === f || p % f == 0 && 0 <= p / f
}
}
},
PSEUDO: function(e, a) {
var t, s = w.pseudos[e] || w.setFilters[e.toLowerCase()] || ae.error("unsupported pseudo: " + e);
return s[S] ? s(a) : 1 < s.length ? (t = [e, e, "", a], w.setFilters.hasOwnProperty(e.toLowerCase()) ? re(function(e, t) {
for (var i, n = s(e, a), o = n.length; o--;) e[i = j(e, n[o])] = !(t[i] = n[o])
}) : function(e) {
return s(e, 0, t)
}) : s
}
},
pseudos: {
not: re(function(e) {
var n = [],
o = [],
r = u(e.replace(H, "$1"));
return r[S] ? re(function(e, t, i, n) {
for (var o, a = r(e, null, n, []), s = e.length; s--;)(o = a[s]) && (e[s] = !(t[s] = o))
}) : function(e, t, i) {
return n[0] = e, r(n, null, i, o), n[0] = null, !o.pop()
}
}),
has: re(function(t) {
return function(e) {
return 0 < ae(t, e).length
}
}),
contains: re(function(t) {
return t = t.replace(Z, ee),
function(e) {
return -1 < (e.textContent || e.innerText || a(e)).indexOf(t)
}
}),
lang: re(function(i) {
return V.test(i || "") || ae.error("unsupported lang: " + i), i = i.replace(Z, ee).toLowerCase(),
function(e) {
var t;
do {
if (t = T ? e.lang : e.getAttribute("xml:lang") || e.getAttribute("lang")) return (t = t.toLowerCase()) === i || 0 === t.indexOf(i + "-")
} while ((e = e.parentNode) && 1 === e.nodeType);
return !1
}
}),
target: function(e) {
var t = i.location && i.location.hash;
return t && t.slice(1) === e.id
},
root: function(e) {
return e === s
},
focus: function(e) {
return e === x.activeElement && (!x.hasFocus || x.hasFocus()) && !!(e.type || e.href || ~e.tabIndex)
},
enabled: pe(!1),
disabled: pe(!0),
checked: function(e) {
var t = e.nodeName.toLowerCase();
return "input" === t && !!e.checked || "option" === t && !!e.selected
},
selected: function(e) {
return e.parentNode && e.parentNode.selectedIndex, !0 === e.selected
},
empty: function(e) {
for (e = e.firstChild; e; e = e.nextSibling)
if (e.nodeType < 6) return !1;
return !0
},
parent: function(e) {
return !w.pseudos.empty(e)
},
header: function(e) {
return X.test(e.nodeName)
},
input: function(e) {
return Y.test(e.nodeName)
},
button: function(e) {
var t = e.nodeName.toLowerCase();
return "input" === t && "button" === e.type || "button" === t
},
text: function(e) {
var t;
return "input" === e.nodeName.toLowerCase() && "text" === e.type && (null == (t = e.getAttribute("type")) || "text" === t.toLowerCase())
},
first: he(function() {
return [0]
}),
last: he(function(e, t) {
return [t - 1]
}),
eq: he(function(e, t, i) {
return [i < 0 ? i + t : i]
}),
even: he(function(e, t) {
for (var i = 0; i < t; i += 2) e.push(i);
return e
}),
odd: he(function(e, t) {
for (var i = 1; i < t; i += 2) e.push(i);
return e
}),
lt: he(function(e, t, i) {
for (var n = i < 0 ? i + t : i; 0 <= --n;) e.push(n);
return e
}),
gt: he(function(e, t, i) {
for (var n = i < 0 ? i + t : i; ++n < t;) e.push(n);
return e
})
}
}).pseudos.nth = w.pseudos.eq, {
radio: !0,
checkbox: !0,
file: !0,
password: !0,
image: !0
}) w.pseudos[e] = ue(e);
for (e in {
submit: !0,
reset: !0
}) w.pseudos[e] = me(e);
function ge() {}
function ve(e) {
for (var t = 0, i = e.length, n = ""; t < i; t++) n += e[t].value;
return n
}
function be(r, e, t) {
var l = e.dir,
c = e.next,
d = c || l,
u = t && "parentNode" === d,
m = n++;
return e.first ? function(e, t, i) {
for (; e = e[l];)
if (1 === e.nodeType || u) return r(e, t, i);
return !1
} : function(e, t, i) {
var n, o, a, s = [E, m];
if (i) {
for (; e = e[l];)
if ((1 === e.nodeType || u) && r(e, t, i)) return !0
} else
for (; e = e[l];)
if (1 === e.nodeType || u)
if (o = (a = e[S] || (e[S] = {}))[e.uniqueID] || (a[e.uniqueID] = {}), c && c === e.nodeName.toLowerCase()) e = e[l] || e;
else {
if ((n = o[d]) && n[0] === E && n[1] === m) return s[2] = n[2];
if ((o[d] = s)[2] = r(e, t, i)) return !0
} return !1
}
}
function ye(o) {
return 1 < o.length ? function(e, t, i) {
for (var n = o.length; n--;)
if (!o[n](e, t, i)) return !1;
return !0
} : o[0]
}
function we(e, t, i, n, o) {
for (var a, s = [], r = 0, l = e.length, c = null != t; r < l; r++)(a = e[r]) && (i && !i(a, n, o) || (s.push(a), c && t.push(r)));
return s
}
function ke(p, h, f, g, v, e) {
return g && !g[S] && (g = ke(g)), v && !v[S] && (v = ke(v, e)), re(function(e, t, i, n) {
var o, a, s, r = [],
l = [],
c = t.length,
d = e || function(e, t, i) {
for (var n = 0, o = t.length; n < o; n++) ae(e, t[n], i);
return i
}(h || "*", i.nodeType ? [i] : i, []),
u = !p || !e && h ? d : we(d, r, p, i, n),
m = f ? v || (e ? p : c || g) ? [] : t : u;
if (f && f(u, m, i, n), g)
for (o = we(m, l), g(o, [], i, n), a = o.length; a--;)(s = o[a]) && (m[l[a]] = !(u[l[a]] = s));
if (e) {
if (v || p) {
if (v) {
for (o = [], a = m.length; a--;)(s = m[a]) && o.push(u[a] = s);
v(null, m = [], o, n)
}
for (a = m.length; a--;)(s = m[a]) && -1 < (o = v ? j(e, s) : r[a]) && (e[o] = !(t[o] = s))
}
} else m = we(m === t ? m.splice(c, m.length) : m), v ? v(null, t, m, n) : D.apply(t, m)
})
}
function Ce(e) {
for (var o, t, i, n = e.length, a = w.relative[e[0].type], s = a || w.relative[" "], r = a ? 1 : 0, l = be(function(e) {
return e === o
}, s, !0), c = be(function(e) {
return -1 < j(o, e)
}, s, !0), d = [function(e, t, i) {
var n = !a && (i || t !== k) || ((o = t).nodeType ? l(e, t, i) : c(e, t, i));
return o = null, n
}]; r < n; r++)
if (t = w.relative[e[r].type]) d = [be(ye(d), t)];
else {
if ((t = w.filter[e[r].type].apply(null, e[r].matches))[S]) {
for (i = ++r; i < n && !w.relative[e[i].type]; i++);
return ke(1 < r && ye(d), 1 < r && ve(e.slice(0, r - 1).concat({
value: " " === e[r - 2].type ? "*" : ""
})).replace(H, "$1"), t, r < i && Ce(e.slice(r, i)), i < n && Ce(e = e.slice(i)), i < n && ve(e))
}
d.push(t)
}
return ye(d)
}
return ge.prototype = w.filters = w.pseudos, w.setFilters = new ge, h = ae.tokenize = function(e, t) {
var i, n, o, a, s, r, l, c = y[e + " "];
if (c) return t ? 0 : c.slice(0);
for (s = e, r = [], l = w.preFilter; s;) {
for (a in i && !(n = z.exec(s)) || (n && (s = s.slice(n[0].length) || s), r.push(o = [])), i = !1, (n = U.exec(s)) && (i = n.shift(), o.push({
value: i,
type: n[0].replace(H, " ")
}), s = s.slice(i.length)), w.filter) !(n = Q[a].exec(s)) || l[a] && !(n = l[a](n)) || (i = n.shift(), o.push({
value: i,
type: a,
matches: n
}), s = s.slice(i.length));
if (!i) break
}
return t ? s.length : s ? ae.error(e) : y(e, r).slice(0)
}, u = ae.compile = function(e, t) {
var i, g, v, b, y, n, o = [],
a = [],
s = I[e + " "];
if (!s) {
for (t || (t = h(e)), i = t.length; i--;)(s = Ce(t[i]))[S] ? o.push(s) : a.push(s);
(s = I(e, (g = a, v = o, b = 0 < v.length, y = 0 < g.length, n = function(e, t, i, n, o) {
var a, s, r, l = 0,
c = "0",
d = e && [],
u = [],
m = k,
p = e || y && w.find.TAG("*", o),
h = E += null == m ? 1 : Math.random() || .1,
f = p.length;
for (o && (k = t === x || t || o); c !== f && null != (a = p[c]); c++) {
if (y && a) {
for (s = 0, t || a.ownerDocument === x || (C(a), i = !T); r = g[s++];)
if (r(a, t || x, i)) {
n.push(a);
break
}
o && (E = h)
}
b && ((a = !r && a) && l--, e && d.push(a))
}
if (l += c, b && c !== l) {
for (s = 0; r = v[s++];) r(d, u, t, i);
if (e) {
if (0 < l)
for (; c--;) d[c] || u[c] || (u[c] = A.call(n));
u = we(u)
}
D.apply(n, u), o && !e && 0 < u.length && 1 < l + v.length && ae.uniqueSort(n)
}
return o && (E = h, k = m), d
}, b ? re(n) : n))).selector = e
}
return s
}, f = ae.select = function(e, t, i, n) {
var o, a, s, r, l, c = "function" == typeof e && e,
d = !n && h(e = c.selector || e);
if (i = i || [], 1 === d.length) {
if (2 < (a = d[0] = d[0].slice(0)).length && "ID" === (s = a[0]).type && 9 === t.nodeType && T && w.relative[a[1].type]) {
if (!(t = (w.find.ID(s.matches[0].replace(Z, ee), t) || [])[0])) return i;
c && (t = t.parentNode), e = e.slice(a.shift().value.length)
}
for (o = Q.needsContext.test(e) ? 0 : a.length; o-- && (s = a[o], !w.relative[r = s.type]);)
if ((l = w.find[r]) && (n = l(s.matches[0].replace(Z, ee), J.test(a[0].type) && fe(t.parentNode) || t))) {
if (a.splice(o, 1), !(e = n.length && ve(a))) return D.apply(i, n), i;
break
}
}
return (c || u(e, d))(n, t, !T, i, !t || J.test(e) && fe(t.parentNode) || t), i
}, p.sortStable = S.split("").sort($).join("") === S, p.detectDuplicates = !!c, C(), p.sortDetached = le(function(e) {
return 1 & e.compareDocumentPosition(x.createElement("fieldset"))
}), le(function(e) {
return e.innerHTML = "<a href='#'></a>", "#" === e.firstChild.getAttribute("href")
}) || ce("type|href|height|width", function(e, t, i) {
if (!i) return e.getAttribute(t, "type" === t.toLowerCase() ? 1 : 2)
}), p.attributes && le(function(e) {
return e.innerHTML = "<input/>", e.firstChild.setAttribute("value", ""), "" === e.firstChild.getAttribute("value")
}) || ce("value", function(e, t, i) {
if (!i && "input" === e.nodeName.toLowerCase()) return e.defaultValue
}), le(function(e) {
return null == e.getAttribute("disabled")
}) || ce(B, function(e, t, i) {
var n;
if (!i) return !0 === e[t] ? t.toLowerCase() : (n = e.getAttributeNode(t)) && n.specified ? n.value : null
}), ae
}(x);
S.find = p, S.expr = p.selectors, S.expr[":"] = S.expr.pseudos, S.uniqueSort = S.unique = p.uniqueSort, S.text = p.getText, S.isXMLDoc = p.isXML, S.contains = p.contains, S.escapeSelector = p.escape;
var h = function(e, t, i) {
for (var n = [], o = void 0 !== i;
(e = e[t]) && 9 !== e.nodeType;)
if (1 === e.nodeType) {
if (o && S(e).is(i)) break;
n.push(e)
}
return n
},
C = function(e, t) {
for (var i = []; e; e = e.nextSibling) 1 === e.nodeType && e !== t && i.push(e);
return i
},
E = S.expr.match.needsContext;
function I(e, t) {
return e.nodeName && e.nodeName.toLowerCase() === t.toLowerCase()
}
var $ = /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;
function _(e, i, n) {
return b(i) ? S.grep(e, function(e, t) {
return !!i.call(e, t, e) !== n
}) : i.nodeType ? S.grep(e, function(e) {
return e === i !== n
}) : "string" != typeof i ? S.grep(e, function(e) {
return -1 < o.call(i, e) !== n
}) : S.filter(i, e, n)
}
S.filter = function(e, t, i) {
var n = t[0];
return i && (e = ":not(" + e + ")"), 1 === t.length && 1 === n.nodeType ? S.find.matchesSelector(n, e) ? [n] : [] : S.find.matches(e, S.grep(t, function(e) {
return 1 === e.nodeType
}))
}, S.fn.extend({
find: function(e) {
var t, i, n = this.length,
o = this;
if ("string" != typeof e) return this.pushStack(S(e).filter(function() {
for (t = 0; t < n; t++)
if (S.contains(o[t], this)) return !0
}));
for (i = this.pushStack([]), t = 0; t < n; t++) S.find(e, o[t], i);
return 1 < n ? S.uniqueSort(i) : i
},
filter: function(e) {
return this.pushStack(_(this, e || [], !1))
},
not: function(e) {
return this.pushStack(_(this, e || [], !0))
},
is: function(e) {
return !!_(this, "string" == typeof e && E.test(e) ? S(e) : e || [], !1).length
}
});
var A, M = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;
(S.fn.init = function(e, t, i) {
var n, o;
if (!e) return this;
if (i = i || A, "string" != typeof e) return e.nodeType ? (this[0] = e, this.length = 1, this) : b(e) ? void 0 !== i.ready ? i.ready(e) : e(S) : S.makeArray(e, this);
if (!(n = "<" === e[0] && ">" === e[e.length - 1] && 3 <= e.length ? [null, e, null] : M.exec(e)) || !n[1] && t) return !t || t.jquery ? (t || i).find(e) : this.constructor(t).find(e);
if (n[1]) {
if (t = t instanceof S ? t[0] : t, S.merge(this, S.parseHTML(n[1], t && t.nodeType ? t.ownerDocument || t : T, !0)), $.test(n[1]) && S.isPlainObject(t))
for (n in t) b(this[n]) ? this[n](t[n]) : this.attr(n, t[n]);
return this
}
return (o = T.getElementById(n[2])) && (this[0] = o, this.length = 1), this
}).prototype = S.fn, A = S(T);
var D = /^(?:parents|prev(?:Until|All))/,
L = {
children: !0,
contents: !0,
next: !0,
prev: !0
};
function j(e, t) {
for (;
(e = e[t]) && 1 !== e.nodeType;);
return e
}
S.fn.extend({
has: function(e) {
var t = S(e, this),
i = t.length;
return this.filter(function() {
for (var e = 0; e < i; e++)
if (S.contains(this, t[e])) return !0
})
},
closest: function(e, t) {
var i, n = 0,
o = this.length,
a = [],
s = "string" != typeof e && S(e);
if (!E.test(e))
for (; n < o; n++)
for (i = this[n]; i && i !== t; i = i.parentNode)
if (i.nodeType < 11 && (s ? -1 < s.index(i) : 1 === i.nodeType && S.find.matchesSelector(i, e))) {
a.push(i);
break
}
return this.pushStack(1 < a.length ? S.uniqueSort(a) : a)
},
index: function(e) {
return e ? "string" == typeof e ? o.call(S(e), this[0]) : o.call(this, e.jquery ? e[0] : e) : this[0] && this[0].parentNode ? this.first().prevAll().length : -1
},
add: function(e, t) {
return this.pushStack(S.uniqueSort(S.merge(this.get(), S(e, t))))
},
addBack: function(e) {
return this.add(null == e ? this.prevObject : this.prevObject.filter(e))
}
}), S.each({
parent: function(e) {
var t = e.parentNode;
return t && 11 !== t.nodeType ? t : null
},
parents: function(e) {
return h(e, "parentNode")
},
parentsUntil: function(e, t, i) {
return h(e, "parentNode", i)
},
next: function(e) {
return j(e, "nextSibling")
},
prev: function(e) {
return j(e, "previousSibling")
},
nextAll: function(e) {
return h(e, "nextSibling")
},
prevAll: function(e) {
return h(e, "previousSibling")
},
nextUntil: function(e, t, i) {
return h(e, "nextSibling", i)
},
prevUntil: function(e, t, i) {
return h(e, "previousSibling", i)
},
siblings: function(e) {
return C((e.parentNode || {}).firstChild, e)
},
children: function(e) {
return C(e.firstChild)
},
contents: function(e) {
return I(e, "iframe") ? e.contentDocument : (I(e, "template") && (e = e.content || e), S.merge([], e.childNodes))
}
}, function(n, o) {
S.fn[n] = function(e, t) {
var i = S.map(this, o, e);
return "Until" !== n.slice(-5) && (t = e), t && "string" == typeof t && (i = S.filter(t, i)), 1 < this.length && (L[n] || S.uniqueSort(i), D.test(n) && i.reverse()), this.pushStack(i)
}
});
var B = /[^\x20\t\r\n\f]+/g;
function O(e) {
return e
}
function P(e) {
throw e
}
function N(e, t, i, n) {
var o;
try {
e && b(o = e.promise) ? o.call(e).done(t).fail(i) : e && b(o = e.then) ? o.call(e, t, i) : t.apply(void 0, [e].slice(n))
} catch (e) {
i.apply(void 0, [e])
}
}
S.Callbacks = function(n) {
var e, i;
n = "string" == typeof n ? (e = n, i = {}, S.each(e.match(B) || [], function(e, t) {
i[t] = !0
}), i) : S.extend({}, n);
var o, t, a, s, r = [],
l = [],
c = -1,
d = function() {
for (s = s || n.once, a = o = !0; l.length; c = -1)
for (t = l.shift(); ++c < r.length;) !1 === r[c].apply(t[0], t[1]) && n.stopOnFalse && (c = r.length, t = !1);
n.memory || (t = !1), o = !1, s && (r = t ? [] : "")
},
u = {
add: function() {
return r && (t && !o && (c = r.length - 1, l.push(t)), function i(e) {
S.each(e, function(e, t) {
b(t) ? n.unique && u.has(t) || r.push(t) : t && t.length && "string" !== k(t) && i(t)
})
}(arguments), t && !o && d()), this
},
remove: function() {
return S.each(arguments, function(e, t) {
for (var i; - 1 < (i = S.inArray(t, r, i));) r.splice(i, 1), i <= c && c--
}), this
},
has: function(e) {
return e ? -1 < S.inArray(e, r) : 0 < r.length
},
empty: function() {
return r && (r = []), this
},
disable: function() {
return s = l = [], r = t = "", this
},
disabled: function() {
return !r
},
lock: function() {
return s = l = [], t || o || (r = t = ""), this
},
locked: function() {
return !!s
},
fireWith: function(e, t) {
return s || (t = [e, (t = t || []).slice ? t.slice() : t], l.push(t), o || d()), this
},
fire: function() {
return u.fireWith(this, arguments), this
},
fired: function() {
return !!a
}
};
return u
}, S.extend({
Deferred: function(e) {
var a = [
["notify", "progress", S.Callbacks("memory"), S.Callbacks("memory"), 2],
["resolve", "done", S.Callbacks("once memory"), S.Callbacks("once memory"), 0, "resolved"],
["reject", "fail", S.Callbacks("once memory"), S.Callbacks("once memory"), 1, "rejected"]
],
o = "pending",
s = {
state: function() {
return o
},
always: function() {
return r.done(arguments).fail(arguments), this
},
catch: function(e) {
return s.then(null, e)
},
pipe: function() {
var o = arguments;
return S.Deferred(function(n) {
S.each(a, function(e, t) {
var i = b(o[t[4]]) && o[t[4]];
r[t[1]](function() {
var e = i && i.apply(this, arguments);
e && b(e.promise) ? e.promise().progress(n.notify).done(n.resolve).fail(n.reject) : n[t[0] + "With"](this, i ? [e] : arguments)
})
}), o = null
}).promise()
},
then: function(t, i, n) {
var l = 0;
function c(o, a, s, r) {
return function() {
var i = this,
n = arguments,
e = function() {
var e, t;
if (!(o < l)) {
if ((e = s.apply(i, n)) === a.promise()) throw new TypeError("Thenable self-resolution");
t = e && ("object" == typeof e || "function" == typeof e) && e.then, b(t) ? r ? t.call(e, c(l, a, O, r), c(l, a, P, r)) : (l++, t.call(e, c(l, a, O, r), c(l, a, P, r), c(l, a, O, a.notifyWith))) : (s !== O && (i = void 0, n = [e]), (r || a.resolveWith)(i, n))
}
},
t = r ? e : function() {
try {
e()
} catch (e) {
S.Deferred.exceptionHook && S.Deferred.exceptionHook(e, t.stackTrace), l <= o + 1 && (s !== P && (i = void 0, n = [e]), a.rejectWith(i, n))
}
};
o ? t() : (S.Deferred.getStackHook && (t.stackTrace = S.Deferred.getStackHook()), x.setTimeout(t))
}
}
return S.Deferred(function(e) {
a[0][3].add(c(0, e, b(n) ? n : O, e.notifyWith)), a[1][3].add(c(0, e, b(t) ? t : O)), a[2][3].add(c(0, e, b(i) ? i : P))
}).promise()
},
promise: function(e) {
return null != e ? S.extend(e, s) : s
}
},
r = {};
return S.each(a, function(e, t) {
var i = t[2],
n = t[5];
s[t[1]] = i.add, n && i.add(function() {
o = n
}, a[3 - e][2].disable, a[3 - e][3].disable, a[0][2].lock, a[0][3].lock), i.add(t[3].fire), r[t[0]] = function() {
return r[t[0] + "With"](this === r ? void 0 : this, arguments), this
}, r[t[0] + "With"] = i.fireWith
}), s.promise(r), e && e.call(r, r), r
},
when: function(e) {
var i = arguments.length,
t = i,
n = Array(t),
o = r.call(arguments),
a = S.Deferred(),
s = function(t) {
return function(e) {
n[t] = this, o[t] = 1 < arguments.length ? r.call(arguments) : e, --i || a.resolveWith(n, o)
}
};
if (i <= 1 && (N(e, a.done(s(t)).resolve, a.reject, !i), "pending" === a.state() || b(o[t] && o[t].then))) return a.then();
for (; t--;) N(o[t], s(t), a.reject);
return a.promise()
}
});
var R = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;
S.Deferred.exceptionHook = function(e, t) {
x.console && x.console.warn && e && R.test(e.name) && x.console.warn("jQuery.Deferred exception: " + e.message, e.stack, t)
}, S.readyException = function(e) {
x.setTimeout(function() {
throw e
})
};
var q = S.Deferred();
function H() {
T.removeEventListener("DOMContentLoaded", H), x.removeEventListener("load", H), S.ready()
}
S.fn.ready = function(e) {
return q.then(e).catch(function(e) {
S.readyException(e)
}), this
}, S.extend({
isReady: !1,
readyWait: 1,
ready: function(e) {
(!0 === e ? --S.readyWait : S.isReady) || ((S.isReady = !0) !== e && 0 < --S.readyWait || q.resolveWith(T, [S]))
}
}), S.ready.then = q.then, "complete" === T.readyState || "loading" !== T.readyState && !T.documentElement.doScroll ? x.setTimeout(S.ready) : (T.addEventListener("DOMContentLoaded", H), x.addEventListener("load", H));
var z = function(e, t, i, n, o, a, s) {
var r = 0,
l = e.length,
c = null == i;
if ("object" === k(i))
for (r in o = !0, i) z(e, t, r, i[r], !0, a, s);
else if (void 0 !== n && (o = !0, b(n) || (s = !0), c && (t = s ? (t.call(e, n), null) : (c = t, function(e, t, i) {
return c.call(S(e), i)
})), t))
for (; r < l; r++) t(e[r], i, s ? n : n.call(e[r], r, t(e[r], i)));
return o ? e : c ? t.call(e) : l ? t(e[0], i) : a
},
U = /^-ms-/,
W = /-([a-z])/g;
function F(e, t) {
return t.toUpperCase()
}
function V(e) {
return e.replace(U, "ms-").replace(W, F)
}
var Q = function(e) {
return 1 === e.nodeType || 9 === e.nodeType || !+e.nodeType
};
function Y() {
this.expando = S.expando + Y.uid++
}
Y.uid = 1, Y.prototype = {
cache: function(e) {
var t = e[this.expando];
return t || (t = {}, Q(e) && (e.nodeType ? e[this.expando] = t : Object.defineProperty(e, this.expando, {
value: t,
configurable: !0
}))), t
},
set: function(e, t, i) {
var n, o = this.cache(e);
if ("string" == typeof t) o[V(t)] = i;
else
for (n in t) o[V(n)] = t[n];
return o
},
get: function(e, t) {
return void 0 === t ? this.cache(e) : e[this.expando] && e[this.expando][V(t)]
},
access: function(e, t, i) {
return void 0 === t || t && "string" == typeof t && void 0 === i ? this.get(e, t) : (this.set(e, t, i), void 0 !== i ? i : t)
},
remove: function(e, t) {
var i, n = e[this.expando];
if (void 0 !== n) {
if (void 0 !== t) {
i = (t = Array.isArray(t) ? t.map(V) : (t = V(t)) in n ? [t] : t.match(B) || []).length;
for (; i--;) delete n[t[i]]
}(void 0 === t || S.isEmptyObject(n)) && (e.nodeType ? e[this.expando] = void 0 : delete e[this.expando])
}
},
hasData: function(e) {
var t = e[this.expando];
return void 0 !== t && !S.isEmptyObject(t)
}
};
var X = new Y,
G = new Y,
K = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
J = /[A-Z]/g;
function Z(e, t, i) {
var n, o;
if (void 0 === i && 1 === e.nodeType)
if (n = "data-" + t.replace(J, "-$&").toLowerCase(), "string" == typeof(i = e.getAttribute(n))) {
try {
i = "true" === (o = i) || "false" !== o && ("null" === o ? null : o === +o + "" ? +o : K.test(o) ? JSON.parse(o) : o)
} catch (e) {}
G.set(e, t, i)
} else i = void 0;
return i
}
S.extend({
hasData: function(e) {
return G.hasData(e) || X.hasData(e)
},
data: function(e, t, i) {
return G.access(e, t, i)
},
removeData: function(e, t) {
G.remove(e, t)
},
_data: function(e, t, i) {
return X.access(e, t, i)
},
_removeData: function(e, t) {
X.remove(e, t)
}
}), S.fn.extend({
data: function(i, e) {
var t, n, o, a = this[0],
s = a && a.attributes;
if (void 0 !== i) return "object" == typeof i ? this.each(function() {
G.set(this, i)
}) : z(this, function(e) {
var t;
if (a && void 0 === e) {
if (void 0 !== (t = G.get(a, i))) return t;
if (void 0 !== (t = Z(a, i))) return t
} else this.each(function() {
G.set(this, i, e)
})
}, null, e, 1 < arguments.length, null, !0);
if (this.length && (o = G.get(a), 1 === a.nodeType && !X.get(a, "hasDataAttrs"))) {
for (t = s.length; t--;) s[t] && 0 === (n = s[t].name).indexOf("data-") && (n = V(n.slice(5)), Z(a, n, o[n]));
X.set(a, "hasDataAttrs", !0)
}
return o
},
removeData: function(e) {
return this.each(function() {
G.remove(this, e)
})
}
}), S.extend({
queue: function(e, t, i) {
var n;
if (e) return t = (t || "fx") + "queue", n = X.get(e, t), i && (!n || Array.isArray(i) ? n = X.access(e, t, S.makeArray(i)) : n.push(i)), n || []
},
dequeue: function(e, t) {
t = t || "fx";
var i = S.queue(e, t),
n = i.length,
o = i.shift(),
a = S._queueHooks(e, t);
"inprogress" === o && (o = i.shift(), n--), o && ("fx" === t && i.unshift("inprogress"), delete a.stop, o.call(e, function() {
S.dequeue(e, t)
}, a)), !n && a && a.empty.fire()
},
_queueHooks: function(e, t) {
var i = t + "queueHooks";
return X.get(e, i) || X.access(e, i, {
empty: S.Callbacks("once memory").add(function() {
X.remove(e, [t + "queue", i])
})
})
}
}), S.fn.extend({
queue: function(t, i) {
var e = 2;
return "string" != typeof t && (i = t, t = "fx", e--), arguments.length < e ? S.queue(this[0], t) : void 0 === i ? this : this.each(function() {
var e = S.queue(this, t, i);
S._queueHooks(this, t), "fx" === t && "inprogress" !== e[0] && S.dequeue(this, t)
})
},
dequeue: function(e) {
return this.each(function() {
S.dequeue(this, e)
})
},
clearQueue: function(e) {
return this.queue(e || "fx", [])
},
promise: function(e, t) {
var i, n = 1,
o = S.Deferred(),
a = this,
s = this.length,
r = function() {
--n || o.resolveWith(a, [a])
};
for ("string" != typeof e && (t = e, e = void 0), e = e || "fx"; s--;)(i = X.get(a[s], e + "queueHooks")) && i.empty && (n++, i.empty.add(r));
return r(), o.promise(t)
}
});
var ee = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,
te = new RegExp("^(?:([+-])=|)(" + ee + ")([a-z%]*)$", "i"),
ie = ["Top", "Right", "Bottom", "Left"],
ne = function(e, t) {
return "none" === (e = t || e).style.display || "" === e.style.display && S.contains(e.ownerDocument, e) && "none" === S.css(e, "display")
},
oe = function(e, t, i, n) {
var o, a, s = {};
for (a in t) s[a] = e.style[a], e.style[a] = t[a];
for (a in o = i.apply(e, n || []), t) e.style[a] = s[a];
return o
};
function ae(e, t, i, n) {
var o, a, s = 20,
r = n ? function() {
return n.cur()
} : function() {
return S.css(e, t, "")
},
l = r(),
c = i && i[3] || (S.cssNumber[t] ? "" : "px"),
d = (S.cssNumber[t] || "px" !== c && +l) && te.exec(S.css(e, t));
if (d && d[3] !== c) {
for (l /= 2, c = c || d[3], d = +l || 1; s--;) S.style(e, t, d + c), (1 - a) * (1 - (a = r() / l || .5)) <= 0 && (s = 0), d /= a;
d *= 2, S.style(e, t, d + c), i = i || []
}
return i && (d = +d || +l || 0, o = i[1] ? d + (i[1] + 1) * i[2] : +i[2], n && (n.unit = c, n.start = d, n.end = o)), o
}
var se = {};
function re(e, t) {
for (var i, n, o = [], a = 0, s = e.length; a < s; a++)(n = e[a]).style && (i = n.style.display, t ? ("none" === i && (o[a] = X.get(n, "display") || null, o[a] || (n.style.display = "")), "" === n.style.display && ne(n) && (o[a] = (u = c = l = void 0, c = (r = n).ownerDocument, d = r.nodeName, (u = se[d]) || (l = c.body.appendChild(c.createElement(d)), u = S.css(l, "display"), l.parentNode.removeChild(l), "none" === u && (u = "block"), se[d] = u)))) : "none" !== i && (o[a] = "none", X.set(n, "display", i)));
var r, l, c, d, u;
for (a = 0; a < s; a++) null != o[a] && (e[a].style.display = o[a]);
return e
}
S.fn.extend({
show: function() {
return re(this, !0)
},
hide: function() {
return re(this)
},
toggle: function(e) {
return "boolean" == typeof e ? e ? this.show() : this.hide() : this.each(function() {
ne(this) ? S(this).show() : S(this).hide()
})
}
});
var le = /^(?:checkbox|radio)$/i,
ce = /<([a-z][^\/\0>\x20\t\r\n\f]+)/i,
de = /^$|^module$|\/(?:java|ecma)script/i,
ue = {
option: [1, "<select multiple='multiple'>", "</select>"],
thead: [1, "<table>", "</table>"],
col: [2, "<table><colgroup>", "</colgroup></table>"],
tr: [2, "<table><tbody>", "</tbody></table>"],
td: [3, "<table><tbody><tr>", "</tr></tbody></table>"],
_default: [0, "", ""]
};
function me(e, t) {
var i;
return i = void 0 !== e.getElementsByTagName ? e.getElementsByTagName(t || "*") : void 0 !== e.querySelectorAll ? e.querySelectorAll(t || "*") : [], void 0 === t || t && I(e, t) ? S.merge([e], i) : i
}
function pe(e, t) {
for (var i = 0, n = e.length; i < n; i++) X.set(e[i], "globalEval", !t || X.get(t[i], "globalEval"))
}
ue.optgroup = ue.option, ue.tbody = ue.tfoot = ue.colgroup = ue.caption = ue.thead, ue.th = ue.td;
var he, fe, ge = /<|&#?\w+;/;
function ve(e, t, i, n, o) {
for (var a, s, r, l, c, d, u = t.createDocumentFragment(), m = [], p = 0, h = e.length; p < h; p++)
if ((a = e[p]) || 0 === a)
if ("object" === k(a)) S.merge(m, a.nodeType ? [a] : a);
else if (ge.test(a)) {
for (s = s || u.appendChild(t.createElement("div")), r = (ce.exec(a) || ["", ""])[1].toLowerCase(), l = ue[r] || ue._default, s.innerHTML = l[1] + S.htmlPrefilter(a) + l[2], d = l[0]; d--;) s = s.lastChild;
S.merge(m, s.childNodes), (s = u.firstChild).textContent = ""
} else m.push(t.createTextNode(a));
for (u.textContent = "", p = 0; a = m[p++];)
if (n && -1 < S.inArray(a, n)) o && o.push(a);
else if (c = S.contains(a.ownerDocument, a), s = me(u.appendChild(a), "script"), c && pe(s), i)
for (d = 0; a = s[d++];) de.test(a.type || "") && i.push(a);
return u
}
he = T.createDocumentFragment().appendChild(T.createElement("div")), (fe = T.createElement("input")).setAttribute("type", "radio"), fe.setAttribute("checked", "checked"), fe.setAttribute("name", "t"), he.appendChild(fe), v.checkClone = he.cloneNode(!0).cloneNode(!0).lastChild.checked, he.innerHTML = "<textarea>x</textarea>", v.noCloneChecked = !!he.cloneNode(!0).lastChild.defaultValue;
var be = T.documentElement,
ye = /^key/,
we = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,
ke = /^([^.]*)(?:\.(.+)|)/;
function Ce() {
return !0
}
function xe() {
return !1
}
function Te() {
try {
return T.activeElement
} catch (e) {}
}
function Se(e, t, i, n, o, a) {
var s, r;
if ("object" == typeof t) {
for (r in "string" != typeof i && (n = n || i, i = void 0), t) Se(e, r, i, n, t[r], a);
return e
}
if (null == n && null == o ? (o = i, n = i = void 0) : null == o && ("string" == typeof i ? (o = n, n = void 0) : (o = n, n = i, i = void 0)), !1 === o) o = xe;
else if (!o) return e;
return 1 === a && (s = o, (o = function(e) {
return S().off(e), s.apply(this, arguments)
}).guid = s.guid || (s.guid = S.guid++)), e.each(function() {
S.event.add(this, t, o, n, i)
})
}
S.event = {
global: {},
add: function(t, e, i, n, o) {
var a, s, r, l, c, d, u, m, p, h, f, g = X.get(t);
if (g)
for (i.handler && (i = (a = i).handler, o = a.selector), o && S.find.matchesSelector(be, o), i.guid || (i.guid = S.guid++), (l = g.events) || (l = g.events = {}), (s = g.handle) || (s = g.handle = function(e) {
return void 0 !== S && S.event.triggered !== e.type ? S.event.dispatch.apply(t, arguments) : void 0
}), c = (e = (e || "").match(B) || [""]).length; c--;) p = f = (r = ke.exec(e[c]) || [])[1], h = (r[2] || "").split(".").sort(), p && (u = S.event.special[p] || {}, p = (o ? u.delegateType : u.bindType) || p, u = S.event.special[p] || {}, d = S.extend({
type: p,
origType: f,
data: n,
handler: i,
guid: i.guid,
selector: o,
needsContext: o && S.expr.match.needsContext.test(o),
namespace: h.join(".")
}, a), (m = l[p]) || ((m = l[p] = []).delegateCount = 0, u.setup && !1 !== u.setup.call(t, n, h, s) || t.addEventListener && t.addEventListener(p, s)), u.add && (u.add.call(t, d), d.handler.guid || (d.handler.guid = i.guid)), o ? m.splice(m.delegateCount++, 0, d) : m.push(d), S.event.global[p] = !0)
},
remove: function(e, t, i, n, o) {
var a, s, r, l, c, d, u, m, p, h, f, g = X.hasData(e) && X.get(e);
if (g && (l = g.events)) {
for (c = (t = (t || "").match(B) || [""]).length; c--;)
if (p = f = (r = ke.exec(t[c]) || [])[1], h = (r[2] || "").split(".").sort(), p) {
for (u = S.event.special[p] || {}, m = l[p = (n ? u.delegateType : u.bindType) || p] || [], r = r[2] && new RegExp("(^|\\.)" + h.join("\\.(?:.*\\.|)") + "(\\.|$)"), s = a = m.length; a--;) d = m[a], !o && f !== d.origType || i && i.guid !== d.guid || r && !r.test(d.namespace) || n && n !== d.selector && ("**" !== n || !d.selector) || (m.splice(a, 1), d.selector && m.delegateCount--, u.remove && u.remove.call(e, d));
s && !m.length && (u.teardown && !1 !== u.teardown.call(e, h, g.handle) || S.removeEvent(e, p, g.handle), delete l[p])
} else
for (p in l) S.event.remove(e, p + t[c], i, n, !0);
S.isEmptyObject(l) && X.remove(e, "handle events")
}
},
dispatch: function(e) {
var t, i, n, o, a, s, r = S.event.fix(e),
l = new Array(arguments.length),
c = (X.get(this, "events") || {})[r.type] || [],
d = S.event.special[r.type] || {};
for (l[0] = r, t = 1; t < arguments.length; t++) l[t] = arguments[t];
if (r.delegateTarget = this, !d.preDispatch || !1 !== d.preDispatch.call(this, r)) {
for (s = S.event.handlers.call(this, r, c), t = 0;
(o = s[t++]) && !r.isPropagationStopped();)
for (r.currentTarget = o.elem, i = 0;
(a = o.handlers[i++]) && !r.isImmediatePropagationStopped();) r.rnamespace && !r.rnamespace.test(a.namespace) || (r.handleObj = a, r.data = a.data, void 0 !== (n = ((S.event.special[a.origType] || {}).handle || a.handler).apply(o.elem, l)) && !1 === (r.result = n) && (r.preventDefault(), r.stopPropagation()));
return d.postDispatch && d.postDispatch.call(this, r), r.result
}
},
handlers: function(e, t) {
var i, n, o, a, s, r = [],
l = t.delegateCount,
c = e.target;
if (l && c.nodeType && !("click" === e.type && 1 <= e.button))
for (; c !== this; c = c.parentNode || this)
if (1 === c.nodeType && ("click" !== e.type || !0 !== c.disabled)) {
for (a = [], s = {}, i = 0; i < l; i++) void 0 === s[o = (n = t[i]).selector + " "] && (s[o] = n.needsContext ? -1 < S(o, this).index(c) : S.find(o, this, null, [c]).length), s[o] && a.push(n);
a.length && r.push({
elem: c,
handlers: a
})
}
return c = this, l < t.length && r.push({
elem: c,
handlers: t.slice(l)
}), r
},
addProp: function(t, e) {
Object.defineProperty(S.Event.prototype, t, {
enumerable: !0,
configurable: !0,
get: b(e) ? function() {
if (this.originalEvent) return e(this.originalEvent)
} : function() {
if (this.originalEvent) return this.originalEvent[t]
},
set: function(e) {
Object.defineProperty(this, t, {
enumerable: !0,
configurable: !0,
writable: !0,
value: e
})
}
})
},
fix: function(e) {
return e[S.expando] ? e : new S.Event(e)
},
special: {
load: {
noBubble: !0
},
focus: {
trigger: function() {
if (this !== Te() && this.focus) return this.focus(), !1
},
delegateType: "focusin"
},
blur: {
trigger: function() {
if (this === Te() && this.blur) return this.blur(), !1
},
delegateType: "focusout"
},
click: {
trigger: function() {
if ("checkbox" === this.type && this.click && I(this, "input")) return this.click(), !1
},
_default: function(e) {
return I(e.target, "a")
}
},
beforeunload: {
postDispatch: function(e) {
void 0 !== e.result && e.originalEvent && (e.originalEvent.returnValue = e.result)
}
}
}
}, S.removeEvent = function(e, t, i) {
e.removeEventListener && e.removeEventListener(t, i)
}, S.Event = function(e, t) {
if (!(this instanceof S.Event)) return new S.Event(e, t);
e && e.type ? (this.originalEvent = e, this.type = e.type, this.isDefaultPrevented = e.defaultPrevented || void 0 === e.defaultPrevented && !1 === e.returnValue ? Ce : xe, this.target = e.target && 3 === e.target.nodeType ? e.target.parentNode : e.target, this.currentTarget = e.currentTarget, this.relatedTarget = e.relatedTarget) : this.type = e, t && S.extend(this, t), this.timeStamp = e && e.timeStamp || Date.now(), this[S.expando] = !0
}, S.Event.prototype = {
constructor: S.Event,
isDefaultPrevented: xe,
isPropagationStopped: xe,
isImmediatePropagationStopped: xe,
isSimulated: !1,
preventDefault: function() {
var e = this.originalEvent;
this.isDefaultPrevented = Ce, e && !this.isSimulated && e.preventDefault()
},
stopPropagation: function() {
var e = this.originalEvent;
this.isPropagationStopped = Ce, e && !this.isSimulated && e.stopPropagation()
},
stopImmediatePropagation: function() {
var e = this.originalEvent;
this.isImmediatePropagationStopped = Ce, e && !this.isSimulated && e.stopImmediatePropagation(), this.stopPropagation()
}
}, S.each({
altKey: !0,
bubbles: !0,
cancelable: !0,
changedTouches: !0,
ctrlKey: !0,
detail: !0,
eventPhase: !0,
metaKey: !0,
pageX: !0,
pageY: !0,
shiftKey: !0,
view: !0,
char: !0,
charCode: !0,
key: !0,
keyCode: !0,
button: !0,
buttons: !0,
clientX: !0,
clientY: !0,
offsetX: !0,
offsetY: !0,
pointerId: !0,
pointerType: !0,
screenX: !0,
screenY: !0,
targetTouches: !0,
toElement: !0,
touches: !0,
which: function(e) {
var t = e.button;
return null == e.which && ye.test(e.type) ? null != e.charCode ? e.charCode : e.keyCode : !e.which && void 0 !== t && we.test(e.type) ? 1 & t ? 1 : 2 & t ? 3 : 4 & t ? 2 : 0 : e.which
}
}, S.event.addProp), S.each({
mouseenter: "mouseover",
mouseleave: "mouseout",
pointerenter: "pointerover",
pointerleave: "pointerout"
}, function(e, o) {
S.event.special[e] = {
delegateType: o,
bindType: o,
handle: function(e) {
var t, i = e.relatedTarget,
n = e.handleObj;
return i && (i === this || S.contains(this, i)) || (e.type = n.origType, t = n.handler.apply(this, arguments), e.type = o), t
}
}
}), S.fn.extend({
on: function(e, t, i, n) {
return Se(this, e, t, i, n)
},
one: function(e, t, i, n) {
return Se(this, e, t, i, n, 1)
},
off: function(e, t, i) {
var n, o;
if (e && e.preventDefault && e.handleObj) return n = e.handleObj, S(e.delegateTarget).off(n.namespace ? n.origType + "." + n.namespace : n.origType, n.selector, n.handler), this;
if ("object" != typeof e) return !1 !== t && "function" != typeof t || (i = t, t = void 0), !1 === i && (i = xe), this.each(function() {
S.event.remove(this, e, i, t)
});
for (o in e) this.off(o, t, e[o]);
return this
}
});
var Ee = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,
Ie = /<script|<style|<link/i,
$e = /checked\s*(?:[^=]|=\s*.checked.)/i,
_e = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;
function Ae(e, t) {
return I(e, "table") && I(11 !== t.nodeType ? t : t.firstChild, "tr") && S(e).children("tbody")[0] || e
}
function Me(e) {
return e.type = (null !== e.getAttribute("type")) + "/" + e.type, e
}
function De(e) {
return "true/" === (e.type || "").slice(0, 5) ? e.type = e.type.slice(5) : e.removeAttribute("type"), e
}
function Le(e, t) {
var i, n, o, a, s, r, l, c;
if (1 === t.nodeType) {
if (X.hasData(e) && (a = X.access(e), s = X.set(t, a), c = a.events))
for (o in delete s.handle, s.events = {}, c)
for (i = 0, n = c[o].length; i < n; i++) S.event.add(t, o, c[o][i]);
G.hasData(e) && (r = G.access(e), l = S.extend({}, r), G.set(t, l))
}
}
function je(i, n, o, a) {
n = f.apply([], n);
var e, t, s, r, l, c, d = 0,
u = i.length,
m = u - 1,
p = n[0],
h = b(p);
if (h || 1 < u && "string" == typeof p && !v.checkClone && $e.test(p)) return i.each(function(e) {
var t = i.eq(e);
h && (n[0] = p.call(this, e, t.html())), je(t, n, o, a)
});
if (u && (t = (e = ve(n, i[0].ownerDocument, !1, i, a)).firstChild, 1 === e.childNodes.length && (e = t), t || a)) {
for (r = (s = S.map(me(e, "script"), Me)).length; d < u; d++) l = e, d !== m && (l = S.clone(l, !0, !0), r && S.merge(s, me(l, "script"))), o.call(i[d], l, d);
if (r)
for (c = s[s.length - 1].ownerDocument, S.map(s, De), d = 0; d < r; d++) l = s[d], de.test(l.type || "") && !X.access(l, "globalEval") && S.contains(c, l) && (l.src && "module" !== (l.type || "").toLowerCase() ? S._evalUrl && S._evalUrl(l.src) : w(l.textContent.replace(_e, ""), c, l))
}
return i
}
function Be(e, t, i) {
for (var n, o = t ? S.filter(t, e) : e, a = 0; null != (n = o[a]); a++) i || 1 !== n.nodeType || S.cleanData(me(n)), n.parentNode && (i && S.contains(n.ownerDocument, n) && pe(me(n, "script")), n.parentNode.removeChild(n));
return e
}
S.extend({
htmlPrefilter: function(e) {
return e.replace(Ee, "<$1></$2>")
},
clone: function(e, t, i) {
var n, o, a, s, r, l, c, d = e.cloneNode(!0),
u = S.contains(e.ownerDocument, e);
if (!(v.noCloneChecked || 1 !== e.nodeType && 11 !== e.nodeType || S.isXMLDoc(e)))
for (s = me(d), n = 0, o = (a = me(e)).length; n < o; n++) r = a[n], l = s[n], void 0, "input" === (c = l.nodeName.toLowerCase()) && le.test(r.type) ? l.checked = r.checked : "input" !== c && "textarea" !== c || (l.defaultValue = r.defaultValue);
if (t)
if (i)
for (a = a || me(e), s = s || me(d), n = 0, o = a.length; n < o; n++) Le(a[n], s[n]);
else Le(e, d);
return 0 < (s = me(d, "script")).length && pe(s, !u && me(e, "script")), d
},
cleanData: function(e) {
for (var t, i, n, o = S.event.special, a = 0; void 0 !== (i = e[a]); a++)
if (Q(i)) {
if (t = i[X.expando]) {
if (t.events)
for (n in t.events) o[n] ? S.event.remove(i, n) : S.removeEvent(i, n, t.handle);
i[X.expando] = void 0
}
i[G.expando] && (i[G.expando] = void 0)
}
}
}), S.fn.extend({
detach: function(e) {
return Be(this, e, !0)
},
remove: function(e) {
return Be(this, e)
},
text: function(e) {
return z(this, function(e) {
return void 0 === e ? S.text(this) : this.empty().each(function() {
1 !== this.nodeType && 11 !== this.nodeType && 9 !== this.nodeType || (this.textContent = e)
})
}, null, e, arguments.length)
},
append: function() {
return je(this, arguments, function(e) {
1 !== this.nodeType && 11 !== this.nodeType && 9 !== this.nodeType || Ae(this, e).appendChild(e)
})
},
prepend: function() {
return je(this, arguments, function(e) {
if (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) {
var t = Ae(this, e);
t.insertBefore(e, t.firstChild)
}
})
},
before: function() {
return je(this, arguments, function(e) {
this.parentNode && this.parentNode.insertBefore(e, this)
})
},
after: function() {
return je(this, arguments, function(e) {
this.parentNode && this.parentNode.insertBefore(e, this.nextSibling)
})
},
empty: function() {
for (var e, t = 0; null != (e = this[t]); t++) 1 === e.nodeType && (S.cleanData(me(e, !1)), e.textContent = "");
return this
},
clone: function(e, t) {
return e = null != e && e, t = null == t ? e : t, this.map(function() {
return S.clone(this, e, t)
})
},
html: function(e) {
return z(this, function(e) {
var t = this[0] || {},
i = 0,
n = this.length;
if (void 0 === e && 1 === t.nodeType) return t.innerHTML;
if ("string" == typeof e && !Ie.test(e) && !ue[(ce.exec(e) || ["", ""])[1].toLowerCase()]) {
e = S.htmlPrefilter(e);
try {
for (; i < n; i++) 1 === (t = this[i] || {}).nodeType && (S.cleanData(me(t, !1)), t.innerHTML = e);
t = 0
} catch (e) {}
}
t && this.empty().append(e)
}, null, e, arguments.length)
},
replaceWith: function() {
var i = [];
return je(this, arguments, function(e) {
var t = this.parentNode;
S.inArray(this, i) < 0 && (S.cleanData(me(this)), t && t.replaceChild(e, this))
}, i)
}
}), S.each({
appendTo: "append",
prependTo: "prepend",
insertBefore: "before",
insertAfter: "after",
replaceAll: "replaceWith"
}, function(e, s) {
S.fn[e] = function(e) {
for (var t, i = [], n = S(e), o = n.length - 1, a = 0; a <= o; a++) t = a === o ? this : this.clone(!0), S(n[a])[s](t), l.apply(i, t.get());
return this.pushStack(i)
}
});
var Oe = new RegExp("^(" + ee + ")(?!px)[a-z%]+$", "i"),
Pe = function(e) {
var t = e.ownerDocument.defaultView;
return t && t.opener || (t = x), t.getComputedStyle(e)
},
Ne = new RegExp(ie.join("|"), "i");
function Re(e, t, i) {
var n, o, a, s, r = e.style;
return (i = i || Pe(e)) && ("" !== (s = i.getPropertyValue(t) || i[t]) || S.contains(e.ownerDocument, e) || (s = S.style(e, t)), !v.pixelBoxStyles() && Oe.test(s) && Ne.test(t) && (n = r.width, o = r.minWidth, a = r.maxWidth, r.minWidth = r.maxWidth = r.width = s, s = i.width, r.width = n, r.minWidth = o, r.maxWidth = a)), void 0 !== s ? s + "" : s
}
function qe(e, t) {
return {
get: function() {
if (!e()) return (this.get = t).apply(this, arguments);
delete this.get
}
}
}! function() {
function e() {
if (l) {
r.style.cssText = "position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0", l.style.cssText = "position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%", be.appendChild(r).appendChild(l);
var e = x.getComputedStyle(l);
i = "1%" !== e.top, s = 12 === t(e.marginLeft), l.style.right = "60%", a = 36 === t(e.right), n = 36 === t(e.width), l.style.position = "absolute", o = 36 === l.offsetWidth || "absolute", be.removeChild(r), l = null
}
}
function t(e) {
return Math.round(parseFloat(e))
}
var i, n, o, a, s, r = T.createElement("div"),
l = T.createElement("div");
l.style && (l.style.backgroundClip = "content-box", l.cloneNode(!0).style.backgroundClip = "", v.clearCloneStyle = "content-box" === l.style.backgroundClip, S.extend(v, {
boxSizingReliable: function() {
return e(), n
},
pixelBoxStyles: function() {
return e(), a
},
pixelPosition: function() {
return e(), i
},
reliableMarginLeft: function() {
return e(), s
},
scrollboxSize: function() {
return e(), o
}
}))
}();
var He = /^(none|table(?!-c[ea]).+)/,
ze = /^--/,
Ue = {
position: "absolute",
visibility: "hidden",
display: "block"
},
We = {
letterSpacing: "0",
fontWeight: "400"
},
Fe = ["Webkit", "Moz", "ms"],
Ve = T.createElement("div").style;
function Qe(e) {
var t = S.cssProps[e];
return t || (t = S.cssProps[e] = function(e) {
if (e in Ve) return e;
for (var t = e[0].toUpperCase() + e.slice(1), i = Fe.length; i--;)
if ((e = Fe[i] + t) in Ve) return e
}(e) || e), t
}
function Ye(e, t, i) {
var n = te.exec(t);
return n ? Math.max(0, n[2] - (i || 0)) + (n[3] || "px") : t
}
function Xe(e, t, i, n, o, a) {
var s = "width" === t ? 1 : 0,
r = 0,
l = 0;
if (i === (n ? "border" : "content")) return 0;
for (; s < 4; s += 2) "margin" === i && (l += S.css(e, i + ie[s], !0, o)), n ? ("content" === i && (l -= S.css(e, "padding" + ie[s], !0, o)), "margin" !== i && (l -= S.css(e, "border" + ie[s] + "Width", !0, o))) : (l += S.css(e, "padding" + ie[s], !0, o), "padding" !== i ? l += S.css(e, "border" + ie[s] + "Width", !0, o) : r += S.css(e, "border" + ie[s] + "Width", !0, o));
return !n && 0 <= a && (l += Math.max(0, Math.ceil(e["offset" + t[0].toUpperCase() + t.slice(1)] - a - l - r - .5))), l
}
function Ge(e, t, i) {
var n = Pe(e),
o = Re(e, t, n),
a = "border-box" === S.css(e, "boxSizing", !1, n),
s = a;
if (Oe.test(o)) {
if (!i) return o;
o = "auto"
}
return s = s && (v.boxSizingReliable() || o === e.style[t]), ("auto" === o || !parseFloat(o) && "inline" === S.css(e, "display", !1, n)) && (o = e["offset" + t[0].toUpperCase() + t.slice(1)], s = !0), (o = parseFloat(o) || 0) + Xe(e, t, i || (a ? "border" : "content"), s, n, o) + "px"
}
function Ke(e, t, i, n, o) {
return new Ke.prototype.init(e, t, i, n, o)
}
S.extend({
cssHooks: {
opacity: {
get: function(e, t) {
if (t) {
var i = Re(e, "opacity");
return "" === i ? "1" : i
}
}
}
},
cssNumber: {
animationIterationCount: !0,
columnCount: !0,
fillOpacity: !0,
flexGrow: !0,
flexShrink: !0,
fontWeight: !0,
lineHeight: !0,
opacity: !0,
order: !0,
orphans: !0,
widows: !0,
zIndex: !0,
zoom: !0
},
cssProps: {},
style: function(e, t, i, n) {
if (e && 3 !== e.nodeType && 8 !== e.nodeType && e.style) {
var o, a, s, r = V(t),
l = ze.test(t),
c = e.style;
if (l || (t = Qe(r)), s = S.cssHooks[t] || S.cssHooks[r], void 0 === i) return s && "get" in s && void 0 !== (o = s.get(e, !1, n)) ? o : c[t];
"string" == (a = typeof i) && (o = te.exec(i)) && o[1] && (i = ae(e, t, o), a = "number"), null != i && i == i && ("number" === a && (i += o && o[3] || (S.cssNumber[r] ? "" : "px")), v.clearCloneStyle || "" !== i || 0 !== t.indexOf("background") || (c[t] = "inherit"), s && "set" in s && void 0 === (i = s.set(e, i, n)) || (l ? c.setProperty(t, i) : c[t] = i))
}
},
css: function(e, t, i, n) {
var o, a, s, r = V(t);
return ze.test(t) || (t = Qe(r)), (s = S.cssHooks[t] || S.cssHooks[r]) && "get" in s && (o = s.get(e, !0, i)), void 0 === o && (o = Re(e, t, n)), "normal" === o && t in We && (o = We[t]), "" === i || i ? (a = parseFloat(o), !0 === i || isFinite(a) ? a || 0 : o) : o
}
}), S.each(["height", "width"], function(e, r) {
S.cssHooks[r] = {
get: function(e, t, i) {
if (t) return !He.test(S.css(e, "display")) || e.getClientRects().length && e.getBoundingClientRect().width ? Ge(e, r, i) : oe(e, Ue, function() {
return Ge(e, r, i)
})
},
set: function(e, t, i) {
var n, o = Pe(e),
a = "border-box" === S.css(e, "boxSizing", !1, o),
s = i && Xe(e, r, i, a, o);
return a && v.scrollboxSize() === o.position && (s -= Math.ceil(e["offset" + r[0].toUpperCase() + r.slice(1)] - parseFloat(o[r]) - Xe(e, r, "border", !1, o) - .5)), s && (n = te.exec(t)) && "px" !== (n[3] || "px") && (e.style[r] = t, t = S.css(e, r)), Ye(0, t, s)
}
}
}), S.cssHooks.marginLeft = qe(v.reliableMarginLeft, function(e, t) {
if (t) return (parseFloat(Re(e, "marginLeft")) || e.getBoundingClientRect().left - oe(e, {
marginLeft: 0
}, function() {
return e.getBoundingClientRect().left
})) + "px"
}), S.each({
margin: "",
padding: "",
border: "Width"
}, function(o, a) {
S.cssHooks[o + a] = {
expand: function(e) {
for (var t = 0, i = {}, n = "string" == typeof e ? e.split(" ") : [e]; t < 4; t++) i[o + ie[t] + a] = n[t] || n[t - 2] || n[0];
return i
}
}, "margin" !== o && (S.cssHooks[o + a].set = Ye)
}), S.fn.extend({
css: function(e, t) {
return z(this, function(e, t, i) {
var n, o, a = {},
s = 0;
if (Array.isArray(t)) {
for (n = Pe(e), o = t.length; s < o; s++) a[t[s]] = S.css(e, t[s], !1, n);
return a
}
return void 0 !== i ? S.style(e, t, i) : S.css(e, t)
}, e, t, 1 < arguments.length)
}
}), ((S.Tween = Ke).prototype = {
constructor: Ke,
init: function(e, t, i, n, o, a) {
this.elem = e, this.prop = i, this.easing = o || S.easing._default, this.options = t, this.start = this.now = this.cur(), this.end = n, this.unit = a || (S.cssNumber[i] ? "" : "px")
},
cur: function() {
var e = Ke.propHooks[this.prop];
return e && e.get ? e.get(this) : Ke.propHooks._default.get(this)
},
run: function(e) {
var t, i = Ke.propHooks[this.prop];
return this.options.duration ? this.pos = t = S.easing[this.easing](e, this.options.duration * e, 0, 1, this.options.duration) : this.pos = t = e, this.now = (this.end - this.start) * t + this.start, this.options.step && this.options.step.call(this.elem, this.now, this), i && i.set ? i.set(this) : Ke.propHooks._default.set(this), this
}
}).init.prototype = Ke.prototype, (Ke.propHooks = {
_default: {
get: function(e) {
var t;
return 1 !== e.elem.nodeType || null != e.elem[e.prop] && null == e.elem.style[e.prop] ? e.elem[e.prop] : (t = S.css(e.elem, e.prop, "")) && "auto" !== t ? t : 0
},
set: function(e) {
S.fx.step[e.prop] ? S.fx.step[e.prop](e) : 1 !== e.elem.nodeType || null == e.elem.style[S.cssProps[e.prop]] && !S.cssHooks[e.prop] ? e.elem[e.prop] = e.now : S.style(e.elem, e.prop, e.now + e.unit)
}
}
}).scrollTop = Ke.propHooks.scrollLeft = {
set: function(e) {
e.elem.nodeType && e.elem.parentNode && (e.elem[e.prop] = e.now)
}
}, S.easing = {
linear: function(e) {
return e
},
swing: function(e) {
return .5 - Math.cos(e * Math.PI) / 2
},
_default: "swing"
}, S.fx = Ke.prototype.init, S.fx.step = {};
var Je, Ze, et, tt, it = /^(?:toggle|show|hide)$/,
nt = /queueHooks$/;
function ot() {
Ze && (!1 === T.hidden && x.requestAnimationFrame ? x.requestAnimationFrame(ot) : x.setTimeout(ot, S.fx.interval), S.fx.tick())
}
function at() {
return x.setTimeout(function() {
Je = void 0
}), Je = Date.now()
}
function st(e, t) {
var i, n = 0,
o = {
height: e
};
for (t = t ? 1 : 0; n < 4; n += 2 - t) o["margin" + (i = ie[n])] = o["padding" + i] = e;
return t && (o.opacity = o.width = e), o
}
function rt(e, t, i) {
for (var n, o = (lt.tweeners[t] || []).concat(lt.tweeners["*"]), a = 0, s = o.length; a < s; a++)
if (n = o[a].call(i, t, e)) return n
}
function lt(a, e, t) {
var i, s, n = 0,
o = lt.prefilters.length,
r = S.Deferred().always(function() {
delete l.elem
}),
l = function() {
if (s) return !1;
for (var e = Je || at(), t = Math.max(0, c.startTime + c.duration - e), i = 1 - (t / c.duration || 0), n = 0, o = c.tweens.length; n < o; n++) c.tweens[n].run(i);
return r.notifyWith(a, [c, i, t]), i < 1 && o ? t : (o || r.notifyWith(a, [c, 1, 0]), r.resolveWith(a, [c]), !1)
},
c = r.promise({
elem: a,
props: S.extend({}, e),
opts: S.extend(!0, {
specialEasing: {},
easing: S.easing._default
}, t),
originalProperties: e,
originalOptions: t,
startTime: Je || at(),
duration: t.duration,
tweens: [],
createTween: function(e, t) {
var i = S.Tween(a, c.opts, e, t, c.opts.specialEasing[e] || c.opts.easing);
return c.tweens.push(i), i
},
stop: function(e) {
var t = 0,
i = e ? c.tweens.length : 0;
if (s) return this;
for (s = !0; t < i; t++) c.tweens[t].run(1);
return e ? (r.notifyWith(a, [c, 1, 0]), r.resolveWith(a, [c, e])) : r.rejectWith(a, [c, e]), this
}
}),
d = c.props;
for (function(e, t) {
var i, n, o, a, s;
for (i in e)
if (o = t[n = V(i)], a = e[i], Array.isArray(a) && (o = a[1], a = e[i] = a[0]), i !== n && (e[n] = a, delete e[i]), (s = S.cssHooks[n]) && "expand" in s)
for (i in a = s.expand(a), delete e[n], a) i in e || (e[i] = a[i], t[i] = o);
else t[n] = o
}(d, c.opts.specialEasing); n < o; n++)
if (i = lt.prefilters[n].call(c, a, d, c.opts)) return b(i.stop) && (S._queueHooks(c.elem, c.opts.queue).stop = i.stop.bind(i)), i;
return S.map(d, rt, c), b(c.opts.start) && c.opts.start.call(a, c), c.progress(c.opts.progress).done(c.opts.done, c.opts.complete).fail(c.opts.fail).always(c.opts.always), S.fx.timer(S.extend(l, {
elem: a,
anim: c,
queue: c.opts.queue
})), c
}
S.Animation = S.extend(lt, {
tweeners: {
"*": [function(e, t) {
var i = this.createTween(e, t);
return ae(i.elem, e, te.exec(t), i), i
}]
},
tweener: function(e, t) {
for (var i, n = 0, o = (e = b(e) ? (t = e, ["*"]) : e.match(B)).length; n < o; n++) i = e[n], lt.tweeners[i] = lt.tweeners[i] || [], lt.tweeners[i].unshift(t)
},
prefilters: [function(e, t, i) {
var n, o, a, s, r, l, c, d, u = "width" in t || "height" in t,
m = this,
p = {},
h = e.style,
f = e.nodeType && ne(e),
g = X.get(e, "fxshow");
for (n in i.queue || (null == (s = S._queueHooks(e, "fx")).unqueued && (s.unqueued = 0, r = s.empty.fire, s.empty.fire = function() {
s.unqueued || r()
}), s.unqueued++, m.always(function() {
m.always(function() {
s.unqueued--, S.queue(e, "fx").length || s.empty.fire()
})
})), t)
if (o = t[n], it.test(o)) {
if (delete t[n], a = a || "toggle" === o, o === (f ? "hide" : "show")) {
if ("show" !== o || !g || void 0 === g[n]) continue;
f = !0
}
p[n] = g && g[n] || S.style(e, n)
}
if ((l = !S.isEmptyObject(t)) || !S.isEmptyObject(p))
for (n in u && 1 === e.nodeType && (i.overflow = [h.overflow, h.overflowX, h.overflowY], null == (c = g && g.display) && (c = X.get(e, "display")), "none" === (d = S.css(e, "display")) && (c ? d = c : (re([e], !0), c = e.style.display || c, d = S.css(e, "display"), re([e]))), ("inline" === d || "inline-block" === d && null != c) && "none" === S.css(e, "float") && (l || (m.done(function() {
h.display = c
}), null == c && (d = h.display, c = "none" === d ? "" : d)), h.display = "inline-block")), i.overflow && (h.overflow = "hidden", m.always(function() {
h.overflow = i.overflow[0], h.overflowX = i.overflow[1], h.overflowY = i.overflow[2]
})), l = !1, p) l || (g ? "hidden" in g && (f = g.hidden) : g = X.access(e, "fxshow", {
display: c
}), a && (g.hidden = !f), f && re([e], !0), m.done(function() {
for (n in f || re([e]), X.remove(e, "fxshow"), p) S.style(e, n, p[n])
})), l = rt(f ? g[n] : 0, n, m), n in g || (g[n] = l.start, f && (l.end = l.start, l.start = 0))
}],
prefilter: function(e, t) {
t ? lt.prefilters.unshift(e) : lt.prefilters.push(e)
}
}), S.speed = function(e, t, i) {
var n = e && "object" == typeof e ? S.extend({}, e) : {
complete: i || !i && t || b(e) && e,
duration: e,
easing: i && t || t && !b(t) && t
};
return S.fx.off ? n.duration = 0 : "number" != typeof n.duration && (n.duration in S.fx.speeds ? n.duration = S.fx.speeds[n.duration] : n.duration = S.fx.speeds._default), null != n.queue && !0 !== n.queue || (n.queue = "fx"), n.old = n.complete, n.complete = function() {
b(n.old) && n.old.call(this), n.queue && S.dequeue(this, n.queue)
}, n
}, S.fn.extend({
fadeTo: function(e, t, i, n) {
return this.filter(ne).css("opacity", 0).show().end().animate({
opacity: t
}, e, i, n)
},
animate: function(t, e, i, n) {
var o = S.isEmptyObject(t),
a = S.speed(e, i, n),
s = function() {
var e = lt(this, S.extend({}, t), a);
(o || X.get(this, "finish")) && e.stop(!0)
};
return s.finish = s, o || !1 === a.queue ? this.each(s) : this.queue(a.queue, s)
},
stop: function(o, e, a) {
var s = function(e) {
var t = e.stop;
delete e.stop, t(a)
};
return "string" != typeof o && (a = e, e = o, o = void 0), e && !1 !== o && this.queue(o || "fx", []), this.each(function() {
var e = !0,
t = null != o && o + "queueHooks",
i = S.timers,
n = X.get(this);
if (t) n[t] && n[t].stop && s(n[t]);
else
for (t in n) n[t] && n[t].stop && nt.test(t) && s(n[t]);
for (t = i.length; t--;) i[t].elem !== this || null != o && i[t].queue !== o || (i[t].anim.stop(a), e = !1, i.splice(t, 1));
!e && a || S.dequeue(this, o)
})
},
finish: function(s) {
return !1 !== s && (s = s || "fx"), this.each(function() {
var e, t = X.get(this),
i = t[s + "queue"],
n = t[s + "queueHooks"],
o = S.timers,
a = i ? i.length : 0;
for (t.finish = !0, S.queue(this, s, []), n && n.stop && n.stop.call(this, !0), e = o.length; e--;) o[e].elem === this && o[e].queue === s && (o[e].anim.stop(!0), o.splice(e, 1));
for (e = 0; e < a; e++) i[e] && i[e].finish && i[e].finish.call(this);
delete t.finish
})
}
}), S.each(["toggle", "show", "hide"], function(e, n) {
var o = S.fn[n];
S.fn[n] = function(e, t, i) {
return null == e || "boolean" == typeof e ? o.apply(this, arguments) : this.animate(st(n, !0), e, t, i)
}
}), S.each({
slideDown: st("show"),
slideUp: st("hide"),
slideToggle: st("toggle"),
fadeIn: {
opacity: "show"
},
fadeOut: {
opacity: "hide"
},
fadeToggle: {
opacity: "toggle"
}
}, function(e, n) {
S.fn[e] = function(e, t, i) {
return this.animate(n, e, t, i)
}
}), S.timers = [], S.fx.tick = function() {
var e, t = 0,
i = S.timers;
for (Je = Date.now(); t < i.length; t++)(e = i[t])() || i[t] !== e || i.splice(t--, 1);
i.length || S.fx.stop(), Je = void 0
}, S.fx.timer = function(e) {
S.timers.push(e), S.fx.start()
}, S.fx.interval = 13, S.fx.start = function() {
Ze || (Ze = !0, ot())
}, S.fx.stop = function() {
Ze = null
}, S.fx.speeds = {
slow: 600,
fast: 200,
_default: 400
}, S.fn.delay = function(n, e) {
return n = S.fx && S.fx.speeds[n] || n, e = e || "fx", this.queue(e, function(e, t) {
var i = x.setTimeout(e, n);
t.stop = function() {
x.clearTimeout(i)
}
})
}, et = T.createElement("input"), tt = T.createElement("select").appendChild(T.createElement("option")), et.type = "checkbox", v.checkOn = "" !== et.value, v.optSelected = tt.selected, (et = T.createElement("input")).value = "t", et.type = "radio", v.radioValue = "t" === et.value;
var ct, dt = S.expr.attrHandle;
S.fn.extend({
attr: function(e, t) {
return z(this, S.attr, e, t, 1 < arguments.length)
},
removeAttr: function(e) {
return this.each(function() {
S.removeAttr(this, e)
})
}
}), S.extend({
attr: function(e, t, i) {
var n, o, a = e.nodeType;
if (3 !== a && 8 !== a && 2 !== a) return void 0 === e.getAttribute ? S.prop(e, t, i) : (1 === a && S.isXMLDoc(e) || (o = S.attrHooks[t.toLowerCase()] || (S.expr.match.bool.test(t) ? ct : void 0)), void 0 !== i ? null === i ? void S.removeAttr(e, t) : o && "set" in o && void 0 !== (n = o.set(e, i, t)) ? n : (e.setAttribute(t, i + ""), i) : o && "get" in o && null !== (n = o.get(e, t)) ? n : null == (n = S.find.attr(e, t)) ? void 0 : n)
},
attrHooks: {
type: {
set: function(e, t) {
if (!v.radioValue && "radio" === t && I(e, "input")) {
var i = e.value;
return e.setAttribute("type", t), i && (e.value = i), t
}
}
}
},
removeAttr: function(e, t) {
var i, n = 0,
o = t && t.match(B);
if (o && 1 === e.nodeType)
for (; i = o[n++];) e.removeAttribute(i)
}
}), ct = {
set: function(e, t, i) {
return !1 === t ? S.removeAttr(e, i) : e.setAttribute(i, i), i
}
}, S.each(S.expr.match.bool.source.match(/\w+/g), function(e, t) {
var s = dt[t] || S.find.attr;
dt[t] = function(e, t, i) {
var n, o, a = t.toLowerCase();
return i || (o = dt[a], dt[a] = n, n = null != s(e, t, i) ? a : null, dt[a] = o), n
}
});
var ut = /^(?:input|select|textarea|button)$/i,
mt = /^(?:a|area)$/i;
function pt(e) {
return (e.match(B) || []).join(" ")
}
function ht(e) {
return e.getAttribute && e.getAttribute("class") || ""
}
function ft(e) {
return Array.isArray(e) ? e : "string" == typeof e && e.match(B) || []
}
S.fn.extend({
prop: function(e, t) {
return z(this, S.prop, e, t, 1 < arguments.length)
},
removeProp: function(e) {
return this.each(function() {
delete this[S.propFix[e] || e]
})
}
}), S.extend({
prop: function(e, t, i) {
var n, o, a = e.nodeType;
if (3 !== a && 8 !== a && 2 !== a) return 1 === a && S.isXMLDoc(e) || (t = S.propFix[t] || t, o = S.propHooks[t]), void 0 !== i ? o && "set" in o && void 0 !== (n = o.set(e, i, t)) ? n : e[t] = i : o && "get" in o && null !== (n = o.get(e, t)) ? n : e[t]
},
propHooks: {
tabIndex: {
get: function(e) {
var t = S.find.attr(e, "tabindex");
return t ? parseInt(t, 10) : ut.test(e.nodeName) || mt.test(e.nodeName) && e.href ? 0 : -1
}
}
},
propFix: {
for: "htmlFor",
class: "className"
}
}), v.optSelected || (S.propHooks.selected = {
get: function(e) {
var t = e.parentNode;
return t && t.parentNode && t.parentNode.selectedIndex, null
},
set: function(e) {
var t = e.parentNode;
t && (t.selectedIndex, t.parentNode && t.parentNode.selectedIndex)
}
}), S.each(["tabIndex", "readOnly", "maxLength", "cellSpacing", "cellPadding", "rowSpan", "colSpan", "useMap", "frameBorder", "contentEditable"], function() {
S.propFix[this.toLowerCase()] = this
}), S.fn.extend({
addClass: function(t) {
var e, i, n, o, a, s, r, l = 0;
if (b(t)) return this.each(function(e) {
S(this).addClass(t.call(this, e, ht(this)))
});
if ((e = ft(t)).length)
for (; i = this[l++];)
if (o = ht(i), n = 1 === i.nodeType && " " + pt(o) + " ") {
for (s = 0; a = e[s++];) n.indexOf(" " + a + " ") < 0 && (n += a + " ");
o !== (r = pt(n)) && i.setAttribute("class", r)
}
return this
},
removeClass: function(t) {
var e, i, n, o, a, s, r, l = 0;
if (b(t)) return this.each(function(e) {
S(this).removeClass(t.call(this, e, ht(this)))
});
if (!arguments.length) return this.attr("class", "");
if ((e = ft(t)).length)
for (; i = this[l++];)
if (o = ht(i), n = 1 === i.nodeType && " " + pt(o) + " ") {
for (s = 0; a = e[s++];)
for (; - 1 < n.indexOf(" " + a + " ");) n = n.replace(" " + a + " ", " ");
o !== (r = pt(n)) && i.setAttribute("class", r)
}
return this
},
toggleClass: function(o, t) {
var a = typeof o,
s = "string" === a || Array.isArray(o);
return "boolean" == typeof t && s ? t ? this.addClass(o) : this.removeClass(o) : b(o) ? this.each(function(e) {
S(this).toggleClass(o.call(this, e, ht(this), t), t)
}) : this.each(function() {
var e, t, i, n;
if (s)
for (t = 0, i = S(this), n = ft(o); e = n[t++];) i.hasClass(e) ? i.removeClass(e) : i.addClass(e);
else void 0 !== o && "boolean" !== a || ((e = ht(this)) && X.set(this, "__className__", e), this.setAttribute && this.setAttribute("class", e || !1 === o ? "" : X.get(this, "__className__") || ""))
})
},
hasClass: function(e) {
var t, i, n = 0;
for (t = " " + e + " "; i = this[n++];)
if (1 === i.nodeType && -1 < (" " + pt(ht(i)) + " ").indexOf(t)) return !0;
return !1
}
});
var gt = /\r/g;
S.fn.extend({
val: function(i) {
var n, e, o, t = this[0];
return arguments.length ? (o = b(i), this.each(function(e) {
var t;
1 === this.nodeType && (null == (t = o ? i.call(this, e, S(this).val()) : i) ? t = "" : "number" == typeof t ? t += "" : Array.isArray(t) && (t = S.map(t, function(e) {
return null == e ? "" : e + ""
})), (n = S.valHooks[this.type] || S.valHooks[this.nodeName.toLowerCase()]) && "set" in n && void 0 !== n.set(this, t, "value") || (this.value = t))
})) : t ? (n = S.valHooks[t.type] || S.valHooks[t.nodeName.toLowerCase()]) && "get" in n && void 0 !== (e = n.get(t, "value")) ? e : "string" == typeof(e = t.value) ? e.replace(gt, "") : null == e ? "" : e : void 0
}
}), S.extend({
valHooks: {
option: {
get: function(e) {
var t = S.find.attr(e, "value");
return null != t ? t : pt(S.text(e))
}
},
select: {
get: function(e) {
var t, i, n, o = e.options,
a = e.selectedIndex,
s = "select-one" === e.type,
r = s ? null : [],
l = s ? a + 1 : o.length;
for (n = a < 0 ? l : s ? a : 0; n < l; n++)
if (((i = o[n]).selected || n === a) && !i.disabled && (!i.parentNode.disabled || !I(i.parentNode, "optgroup"))) {
if (t = S(i).val(), s) return t;
r.push(t)
}
return r
},
set: function(e, t) {
for (var i, n, o = e.options, a = S.makeArray(t), s = o.length; s--;)((n = o[s]).selected = -1 < S.inArray(S.valHooks.option.get(n), a)) && (i = !0);
return i || (e.selectedIndex = -1), a
}
}
}
}), S.each(["radio", "checkbox"], function() {
S.valHooks[this] = {
set: function(e, t) {
if (Array.isArray(t)) return e.checked = -1 < S.inArray(S(e).val(), t)
}
}, v.checkOn || (S.valHooks[this].get = function(e) {
return null === e.getAttribute("value") ? "on" : e.value
})
}), v.focusin = "onfocusin" in x;
var vt = /^(?:focusinfocus|focusoutblur)$/,
bt = function(e) {
e.stopPropagation()
};
S.extend(S.event, {
trigger: function(e, t, i, n) {
var o, a, s, r, l, c, d, u, m = [i || T],
p = g.call(e, "type") ? e.type : e,
h = g.call(e, "namespace") ? e.namespace.split(".") : [];
if (a = u = s = i = i || T, 3 !== i.nodeType && 8 !== i.nodeType && !vt.test(p + S.event.triggered) && (-1 < p.indexOf(".") && (p = (h = p.split(".")).shift(), h.sort()), l = p.indexOf(":") < 0 && "on" + p, (e = e[S.expando] ? e : new S.Event(p, "object" == typeof e && e)).isTrigger = n ? 2 : 3, e.namespace = h.join("."), e.rnamespace = e.namespace ? new RegExp("(^|\\.)" + h.join("\\.(?:.*\\.|)") + "(\\.|$)") : null, e.result = void 0, e.target || (e.target = i), t = null == t ? [e] : S.makeArray(t, [e]), d = S.event.special[p] || {}, n || !d.trigger || !1 !== d.trigger.apply(i, t))) {
if (!n && !d.noBubble && !y(i)) {
for (r = d.delegateType || p, vt.test(r + p) || (a = a.parentNode); a; a = a.parentNode) m.push(a), s = a;
s === (i.ownerDocument || T) && m.push(s.defaultView || s.parentWindow || x)
}
for (o = 0;
(a = m[o++]) && !e.isPropagationStopped();) u = a, e.type = 1 < o ? r : d.bindType || p, (c = (X.get(a, "events") || {})[e.type] && X.get(a, "handle")) && c.apply(a, t), (c = l && a[l]) && c.apply && Q(a) && (e.result = c.apply(a, t), !1 === e.result && e.preventDefault());
return e.type = p, n || e.isDefaultPrevented() || d._default && !1 !== d._default.apply(m.pop(), t) || !Q(i) || l && b(i[p]) && !y(i) && ((s = i[l]) && (i[l] = null), S.event.triggered = p, e.isPropagationStopped() && u.addEventListener(p, bt), i[p](), e.isPropagationStopped() && u.removeEventListener(p, bt), S.event.triggered = void 0, s && (i[l] = s)), e.result
}
},
simulate: function(e, t, i) {
var n = S.extend(new S.Event, i, {
type: e,
isSimulated: !0
});
S.event.trigger(n, null, t)
}
}), S.fn.extend({
trigger: function(e, t) {
return this.each(function() {
S.event.trigger(e, t, this)
})
},
triggerHandler: function(e, t) {
var i = this[0];
if (i) return S.event.trigger(e, t, i, !0)
}
}), v.focusin || S.each({
focus: "focusin",
blur: "focusout"
}, function(i, n) {
var o = function(e) {
S.event.simulate(n, e.target, S.event.fix(e))
};
S.event.special[n] = {
setup: function() {
var e = this.ownerDocument || this,
t = X.access(e, n);
t || e.addEventListener(i, o, !0), X.access(e, n, (t || 0) + 1)
},
teardown: function() {
var e = this.ownerDocument || this,
t = X.access(e, n) - 1;
t ? X.access(e, n, t) : (e.removeEventListener(i, o, !0), X.remove(e, n))
}
}
});
var yt = x.location,
wt = Date.now(),
kt = /\?/;
S.parseXML = function(e) {
var t;
if (!e || "string" != typeof e) return null;
try {
t = (new x.DOMParser).parseFromString(e, "text/xml")
} catch (e) {
t = void 0
}
return t && !t.getElementsByTagName("parsererror").length || S.error("Invalid XML: " + e), t
};
var Ct = /\[\]$/,
xt = /\r?\n/g,
Tt = /^(?:submit|button|image|reset|file)$/i,
St = /^(?:input|select|textarea|keygen)/i;
function Et(i, e, n, o) {
var t;
if (Array.isArray(e)) S.each(e, function(e, t) {
n || Ct.test(i) ? o(i, t) : Et(i + "[" + ("object" == typeof t && null != t ? e : "") + "]", t, n, o)
});
else if (n || "object" !== k(e)) o(i, e);
else
for (t in e) Et(i + "[" + t + "]", e[t], n, o)
}
S.param = function(e, t) {
var i, n = [],
o = function(e, t) {
var i = b(t) ? t() : t;
n[n.length] = encodeURIComponent(e) + "=" + encodeURIComponent(null == i ? "" : i)
};
if (Array.isArray(e) || e.jquery && !S.isPlainObject(e)) S.each(e, function() {
o(this.name, this.value)
});
else
for (i in e) Et(i, e[i], t, o);
return n.join("&")
}, S.fn.extend({
serialize: function() {
return S.param(this.serializeArray())
},
serializeArray: function() {
return this.map(function() {
var e = S.prop(this, "elements");
return e ? S.makeArray(e) : this
}).filter(function() {
var e = this.type;
return this.name && !S(this).is(":disabled") && St.test(this.nodeName) && !Tt.test(e) && (this.checked || !le.test(e))
}).map(function(e, t) {
var i = S(this).val();
return null == i ? null : Array.isArray(i) ? S.map(i, function(e) {
return {
name: t.name,
value: e.replace(xt, "\r\n")
}
}) : {
name: t.name,
value: i.replace(xt, "\r\n")
}
}).get()
}
});
var It = /%20/g,
$t = /#.*$/,
_t = /([?&])_=[^&]*/,
At = /^(.*?):[ \t]*([^\r\n]*)$/gm,
Mt = /^(?:GET|HEAD)$/,
Dt = /^\/\//,
Lt = {},
jt = {},
Bt = "*/".concat("*"),
Ot = T.createElement("a");
function Pt(a) {
return function(e, t) {
"string" != typeof e && (t = e, e = "*");
var i, n = 0,
o = e.toLowerCase().match(B) || [];
if (b(t))
for (; i = o[n++];) "+" === i[0] ? (i = i.slice(1) || "*", (a[i] = a[i] || []).unshift(t)) : (a[i] = a[i] || []).push(t)
}
}
function Nt(t, o, a, s) {
var r = {},
l = t === jt;
function c(e) {
var n;
return r[e] = !0, S.each(t[e] || [], function(e, t) {
var i = t(o, a, s);
return "string" != typeof i || l || r[i] ? l ? !(n = i) : void 0 : (o.dataTypes.unshift(i), c(i), !1)
}), n
}
return c(o.dataTypes[0]) || !r["*"] && c("*")
}
function Rt(e, t) {
var i, n, o = S.ajaxSettings.flatOptions || {};
for (i in t) void 0 !== t[i] && ((o[i] ? e : n || (n = {}))[i] = t[i]);
return n && S.extend(!0, e, n), e
}
Ot.href = yt.href, S.extend({
active: 0,
lastModified: {},
etag: {},
ajaxSettings: {
url: yt.href,
type: "GET",
isLocal: /^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(yt.protocol),
global: !0,
processData: !0,
async: !0,
contentType: "application/x-www-form-urlencoded; charset=UTF-8",
accepts: {
"*": Bt,
text: "text/plain",
html: "text/html",
xml: "application/xml, text/xml",
json: "application/json, text/javascript"
},
contents: {
xml: /\bxml\b/,
html: /\bhtml/,
json: /\bjson\b/
},
responseFields: {
xml: "responseXML",
text: "responseText",
json: "responseJSON"
},
converters: {
"* text": String,
"text html": !0,
"text json": JSON.parse,
"text xml": S.parseXML
},
flatOptions: {
url: !0,
context: !0
}
},
ajaxSetup: function(e, t) {
return t ? Rt(Rt(e, S.ajaxSettings), t) : Rt(S.ajaxSettings, e)
},
ajaxPrefilter: Pt(Lt),
ajaxTransport: Pt(jt),
ajax: function(e, t) {
"object" == typeof e && (t = e, e = void 0), t = t || {};
var d, u, m, i, p, n, h, f, o, a, g = S.ajaxSetup({}, t),
v = g.context || g,
b = g.context && (v.nodeType || v.jquery) ? S(v) : S.event,
y = S.Deferred(),
w = S.Callbacks("once memory"),
k = g.statusCode || {},
s = {},
r = {},
l = "canceled",
C = {
readyState: 0,
getResponseHeader: function(e) {
var t;
if (h) {
if (!i)
for (i = {}; t = At.exec(m);) i[t[1].toLowerCase()] = t[2];
t = i[e.toLowerCase()]
}
return null == t ? null : t
},
getAllResponseHeaders: function() {
return h ? m : null
},
setRequestHeader: function(e, t) {
return null == h && (e = r[e.toLowerCase()] = r[e.toLowerCase()] || e, s[e] = t), this
},
overrideMimeType: function(e) {
return null == h && (g.mimeType = e), this
},
statusCode: function(e) {
var t;
if (e)
if (h) C.always(e[C.status]);
else
for (t in e) k[t] = [k[t], e[t]];
return this
},
abort: function(e) {
var t = e || l;
return d && d.abort(t), c(0, t), this
}
};
if (y.promise(C), g.url = ((e || g.url || yt.href) + "").replace(Dt, yt.protocol + "//"), g.type = t.method || t.type || g.method || g.type, g.dataTypes = (g.dataType || "*").toLowerCase().match(B) || [""], null == g.crossDomain) {
n = T.createElement("a");
try {
n.href = g.url, n.href = n.href, g.crossDomain = Ot.protocol + "//" + Ot.host != n.protocol + "//" + n.host
} catch (e) {
g.crossDomain = !0
}
}
if (g.data && g.processData && "string" != typeof g.data && (g.data = S.param(g.data, g.traditional)), Nt(Lt, g, t, C), h) return C;
for (o in (f = S.event && g.global) && 0 == S.active++ && S.event.trigger("ajaxStart"), g.type = g.type.toUpperCase(), g.hasContent = !Mt.test(g.type), u = g.url.replace($t, ""), g.hasContent ? g.data && g.processData && 0 === (g.contentType || "").indexOf("application/x-www-form-urlencoded") && (g.data = g.data.replace(It, "+")) : (a = g.url.slice(u.length), g.data && (g.processData || "string" == typeof g.data) && (u += (kt.test(u) ? "&" : "?") + g.data, delete g.data), !1 === g.cache && (u = u.replace(_t, "$1"), a = (kt.test(u) ? "&" : "?") + "_=" + wt++ + a), g.url = u + a), g.ifModified && (S.lastModified[u] && C.setRequestHeader("If-Modified-Since", S.lastModified[u]), S.etag[u] && C.setRequestHeader("If-None-Match", S.etag[u])), (g.data && g.hasContent && !1 !== g.contentType || t.contentType) && C.setRequestHeader("Content-Type", g.contentType), C.setRequestHeader("Accept", g.dataTypes[0] && g.accepts[g.dataTypes[0]] ? g.accepts[g.dataTypes[0]] + ("*" !== g.dataTypes[0] ? ", " + Bt + "; q=0.01" : "") : g.accepts["*"]), g.headers) C.setRequestHeader(o, g.headers[o]);
if (g.beforeSend && (!1 === g.beforeSend.call(v, C, g) || h)) return C.abort();
if (l = "abort", w.add(g.complete), C.done(g.success), C.fail(g.error), d = Nt(jt, g, t, C)) {
if (C.readyState = 1, f && b.trigger("ajaxSend", [C, g]), h) return C;
g.async && 0 < g.timeout && (p = x.setTimeout(function() {
C.abort("timeout")
}, g.timeout));
try {
h = !1, d.send(s, c)
} catch (e) {
if (h) throw e;
c(-1, e)
}
} else c(-1, "No Transport");
function c(e, t, i, n) {
var o, a, s, r, l, c = t;
h || (h = !0, p && x.clearTimeout(p), d = void 0, m = n || "", C.readyState = 0 < e ? 4 : 0, o = 200 <= e && e < 300 || 304 === e, i && (r = function(e, t, i) {
for (var n, o, a, s, r = e.contents, l = e.dataTypes;
"*" === l[0];) l.shift(), void 0 === n && (n = e.mimeType || t.getResponseHeader("Content-Type"));
if (n)
for (o in r)
if (r[o] && r[o].test(n)) {
l.unshift(o);
break
}
if (l[0] in i) a = l[0];
else {
for (o in i) {
if (!l[0] || e.converters[o + " " + l[0]]) {
a = o;
break
}
s || (s = o)
}
a = a || s
}
if (a) return a !== l[0] && l.unshift(a), i[a]
}(g, C, i)), r = function(e, t, i, n) {
var o, a, s, r, l, c = {},
d = e.dataTypes.slice();
if (d[1])
for (s in e.converters) c[s.toLowerCase()] = e.converters[s];
for (a = d.shift(); a;)
if (e.responseFields[a] && (i[e.responseFields[a]] = t), !l && n && e.dataFilter && (t = e.dataFilter(t, e.dataType)), l = a, a = d.shift())
if ("*" === a) a = l;
else if ("*" !== l && l !== a) {
if (!(s = c[l + " " + a] || c["* " + a]))
for (o in c)
if ((r = o.split(" "))[1] === a && (s = c[l + " " + r[0]] || c["* " + r[0]])) {
!0 === s ? s = c[o] : !0 !== c[o] && (a = r[0], d.unshift(r[1]));
break
}
if (!0 !== s)
if (s && e.throws) t = s(t);
else try {
t = s(t)
} catch (e) {
return {
state: "parsererror",
error: s ? e : "No conversion from " + l + " to " + a
}
}
}
return {
state: "success",
data: t
}
}(g, r, C, o), o ? (g.ifModified && ((l = C.getResponseHeader("Last-Modified")) && (S.lastModified[u] = l), (l = C.getResponseHeader("etag")) && (S.etag[u] = l)), 204 === e || "HEAD" === g.type ? c = "nocontent" : 304 === e ? c = "notmodified" : (c = r.state, a = r.data, o = !(s = r.error))) : (s = c, !e && c || (c = "error", e < 0 && (e = 0))), C.status = e, C.statusText = (t || c) + "", o ? y.resolveWith(v, [a, c, C]) : y.rejectWith(v, [C, c, s]), C.statusCode(k), k = void 0, f && b.trigger(o ? "ajaxSuccess" : "ajaxError", [C, g, o ? a : s]), w.fireWith(v, [C, c]), f && (b.trigger("ajaxComplete", [C, g]), --S.active || S.event.trigger("ajaxStop")))
}
return C
},
getJSON: function(e, t, i) {
return S.get(e, t, i, "json")
},
getScript: function(e, t) {
return S.get(e, void 0, t, "script")
}
}), S.each(["get", "post"], function(e, o) {
S[o] = function(e, t, i, n) {
return b(t) && (n = n || i, i = t, t = void 0), S.ajax(S.extend({
url: e,
type: o,
dataType: n,
data: t,
success: i
}, S.isPlainObject(e) && e))
}
}), S._evalUrl = function(e) {
return S.ajax({
url: e,
type: "GET",
dataType: "script",
cache: !0,
async: !1,
global: !1,
throws: !0
})
}, S.fn.extend({
wrapAll: function(e) {
var t;
return this[0] && (b(e) && (e = e.call(this[0])), t = S(e, this[0].ownerDocument).eq(0).clone(!0), this[0].parentNode && t.insertBefore(this[0]), t.map(function() {
for (var e = this; e.firstElementChild;) e = e.firstElementChild;
return e
}).append(this)), this
},
wrapInner: function(i) {
return b(i) ? this.each(function(e) {
S(this).wrapInner(i.call(this, e))
}) : this.each(function() {
var e = S(this),
t = e.contents();
t.length ? t.wrapAll(i) : e.append(i)
})
},
wrap: function(t) {
var i = b(t);
return this.each(function(e) {
S(this).wrapAll(i ? t.call(this, e) : t)
})
},
unwrap: function(e) {
return this.parent(e).not("body").each(function() {
S(this).replaceWith(this.childNodes)
}), this
}
}), S.expr.pseudos.hidden = function(e) {
return !S.expr.pseudos.visible(e)
}, S.expr.pseudos.visible = function(e) {
return !!(e.offsetWidth || e.offsetHeight || e.getClientRects().length)
}, S.ajaxSettings.xhr = function() {
try {
return new x.XMLHttpRequest
} catch (e) {}
};
var qt = {
0: 200,
1223: 204
},
Ht = S.ajaxSettings.xhr();
v.cors = !!Ht && "withCredentials" in Ht, v.ajax = Ht = !!Ht, S.ajaxTransport(function(o) {
var a, s;
if (v.cors || Ht && !o.crossDomain) return {
send: function(e, t) {
var i, n = o.xhr();
if (n.open(o.type, o.url, o.async, o.username, o.password), o.xhrFields)
for (i in o.xhrFields) n[i] = o.xhrFields[i];
for (i in o.mimeType && n.overrideMimeType && n.overrideMimeType(o.mimeType), o.crossDomain || e["X-Requested-With"] || (e["X-Requested-With"] = "XMLHttpRequest"), e) n.setRequestHeader(i, e[i]);
a = function(e) {
return function() {
a && (a = s = n.onload = n.onerror = n.onabort = n.ontimeout = n.onreadystatechange = null, "abort" === e ? n.abort() : "error" === e ? "number" != typeof n.status ? t(0, "error") : t(n.status, n.statusText) : t(qt[n.status] || n.status, n.statusText, "text" !== (n.responseType || "text") || "string" != typeof n.responseText ? {
binary: n.response
} : {
text: n.responseText
}, n.getAllResponseHeaders()))
}
}, n.onload = a(), s = n.onerror = n.ontimeout = a("error"), void 0 !== n.onabort ? n.onabort = s : n.onreadystatechange = function() {
4 === n.readyState && x.setTimeout(function() {
a && s()
})
}, a = a("abort");
try {
n.send(o.hasContent && o.data || null)
} catch (e) {
if (a) throw e
}
},
abort: function() {
a && a()
}
}
}), S.ajaxPrefilter(function(e) {
e.crossDomain && (e.contents.script = !1)
}), S.ajaxSetup({
accepts: {
script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
},
contents: {
script: /\b(?:java|ecma)script\b/
},
converters: {
"text script": function(e) {
return S.globalEval(e), e
}
}
}), S.ajaxPrefilter("script", function(e) {
void 0 === e.cache && (e.cache = !1), e.crossDomain && (e.type = "GET")
}), S.ajaxTransport("script", function(i) {
var n, o;
if (i.crossDomain) return {
send: function(e, t) {
n = S("<script>").prop({
charset: i.scriptCharset,
src: i.url
}).on("load error", o = function(e) {
n.remove(), o = null, e && t("error" === e.type ? 404 : 200, e.type)
}), T.head.appendChild(n[0])
},
abort: function() {
o && o()
}
}
});
var zt, Ut = [],
Wt = /(=)\?(?=&|$)|\?\?/;
S.ajaxSetup({
jsonp: "callback",
jsonpCallback: function() {
var e = Ut.pop() || S.expando + "_" + wt++;
return this[e] = !0, e
}
}), S.ajaxPrefilter("json jsonp", function(e, t, i) {
var n, o, a, s = !1 !== e.jsonp && (Wt.test(e.url) ? "url" : "string" == typeof e.data && 0 === (e.contentType || "").indexOf("application/x-www-form-urlencoded") && Wt.test(e.data) && "data");
if (s || "jsonp" === e.dataTypes[0]) return n = e.jsonpCallback = b(e.jsonpCallback) ? e.jsonpCallback() : e.jsonpCallback, s ? e[s] = e[s].replace(Wt, "$1" + n) : !1 !== e.jsonp && (e.url += (kt.test(e.url) ? "&" : "?") + e.jsonp + "=" + n), e.converters["script json"] = function() {
return a || S.error(n + " was not called"), a[0]
}, e.dataTypes[0] = "json", o = x[n], x[n] = function() {
a = arguments
}, i.always(function() {
void 0 === o ? S(x).removeProp(n) : x[n] = o, e[n] && (e.jsonpCallback = t.jsonpCallback, Ut.push(n)), a && b(o) && o(a[0]), a = o = void 0
}), "script"
}), v.createHTMLDocument = ((zt = T.implementation.createHTMLDocument("").body).innerHTML = "<form></form><form></form>", 2 === zt.childNodes.length), S.parseHTML = function(e, t, i) {
return "string" != typeof e ? [] : ("boolean" == typeof t && (i = t, t = !1), t || (v.createHTMLDocument ? ((n = (t = T.implementation.createHTMLDocument("")).createElement("base")).href = T.location.href, t.head.appendChild(n)) : t = T), a = !i && [], (o = $.exec(e)) ? [t.createElement(o[1])] : (o = ve([e], t, a), a && a.length && S(a).remove(), S.merge([], o.childNodes)));
var n, o, a
}, S.fn.load = function(e, t, i) {
var n, o, a, s = this,
r = e.indexOf(" ");
return -1 < r && (n = pt(e.slice(r)), e = e.slice(0, r)), b(t) ? (i = t, t = void 0) : t && "object" == typeof t && (o = "POST"), 0 < s.length && S.ajax({
url: e,
type: o || "GET",
dataType: "html",
data: t
}).done(function(e) {
a = arguments, s.html(n ? S("<div>").append(S.parseHTML(e)).find(n) : e)
}).always(i && function(e, t) {
s.each(function() {
i.apply(this, a || [e.responseText, t, e])
})
}), this
}, S.each(["ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend"], function(e, t) {
S.fn[t] = function(e) {
return this.on(t, e)
}
}), S.expr.pseudos.animated = function(t) {
return S.grep(S.timers, function(e) {
return t === e.elem
}).length
}, S.offset = {
setOffset: function(e, t, i) {
var n, o, a, s, r, l, c = S.css(e, "position"),
d = S(e),
u = {};
"static" === c && (e.style.position = "relative"), r = d.offset(), a = S.css(e, "top"), l = S.css(e, "left"), o = ("absolute" === c || "fixed" === c) && -1 < (a + l).indexOf("auto") ? (s = (n = d.position()).top, n.left) : (s = parseFloat(a) || 0, parseFloat(l) || 0), b(t) && (t = t.call(e, i, S.extend({}, r))), null != t.top && (u.top = t.top - r.top + s), null != t.left && (u.left = t.left - r.left + o), "using" in t ? t.using.call(e, u) : d.css(u)
}
}, S.fn.extend({
offset: function(t) {
if (arguments.length) return void 0 === t ? this : this.each(function(e) {
S.offset.setOffset(this, t, e)
});
var e, i, n = this[0];
return n ? n.getClientRects().length ? (e = n.getBoundingClientRect(), i = n.ownerDocument.defaultView, {
top: e.top + i.pageYOffset,
left: e.left + i.pageXOffset
}) : {
top: 0,
left: 0
} : void 0
},
position: function() {
if (this[0]) {
var e, t, i, n = this[0],
o = {
top: 0,
left: 0
};
if ("fixed" === S.css(n, "position")) t = n.getBoundingClientRect();
else {
for (t = this.offset(), i = n.ownerDocument, e = n.offsetParent || i.documentElement; e && (e === i.body || e === i.documentElement) && "static" === S.css(e, "position");) e = e.parentNode;
e && e !== n && 1 === e.nodeType && ((o = S(e).offset()).top += S.css(e, "borderTopWidth", !0), o.left += S.css(e, "borderLeftWidth", !0))
}
return {
top: t.top - o.top - S.css(n, "marginTop", !0),
left: t.left - o.left - S.css(n, "marginLeft", !0)
}
}
},
offsetParent: function() {
return this.map(function() {
for (var e = this.offsetParent; e && "static" === S.css(e, "position");) e = e.offsetParent;
return e || be
})
}
}), S.each({
scrollLeft: "pageXOffset",
scrollTop: "pageYOffset"
}, function(t, o) {
var a = "pageYOffset" === o;
S.fn[t] = function(e) {
return z(this, function(e, t, i) {
var n;
if (y(e) ? n = e : 9 === e.nodeType && (n = e.defaultView), void 0 === i) return n ? n[o] : e[t];
n ? n.scrollTo(a ? n.pageXOffset : i, a ? i : n.pageYOffset) : e[t] = i
}, t, e, arguments.length)
}
}), S.each(["top", "left"], function(e, i) {
S.cssHooks[i] = qe(v.pixelPosition, function(e, t) {
if (t) return t = Re(e, i), Oe.test(t) ? S(e).position()[i] + "px" : t
})
}), S.each({
Height: "height",
Width: "width"
}, function(s, r) {
S.each({
padding: "inner" + s,
content: r,
"": "outer" + s
}, function(n, a) {
S.fn[a] = function(e, t) {
var i = arguments.length && (n || "boolean" != typeof e),
o = n || (!0 === e || !0 === t ? "margin" : "border");
return z(this, function(e, t, i) {
var n;
return y(e) ? 0 === a.indexOf("outer") ? e["inner" + s] : e.document.documentElement["client" + s] : 9 === e.nodeType ? (n = e.documentElement, Math.max(e.body["scroll" + s], n["scroll" + s], e.body["offset" + s], n["offset" + s], n["client" + s])) : void 0 === i ? S.css(e, t, o) : S.style(e, t, i, o)
}, r, i ? e : void 0, i)
}
})
}), S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "), function(e, i) {
S.fn[i] = function(e, t) {
return 0 < arguments.length ? this.on(i, null, e, t) : this.trigger(i)
}
}), S.fn.extend({
hover: function(e, t) {
return this.mouseenter(e).mouseleave(t || e)
}
}), S.fn.extend({
bind: function(e, t, i) {
return this.on(e, null, t, i)
},
unbind: function(e, t) {
return this.off(e, null, t)
},
delegate: function(e, t, i, n) {
return this.on(t, e, i, n)
},
undelegate: function(e, t, i) {
return 1 === arguments.length ? this.off(e, "**") : this.off(t, e || "**", i)
}
}), S.proxy = function(e, t) {
var i, n, o;
if ("string" == typeof t && (i = e[t], t = e, e = i), b(e)) return n = r.call(arguments, 2), (o = function() {
return e.apply(t || this, n.concat(r.call(arguments)))
}).guid = e.guid = e.guid || S.guid++, o
}, S.holdReady = function(e) {
e ? S.readyWait++ : S.ready(!0)
}, S.isArray = Array.isArray, S.parseJSON = JSON.parse, S.nodeName = I, S.isFunction = b, S.isWindow = y, S.camelCase = V, S.type = k, S.now = Date.now, S.isNumeric = function(e) {
var t = S.type(e);
return ("number" === t || "string" === t) && !isNaN(e - parseFloat(e))
}, "function" == typeof define && define.amd && define("jquery", [], function() {
return S
});
var Ft = x.jQuery,
Vt = x.$;
return S.noConflict = function(e) {
return x.$ === S && (x.$ = Vt), e && x.jQuery === S && (x.jQuery = Ft), S
}, e || (x.jQuery = x.$ = S), S
}),
function(r) {
function l(e) {
return r.expr.filters.visible(e) && !r(e).parents().addBack().filter(function() {
return "hidden" === r.css(this, "visibility")
}).length
}
r.extend(r.expr[":"], {
focusable: function(e) {
return t = e, i = !isNaN(r.attr(e, "tabindex")), "area" === (s = t.nodeName.toLowerCase()) ? (o = (n = t.parentNode).name, !(!t.href || !o || "map" !== n.nodeName.toLowerCase()) && !!(a = r("img[usemap=#" + o + "]")[0]) && l(a)) : (/input|select|textarea|button|object/.test(s) ? !t.disabled : "a" === s && t.href || i) && l(t);
var t, i, n, o, a, s
}
})
}(jQuery),
function(e) {
var t = "na";
try {
t = navigator.connection.effectiveType
} catch (e) {}
t = "ibm-cxtype-" + t, e(document.documentElement).addClass("js ibm-v18 " + t), Modernizr.addTest("hires", function() {
return 1 < (window.devicePixelRatio || window.screen.deviceXDPI / window.screen.logicalXDPI || 1)
})
}(jQuery),
function(r) {
r.browserTest = function(e, t) {
var a = "unknown",
s = function(e, t) {
for (var i = 0; i < t.length; i += 1) e = e.replace(t[i][0], t[i][1]);
return e
},
i = function(e, t, i, n) {
var o = {
name: s((t.exec(e) || [a, a])[1], i)
};
return o[o.name] = !0, o.version = (n.exec(e) || ["X", "X", "X", "X"])[3], o.name.match(/safari/) && 400 < o.version && (o.version = "2.0"), "presto" === o.name && (o.version = 9.27 < r.browser.version ? "futhark" : "linear_b"), o.versionNumber = parseFloat(o.version, 10) || 0, o.versionX = "X" !== o.version ? (o.version + "").substr(0, 1) : "X", o.className = o.name + o.versionX, o
};
e = (e.match(/Opera|Navigator|Minefield|KHTML|Chrome/) ? s(e, [
[/(Firefox|MSIE|KHTML,\slike\sGecko|Konqueror)/, ""],
["Chrome Safari", "Chrome"],
["KHTML", "Konqueror"],
["Minefield", "Firefox"],
["Navigator", "Netscape"]
]) : e).toLowerCase(), r.browser = r.extend(t ? {} : r.browser, i(e, /(camino|chrome|firefox|netscape|konqueror|lynx|msie|opera|safari)/, [], /(camino|chrome|firefox|netscape|netscape6|opera|version|konqueror|lynx|msie|safari)(\/|\s)([a-z0-9\.\+]*?)(\;|dev|rel|\s|$)/)), r.layout = i(e, /(gecko|konqueror|msie|opera|webkit)/, [
["konqueror", "khtml"],
["msie", "trident"],
["opera", "presto"]
], /(applewebkit|rv|konqueror|msie)(\:|\/|\s)([a-z0-9\.]*?)(\;|\)|\s)/), r.os = {
name: (/(win|mac|linux|sunos|solaris|iphone)/.exec(navigator.platform.toLowerCase()) || [a])[0].replace("sunos", "solaris")
}, t || r("html").addClass([r.os.name, r.browser.name, r.browser.className, r.layout.name, r.layout.className].join(" "))
}, r.browserTest(navigator.userAgent)
}(jQuery),
function(e) {
"use strict";
"function" == typeof define && define.amd ? define(["jquery"], e) : "undefined" != typeof exports ? module.exports = e(require("jquery")) : e(jQuery)
}(function(c) {
"use strict";
var o, s = window.Slick || {};
o = 0, (s = function(e, t) {
var i, n = this;
n.defaults = {
accessibility: !0,
adaptiveHeight: !1,
appendArrows: c(e),
appendDots: c(e),
arrows: !0,
asNavFor: null,
prevArrow: '<button type="button" data-role="none" class="slick-prev" aria-label="Previous" tabindex="0" role="button">Previous</button>',
nextArrow: '<button type="button" data-role="none" class="slick-next" aria-label="Next" tabindex="0" role="button">Next</button>',
autoplay: !1,
autoplaySpeed: 3e3,
centerMode: !1,
centerPadding: "50px",
cssEase: "ease",
customPaging: function(e, t) {
return c('<button type="button" data-role="none" role="button" tabindex="0" />').text(t + 1)
},
dots: !1,
dotsClass: "slick-dots",
draggable: !0,
easing: "linear",
edgeFriction: .35,
fade: !1,
focusOnSelect: !1,
infinite: !0,
initialSlide: 0,
lazyLoad: "ondemand",
mobileFirst: !1,
pauseOnHover: !0,
pauseOnFocus: !0,
pauseOnDotsHover: !1,
respondTo: "window",
responsive: null,
rows: 1,
rtl: !1,
slide: "",
slidesPerRow: 1,
slidesToShow: 1,
slidesToScroll: 1,
speed: 500,
swipe: !0,
swipeToSlide: !1,
touchMove: !0,
touchThreshold: 5,
useCSS: !0,
useTransform: !0,
variableWidth: !1,
vertical: !1,
verticalSwiping: !1,
waitForAnimate: !0,
zIndex: 1e3
}, n.initials = {
animating: !1,
dragging: !1,
autoPlayTimer: null,
currentDirection: 0,
currentLeft: null,
currentSlide: 0,
direction: 1,
$dots: null,
listWidth: null,
listHeight: null,
loadIndex: 0,
$nextArrow: null,
$prevArrow: null,
slideCount: null,
slideWidth: null,
$slideTrack: null,
$slides: null,
sliding: !1,
slideOffset: 0,
swipeLeft: null,
$list: null,
touchObject: {},
transformsEnabled: !1,
unslicked: !1
}, c.extend(n, n.initials), n.activeBreakpoint = null, n.animType = null, n.animProp = null, n.breakpoints = [], n.breakpointSettings = [], n.cssTransitions = !1, n.focussed = !1, n.interrupted = !1, n.hidden = "hidden", n.paused = !0, n.positionProp = null, n.respondTo = null, n.rowCount = 1, n.shouldClick = !0, n.$slider = c(e), n.$slidesCache = null, n.transformType = null, n.transitionType = null, n.visibilityChange = "visibilitychange", n.windowWidth = 0, n.windowTimer = null, i = c(e).data("slick") || {}, n.options = c.extend({}, n.defaults, t, i), n.currentSlide = n.options.initialSlide, n.originalSettings = n.options, void 0 !== document.mozHidden ? (n.hidden = "mozHidden", n.visibilityChange = "mozvisibilitychange") : void 0 !== document.webkitHidden && (n.hidden = "webkitHidden", n.visibilityChange = "webkitvisibilitychange"), n.autoPlay = c.proxy(n.autoPlay, n), n.autoPlayClear = c.proxy(n.autoPlayClear, n), n.autoPlayIterator = c.proxy(n.autoPlayIterator, n), n.changeSlide = c.proxy(n.changeSlide, n), n.clickHandler = c.proxy(n.clickHandler, n), n.selectHandler = c.proxy(n.selectHandler, n), n.setPosition = c.proxy(n.setPosition, n), n.swipeHandler = c.proxy(n.swipeHandler, n), n.dragHandler = c.proxy(n.dragHandler, n), n.keyHandler = c.proxy(n.keyHandler, n), n.instanceUid = o++, n.htmlExpr = /^(?:\s*(<[\w\W]+>)[^>]*)$/, n.registerBreakpoints(), n.init(!0)
}).prototype.activateADA = function() {
this.$slideTrack.find(".slick-active").attr({
"aria-hidden": "false"
}).find("a, input, button, select").attr({
tabindex: "0"
})
}, s.prototype.addSlide = s.prototype.slickAdd = function(e, t, i) {
var n = this;
if ("boolean" == typeof t) i = t, t = null;
else if (t < 0 || t >= n.slideCount) return !1;
n.unload(), "number" == typeof t ? 0 === t && 0 === n.$slides.length ? c(e).appendTo(n.$slideTrack) : i ? c(e).insertBefore(n.$slides.eq(t)) : c(e).insertAfter(n.$slides.eq(t)) : !0 === i ? c(e).prependTo(n.$slideTrack) : c(e).appendTo(n.$slideTrack), n.$slides = n.$slideTrack.children(this.options.slide), n.$slideTrack.children(this.options.slide).detach(), n.$slideTrack.append(n.$slides), n.$slides.each(function(e, t) {
c(t).attr("data-slick-index", e)
}), n.$slidesCache = n.$slides, n.reinit()
}, s.prototype.animateHeight = function() {
var e = this;
if (1 === e.options.slidesToShow && !0 === e.options.adaptiveHeight && !1 === e.options.vertical) {
var t = e.$slides.eq(e.currentSlide).outerHeight(!0);
e.$list.animate({
height: t
}, e.options.speed)
}
}, s.prototype.animateSlide = function(e, t) {
var i = {},
n = this;
n.animateHeight(), !0 === n.options.rtl && !1 === n.options.vertical && (e = -e), !1 === n.transformsEnabled ? !1 === n.options.vertical ? n.$slideTrack.animate({
left: e
}, n.options.speed, n.options.easing, t) : n.$slideTrack.animate({
top: e
}, n.options.speed, n.options.easing, t) : !1 === n.cssTransitions ? (!0 === n.options.rtl && (n.currentLeft = -n.currentLeft), c({
animStart: n.currentLeft
}).animate({
animStart: e
}, {
duration: n.options.speed,
easing: n.options.easing,
step: function(e) {
e = Math.ceil(e), !1 === n.options.vertical ? i[n.animType] = "translate(" + e + "px, 0px)" : i[n.animType] = "translate(0px," + e + "px)", n.$slideTrack.css(i)
},
complete: function() {
t && t.call()
}
})) : (n.applyTransition(), e = Math.ceil(e), !1 === n.options.vertical ? i[n.animType] = "translate3d(" + e + "px, 0px, 0px)" : i[n.animType] = "translate3d(0px," + e + "px, 0px)", n.$slideTrack.css(i), t && setTimeout(function() {
n.disableTransition(), t.call()
}, n.options.speed))
}, s.prototype.getNavTarget = function() {
var e = this.options.asNavFor;
return e && null !== e && (e = c(e).not(this.$slider)), e
}, s.prototype.asNavFor = function(t) {
var e = this.getNavTarget();
null !== e && "object" == typeof e && e.each(function() {
var e = c(this).slick("getSlick");
e.unslicked || e.slideHandler(t, !0)
})
}, s.prototype.applyTransition = function(e) {
var t = this,
i = {};
!1 === t.options.fade ? i[t.transitionType] = t.transformType + " " + t.options.speed + "ms " + t.options.cssEase : i[t.transitionType] = "opacity " + t.options.speed + "ms " + t.options.cssEase, !1 === t.options.fade ? t.$slideTrack.css(i) : t.$slides.eq(e).css(i)
}, s.prototype.autoPlay = function() {
var e = this;
e.autoPlayClear(), e.slideCount > e.options.slidesToShow && (e.autoPlayTimer = setInterval(e.autoPlayIterator, e.options.autoplaySpeed))
}, s.prototype.autoPlayClear = function() {
this.autoPlayTimer && clearInterval(this.autoPlayTimer)
}, s.prototype.autoPlayIterator = function() {
var e = this,
t = e.currentSlide + e.options.slidesToScroll;
e.paused || e.interrupted || e.focussed || (!1 === e.options.infinite && (1 === e.direction && e.currentSlide + 1 === e.slideCount - 1 ? e.direction = 0 : 0 === e.direction && (t = e.currentSlide - e.options.slidesToScroll, e.currentSlide - 1 == 0 && (e.direction = 1))), e.slideHandler(t))
}, s.prototype.buildArrows = function() {
var e = this;
!0 === e.options.arrows && (e.$prevArrow = c(e.options.prevArrow).addClass("slick-arrow"), e.$nextArrow = c(e.options.nextArrow).addClass("slick-arrow"), e.slideCount > e.options.slidesToShow ? (e.$prevArrow.removeClass("slick-hidden").removeAttr("aria-hidden tabindex"), e.$nextArrow.removeClass("slick-hidden").removeAttr("aria-hidden tabindex"), e.htmlExpr.test(e.options.prevArrow) && e.$prevArrow.prependTo(e.options.appendArrows), e.htmlExpr.test(e.options.nextArrow) && e.$nextArrow.appendTo(e.options.appendArrows), !0 !== e.options.infinite && e.$prevArrow.addClass("slick-disabled").attr("aria-disabled", "true")) : e.$prevArrow.add(e.$nextArrow).addClass("slick-hidden").attr({
"aria-disabled": "true",
tabindex: "-1"
}))
}, s.prototype.buildDots = function() {
var e, t, i = this;
if (!0 === i.options.dots && i.slideCount > i.options.slidesToShow) {
for (i.$slider.addClass("slick-dotted"), t = c("<ul />").addClass(i.options.dotsClass), e = 0; e <= i.getDotCount(); e += 1) t.append(c("<li />").append(i.options.customPaging.call(this, i, e)));
i.$dots = t.appendTo(i.options.appendDots), i.$dots.find("li").first().addClass("slick-active").attr("aria-hidden", "false")
}
}, s.prototype.buildOut = function() {
var e = this;
e.$slides = e.$slider.children(e.options.slide + ":not(.slick-cloned)").addClass("slick-slide"), e.slideCount = e.$slides.length, e.$slides.each(function(e, t) {
c(t).attr("data-slick-index", e).data("originalStyling", c(t).attr("style") || "")
}), e.$slider.addClass("slick-slider"), e.$slideTrack = 0 === e.slideCount ? c('<div class="slick-track"/>').appendTo(e.$slider) : e.$slides.wrapAll('<div class="slick-track"/>').parent(), e.$list = e.$slideTrack.wrap('<div aria-live="polite" class="slick-list"/>').parent(), e.$slideTrack.css("opacity", 0), (!0 === e.options.centerMode || !0 === e.options.swipeToSlide) && (e.options.slidesToScroll = 1), c("img[data-lazy]", e.$slider).not("[src]").addClass("slick-loading"), e.setupInfinite(), e.buildArrows(), e.buildDots(), e.updateDots(), e.setSlideClasses("number" == typeof e.currentSlide ? e.currentSlide : 0), !0 === e.options.draggable && e.$list.addClass("draggable")
}, s.prototype.buildRows = function() {
var e, t, i, n, o, a, s, r = this;
if (n = document.createDocumentFragment(), a = r.$slider.children(), 1 < r.options.rows) {
for (s = r.options.slidesPerRow * r.options.rows, o = Math.ceil(a.length / s), e = 0; e < o; e++) {
var l = document.createElement("div");
for (t = 0; t < r.options.rows; t++) {
var c = document.createElement("div");
for (i = 0; i < r.options.slidesPerRow; i++) {
var d = e * s + (t * r.options.slidesPerRow + i);
a.get(d) && c.appendChild(a.get(d))
}
l.appendChild(c)
}
n.appendChild(l)
}
r.$slider.empty().append(n), r.$slider.children().children().children().css({
width: 100 / r.options.slidesPerRow + "%",
display: "inline-block"
})
}
}, s.prototype.checkResponsive = function(e, t) {
var i, n, o, a = this,
s = !1,
r = a.$slider.width(),
l = window.innerWidth || c(window).width();
if ("window" === a.respondTo ? o = l : "slider" === a.respondTo ? o = r : "min" === a.respondTo && (o = Math.min(l, r)), a.options.responsive && a.options.responsive.length && null !== a.options.responsive) {
for (i in n = null, a.breakpoints) a.breakpoints.hasOwnProperty(i) && (!1 === a.originalSettings.mobileFirst ? o < a.breakpoints[i] && (n = a.breakpoints[i]) : o > a.breakpoints[i] && (n = a.breakpoints[i]));
null !== n ? null !== a.activeBreakpoint ? (n !== a.activeBreakpoint || t) && (a.activeBreakpoint = n, "unslick" === a.breakpointSettings[n] ? a.unslick(n) : (a.options = c.extend({}, a.originalSettings, a.breakpointSettings[n]), !0 === e && (a.currentSlide = a.options.initialSlide), a.refresh(e)), s = n) : (a.activeBreakpoint = n, "unslick" === a.breakpointSettings[n] ? a.unslick(n) : (a.options = c.extend({}, a.originalSettings, a.breakpointSettings[n]), !0 === e && (a.currentSlide = a.options.initialSlide), a.refresh(e)), s = n) : null !== a.activeBreakpoint && (a.activeBreakpoint = null, a.options = a.originalSettings, !0 === e && (a.currentSlide = a.options.initialSlide), a.refresh(e), s = n), e || !1 === s || a.$slider.trigger("breakpoint", [a, s])
}
}, s.prototype.changeSlide = function(e, t) {
var i, n, o = this,
a = c(e.currentTarget);
switch (a.is("a") && e.preventDefault(), a.is("li") || (a = a.closest("li")), i = o.slideCount % o.options.slidesToScroll != 0 ? 0 : (o.slideCount - o.currentSlide) % o.options.slidesToScroll, e.data.message) {
case "previous":
n = 0 === i ? o.options.slidesToScroll : o.options.slidesToShow - i, o.slideCount > o.options.slidesToShow && o.slideHandler(o.currentSlide - n, !1, t);
break;
case "next":
n = 0 === i ? o.options.slidesToScroll : i, o.slideCount > o.options.slidesToShow && o.slideHandler(o.currentSlide + n, !1, t);
break;
case "index":
var s = 0 === e.data.index ? 0 : e.data.index || a.index() * o.options.slidesToScroll;
o.slideHandler(o.checkNavigable(s), !1, t), a.children().trigger("focus");
break;
default:
return
}
}, s.prototype.checkNavigable = function(e) {
var t, i;
if (i = 0, e > (t = this.getNavigableIndexes())[t.length - 1]) e = t[t.length - 1];
else
for (var n in t) {
if (e < t[n]) {
e = i;
break
}
i = t[n]
}
return e
}, s.prototype.cleanUpEvents = function() {
var e = this;
e.options.dots && null !== e.$dots && c("li", e.$dots).off("click.slick", e.changeSlide).off("mouseenter.slick", c.proxy(e.interrupt, e, !0)).off("mouseleave.slick", c.proxy(e.interrupt, e, !1)), e.$slider.off("focus.slick blur.slick"), !0 === e.options.arrows && e.slideCount > e.options.slidesToShow && (e.$prevArrow && e.$prevArrow.off("click.slick", e.changeSlide), e.$nextArrow && e.$nextArrow.off("click.slick", e.changeSlide)), e.$list.off("touchstart.slick mousedown.slick", e.swipeHandler), e.$list.off("touchmove.slick mousemove.slick", e.swipeHandler), e.$list.off("touchend.slick mouseup.slick", e.swipeHandler), e.$list.off("touchcancel.slick mouseleave.slick", e.swipeHandler), e.$list.off("click.slick", e.clickHandler), c(document).off(e.visibilityChange, e.visibility), e.cleanUpSlideEvents(), !0 === e.options.accessibility && e.$list.off("keydown.slick", e.keyHandler), !0 === e.options.focusOnSelect && c(e.$slideTrack).children().off("click.slick", e.selectHandler), c(window).off("orientationchange.slick.slick-" + e.instanceUid, e.orientationChange), c(window).off("resize.slick.slick-" + e.instanceUid, e.resize), c("[draggable!=true]", e.$slideTrack).off("dragstart", e.preventDefault), c(window).off("load.slick.slick-" + e.instanceUid, e.setPosition), c(document).off("ready.slick.slick-" + e.instanceUid, e.setPosition)
}, s.prototype.cleanUpSlideEvents = function() {
var e = this;
e.$list.off("mouseenter.slick", c.proxy(e.interrupt, e, !0)), e.$list.off("mouseleave.slick", c.proxy(e.interrupt, e, !1))
}, s.prototype.cleanUpRows = function() {
var e;
1 < this.options.rows && ((e = this.$slides.children().children()).removeAttr("style"), this.$slider.empty().append(e))
}, s.prototype.clickHandler = function(e) {
!1 === this.shouldClick && (e.stopImmediatePropagation(), e.stopPropagation(), e.preventDefault())
}, s.prototype.destroy = function(e) {
var t = this;
t.autoPlayClear(), t.touchObject = {}, t.cleanUpEvents(), c(".slick-cloned", t.$slider).detach(), t.$dots && t.$dots.remove(), t.$prevArrow && t.$prevArrow.length && (t.$prevArrow.removeClass("slick-disabled slick-arrow slick-hidden").removeAttr("aria-hidden aria-disabled tabindex").css("display", ""), t.htmlExpr.test(t.options.prevArrow) && t.$prevArrow.remove()), t.$nextArrow && t.$nextArrow.length && (t.$nextArrow.removeClass("slick-disabled slick-arrow slick-hidden").removeAttr("aria-hidden aria-disabled tabindex").css("display", ""), t.htmlExpr.test(t.options.nextArrow) && t.$nextArrow.remove()), t.$slides && (t.$slides.removeClass("slick-slide slick-active slick-center slick-visible slick-current").removeAttr("aria-hidden").removeAttr("data-slick-index").each(function() {
c(this).attr("style", c(this).data("originalStyling"))
}), t.$slideTrack.children(this.options.slide).detach(), t.$slideTrack.detach(), t.$list.detach(), t.$slider.append(t.$slides)), t.cleanUpRows(), t.$slider.removeClass("slick-slider"), t.$slider.removeClass("slick-initialized"), t.$slider.removeClass("slick-dotted"), t.unslicked = !0, e || t.$slider.trigger("destroy", [t])
}, s.prototype.disableTransition = function(e) {
var t = {};
t[this.transitionType] = "", !1 === this.options.fade ? this.$slideTrack.css(t) : this.$slides.eq(e).css(t)
}, s.prototype.fadeSlide = function(e, t) {
var i = this;
!1 === i.cssTransitions ? (i.$slides.eq(e).css({
zIndex: i.options.zIndex
}), i.$slides.eq(e).animate({
opacity: 1
}, i.options.speed, i.options.easing, t)) : (i.applyTransition(e), i.$slides.eq(e).css({
opacity: 1,
zIndex: i.options.zIndex
}), t && setTimeout(function() {
i.disableTransition(e), t.call()
}, i.options.speed))
}, s.prototype.fadeSlideOut = function(e) {
var t = this;
!1 === t.cssTransitions ? t.$slides.eq(e).animate({
opacity: 0,
zIndex: t.options.zIndex - 2
}, t.options.speed, t.options.easing) : (t.applyTransition(e), t.$slides.eq(e).css({
opacity: 0,
zIndex: t.options.zIndex - 2
}))
}, s.prototype.filterSlides = s.prototype.slickFilter = function(e) {
var t = this;
null !== e && (t.$slidesCache = t.$slides, t.unload(), t.$slideTrack.children(this.options.slide).detach(), t.$slidesCache.filter(e).appendTo(t.$slideTrack), t.reinit())
}, s.prototype.focusHandler = function() {
var i = this;
i.$slider.off("focus.slick blur.slick").on("focus.slick blur.slick", "*:not(.slick-arrow)", function(e) {
e.stopImmediatePropagation();
var t = c(this);
setTimeout(function() {
i.options.pauseOnFocus && (i.focussed = t.is(":focus"), i.autoPlay())
}, 0)
})
}, s.prototype.getCurrent = s.prototype.slickCurrentSlide = function() {
return this.currentSlide
}, s.prototype.getDotCount = function() {
var e = this,
t = 0,
i = 0,
n = 0;
if (!0 === e.options.infinite)
for (; t < e.slideCount;) ++n, t = i + e.options.slidesToScroll, i += e.options.slidesToScroll <= e.options.slidesToShow ? e.options.slidesToScroll : e.options.slidesToShow;
else if (!0 === e.options.centerMode) n = e.slideCount;
else if (e.options.asNavFor)
for (; t < e.slideCount;) ++n, t = i + e.options.slidesToScroll, i += e.options.slidesToScroll <= e.options.slidesToShow ? e.options.slidesToScroll : e.options.slidesToShow;
else n = 1 + Math.ceil((e.slideCount - e.options.slidesToShow) / e.options.slidesToScroll);
return n - 1
}, s.prototype.getLeft = function(e) {
var t, i, n, o = this,
a = 0;
return o.slideOffset = 0, i = o.$slides.first().outerHeight(!0), !0 === o.options.infinite ? (o.slideCount > o.options.slidesToShow && (o.slideOffset = o.slideWidth * o.options.slidesToShow * -1, a = i * o.options.slidesToShow * -1), o.slideCount % o.options.slidesToScroll != 0 && e + o.options.slidesToScroll > o.slideCount && o.slideCount > o.options.slidesToShow && (a = e > o.slideCount ? (o.slideOffset = (o.options.slidesToShow - (e - o.slideCount)) * o.slideWidth * -1, (o.options.slidesToShow - (e - o.slideCount)) * i * -1) : (o.slideOffset = o.slideCount % o.options.slidesToScroll * o.slideWidth * -1, o.slideCount % o.options.slidesToScroll * i * -1))) : e + o.options.slidesToShow > o.slideCount && (o.slideOffset = (e + o.options.slidesToShow - o.slideCount) * o.slideWidth, a = (e + o.options.slidesToShow - o.slideCount) * i), o.slideCount <= o.options.slidesToShow && (a = o.slideOffset = 0), !0 === o.options.centerMode && !0 === o.options.infinite ? o.slideOffset += o.slideWidth * Math.floor(o.options.slidesToShow / 2) - o.slideWidth : !0 === o.options.centerMode && (o.slideOffset = 0, o.slideOffset += o.slideWidth * Math.floor(o.options.slidesToShow / 2)), t = !1 === o.options.vertical ? e * o.slideWidth * -1 + o.slideOffset : e * i * -1 + a, !0 === o.options.variableWidth && (n = o.slideCount <= o.options.slidesToShow || !1 === o.options.infinite ? o.$slideTrack.children(".slick-slide").eq(e) : o.$slideTrack.children(".slick-slide").eq(e + o.options.slidesToShow), t = !0 === o.options.rtl ? n[0] ? -1 * (o.$slideTrack.width() - n[0].offsetLeft - n.width()) : 0 : n[0] ? -1 * n[0].offsetLeft : 0, !0 === o.options.centerMode && (n = o.slideCount <= o.options.slidesToShow || !1 === o.options.infinite ? o.$slideTrack.children(".slick-slide").eq(e) : o.$slideTrack.children(".slick-slide").eq(e + o.options.slidesToShow + 1), t = !0 === o.options.rtl ? n[0] ? -1 * (o.$slideTrack.width() - n[0].offsetLeft - n.width()) : 0 : n[0] ? -1 * n[0].offsetLeft : 0, t += (o.$list.width() - n.outerWidth()) / 2)), t
}, s.prototype.getOption = s.prototype.slickGetOption = function(e) {
return this.options[e]
}, s.prototype.getNavigableIndexes = function() {
var e, t = this,
i = 0,
n = 0,
o = [];
for (e = !1 === t.options.infinite ? t.slideCount : (i = -1 * t.options.slidesToScroll, n = -1 * t.options.slidesToScroll, 2 * t.slideCount); i < e;) o.push(i), i = n + t.options.slidesToScroll, n += t.options.slidesToScroll <= t.options.slidesToShow ? t.options.slidesToScroll : t.options.slidesToShow;
return o
}, s.prototype.getSlick = function() {
return this
}, s.prototype.getSlideCount = function() {
var i, n, o = this;
return n = !0 === o.options.centerMode ? o.slideWidth * Math.floor(o.options.slidesToShow / 2) : 0, !0 === o.options.swipeToSlide ? (o.$slideTrack.find(".slick-slide").each(function(e, t) {
return t.offsetLeft - n + c(t).outerWidth() / 2 > -1 * o.swipeLeft ? (i = t, !1) : void 0
}), Math.abs(c(i).attr("data-slick-index") - o.currentSlide) || 1) : o.options.slidesToScroll
}, s.prototype.goTo = s.prototype.slickGoTo = function(e, t) {
this.changeSlide({
data: {
message: "index",
index: parseInt(e)
}
}, t)
}, s.prototype.init = function(e) {
var t = this;
c(t.$slider).hasClass("slick-initialized") || (c(t.$slider).addClass("slick-initialized"), t.buildRows(), t.buildOut(), t.setProps(), t.startLoad(), t.loadSlider(), t.initializeEvents(), t.updateArrows(), t.updateDots(), t.checkResponsive(!0), t.focusHandler()), e && t.$slider.trigger("init", [t]), !0 === t.options.accessibility && t.initADA(), t.options.autoplay && (t.paused = !1, t.autoPlay())
}, s.prototype.initADA = function() {
var t = this;
t.$slides.add(t.$slideTrack.find(".slick-cloned")).attr({
"aria-hidden": "true",
tabindex: "-1"
}).find("a, input, button, select").attr({
tabindex: "-1"
}), t.$slideTrack.attr("role", "listbox").attr("aria-label", "Carousel"), t.$slides.not(t.$slideTrack.find(".slick-cloned")).each(function(e) {
c(this).attr({
role: "option",
"aria-describedby": "slick-slide" + t.instanceUid + e,
id: "navigation" + t.instanceUid + e
})
}), null !== t.$dots && t.$dots.attr("role", "tablist").find("li").each(function(e) {
c(this).attr({
role: "tab",
"aria-selected": "false",
"aria-controls": "navigation" + t.instanceUid + e,
id: "slick-slide" + t.instanceUid + e
})
}).first().attr("aria-selected", "true").end().find("button").attr("role", "button").end().closest("div").attr("role", "toolbar"), t.activateADA()
}, s.prototype.initArrowEvents = function() {
var e = this;
!0 === e.options.arrows && e.slideCount > e.options.slidesToShow && (e.$prevArrow.off("click.slick").on("click.slick", {
message: "previous"
}, e.changeSlide), e.$nextArrow.off("click.slick").on("click.slick", {
message: "next"
}, e.changeSlide))
}, s.prototype.initDotEvents = function() {
var e = this;
!0 === e.options.dots && e.slideCount > e.options.slidesToShow && c("li", e.$dots).on("click.slick", {
message: "index"
}, e.changeSlide), !0 === e.options.dots && !0 === e.options.pauseOnDotsHover && c("li", e.$dots).on("mouseenter.slick", c.proxy(e.interrupt, e, !0)).on("mouseleave.slick", c.proxy(e.interrupt, e, !1))
}, s.prototype.initSlideEvents = function() {
var e = this;
e.options.pauseOnHover && (e.$list.on("mouseenter.slick", c.proxy(e.interrupt, e, !0)), e.$list.on("mouseleave.slick", c.proxy(e.interrupt, e, !1)))
}, s.prototype.initializeEvents = function() {
var e = this;
e.initArrowEvents(), e.initDotEvents(), e.initSlideEvents(), e.$list.on("touchstart.slick mousedown.slick", {
action: "start"
}, e.swipeHandler), e.$list.on("touchmove.slick mousemove.slick", {
action: "move"
}, e.swipeHandler), e.$list.on("touchend.slick mouseup.slick", {
action: "end"
}, e.swipeHandler), e.$list.on("touchcancel.slick mouseleave.slick", {
action: "end"
}, e.swipeHandler), e.$list.on("click.slick", e.clickHandler), c(document).on(e.visibilityChange, c.proxy(e.visibility, e)), !0 === e.options.accessibility && e.$list.on("keydown.slick", e.keyHandler), !0 === e.options.focusOnSelect && c(e.$slideTrack).children().on("click.slick", e.selectHandler), c(window).on("orientationchange.slick.slick-" + e.instanceUid, c.proxy(e.orientationChange, e)), c(window).on("resize.slick.slick-" + e.instanceUid, c.proxy(e.resize, e)), c("[draggable!=true]", e.$slideTrack).on("dragstart", e.preventDefault), c(window).on("load.slick.slick-" + e.instanceUid, e.setPosition), c(document).on("ready.slick.slick-" + e.instanceUid, e.setPosition)
}, s.prototype.initUI = function() {
var e = this;
!0 === e.options.arrows && e.slideCount > e.options.slidesToShow && (e.$prevArrow.show(), e.$nextArrow.show()), !0 === e.options.dots && e.slideCount > e.options.slidesToShow && e.$dots.show()
}, s.prototype.keyHandler = function(e) {
var t = this;
e.target.tagName.match("TEXTAREA|INPUT|SELECT") || (37 === e.keyCode && !0 === t.options.accessibility ? t.changeSlide({
data: {
message: !0 === t.options.rtl ? "next" : "previous"
}
}) : 39 === e.keyCode && !0 === t.options.accessibility && t.changeSlide({
data: {
message: !0 === t.options.rtl ? "previous" : "next"
}
}))
}, s.prototype.lazyLoad = function() {
function e(e) {
c("img[data-lazy]", e).each(function() {
var e = c(this),
t = c(this).attr("data-lazy"),
i = document.createElement("img");
i.onload = function() {
e.animate({
opacity: 0
}, 100, function() {
e.attr("src", t).animate({
opacity: 1
}, 200, function() {
e.removeAttr("data-lazy").removeClass("slick-loading")
}), n.$slider.trigger("lazyLoaded", [n, e, t])
})
}, i.onerror = function() {
e.removeAttr("data-lazy").removeClass("slick-loading").addClass("slick-lazyload-error"), n.$slider.trigger("lazyLoadError", [n, e, t])
}, i.src = t
})
}
var t, i, n = this;
!0 === n.options.centerMode ? i = !0 === n.options.infinite ? (t = n.currentSlide + (n.options.slidesToShow / 2 + 1)) + n.options.slidesToShow + 2 : (t = Math.max(0, n.currentSlide - (n.options.slidesToShow / 2 + 1)), n.options.slidesToShow / 2 + 1 + 2 + n.currentSlide) : (t = n.options.infinite ? n.options.slidesToShow + n.currentSlide : n.currentSlide, i = Math.ceil(t + n.options.slidesToShow), !0 === n.options.fade && (0 < t && t--, i <= n.slideCount && i++)), e(n.$slider.find(".slick-slide").slice(t, i)), n.slideCount <= n.options.slidesToShow ? e(n.$slider.find(".slick-slide")) : n.currentSlide >= n.slideCount - n.options.slidesToShow ? e(n.$slider.find(".slick-cloned").slice(0, n.options.slidesToShow)) : 0 === n.currentSlide && e(n.$slider.find(".slick-cloned").slice(-1 * n.options.slidesToShow))
}, s.prototype.loadSlider = function() {
var e = this;
e.setPosition(), e.$slideTrack.css({
opacity: 1
}), e.$slider.removeClass("slick-loading"), e.initUI(), "progressive" === e.options.lazyLoad && e.progressiveLazyLoad()
}, s.prototype.next = s.prototype.slickNext = function() {
this.changeSlide({
data: {
message: "next"
}
})
}, s.prototype.orientationChange = function() {
this.checkResponsive(), this.setPosition()
}, s.prototype.pause = s.prototype.slickPause = function() {
this.autoPlayClear(), this.paused = !0
}, s.prototype.play = s.prototype.slickPlay = function() {
var e = this;
e.autoPlay(), e.options.autoplay = !0, e.paused = !1, e.focussed = !1, e.interrupted = !1
}, s.prototype.postSlide = function(e) {
var t = this;
t.unslicked || (t.$slider.trigger("afterChange", [t, e]), t.animating = !1, t.setPosition(), t.swipeLeft = null, t.options.autoplay && t.autoPlay(), !0 === t.options.accessibility && t.initADA())
}, s.prototype.prev = s.prototype.slickPrev = function() {
this.changeSlide({
data: {
message: "previous"
}
})
}, s.prototype.preventDefault = function(e) {
e.preventDefault()
}, s.prototype.progressiveLazyLoad = function(e) {
e = e || 1;
var t, i, n, o = this,
a = c("img[data-lazy]", o.$slider);
a.length ? (t = a.first(), i = t.attr("data-lazy"), (n = document.createElement("img")).onload = function() {
t.attr("src", i).removeAttr("data-lazy").removeClass("slick-loading"), !0 === o.options.adaptiveHeight && o.setPosition(), o.$slider.trigger("lazyLoaded", [o, t, i]), o.progressiveLazyLoad()
}, n.onerror = function() {
e < 3 ? setTimeout(function() {
o.progressiveLazyLoad(e + 1)
}, 500) : (t.removeAttr("data-lazy").removeClass("slick-loading").addClass("slick-lazyload-error"), o.$slider.trigger("lazyLoadError", [o, t, i]), o.progressiveLazyLoad())
}, n.src = i) : o.$slider.trigger("allImagesLoaded", [o])
}, s.prototype.refresh = function(e) {
var t, i, n = this;
i = n.slideCount - n.options.slidesToShow, !n.options.infinite && n.currentSlide > i && (n.currentSlide = i), n.slideCount <= n.options.slidesToShow && (n.currentSlide = 0), t = n.currentSlide, n.destroy(!0), c.extend(n, n.initials, {
currentSlide: t
}), n.init(), e || n.changeSlide({
data: {
message: "index",
index: t
}
}, !1)
}, s.prototype.registerBreakpoints = function() {
var e, t, i, n = this,
o = n.options.responsive || null;
if ("array" === c.type(o) && o.length) {
for (e in n.respondTo = n.options.respondTo || "window", o)
if (i = n.breakpoints.length - 1, t = o[e].breakpoint, o.hasOwnProperty(e)) {
for (; 0 <= i;) n.breakpoints[i] && n.breakpoints[i] === t && n.breakpoints.splice(i, 1), i--;
n.breakpoints.push(t), n.breakpointSettings[t] = o[e].settings
}
n.breakpoints.sort(function(e, t) {
return n.options.mobileFirst ? e - t : t - e
})
}
}, s.prototype.reinit = function() {
var e = this;
e.$slides = e.$slideTrack.children(e.options.slide).addClass("slick-slide"), e.slideCount = e.$slides.length, e.currentSlide >= e.slideCount && 0 !== e.currentSlide && (e.currentSlide = e.currentSlide - e.options.slidesToScroll), e.slideCount <= e.options.slidesToShow && (e.currentSlide = 0), e.registerBreakpoints(), e.setProps(), e.setupInfinite(), e.buildArrows(), e.updateArrows(), e.initArrowEvents(), e.buildDots(), e.updateDots(), e.initDotEvents(), e.cleanUpSlideEvents(), e.initSlideEvents(), e.checkResponsive(!1, !0), !0 === e.options.focusOnSelect && c(e.$slideTrack).children().on("click.slick", e.selectHandler), e.setSlideClasses("number" == typeof e.currentSlide ? e.currentSlide : 0), e.setPosition(), e.focusHandler(), e.paused = !e.options.autoplay, e.autoPlay(), e.$slider.trigger("reInit", [e])
}, s.prototype.resize = function() {
var e = this;
c(window).width() !== e.windowWidth && (clearTimeout(e.windowDelay), e.windowDelay = window.setTimeout(function() {
e.windowWidth = c(window).width(), e.checkResponsive(), e.unslicked || e.setPosition()
}, 50))
}, s.prototype.removeSlide = s.prototype.slickRemove = function(e, t, i) {
var n = this;
return e = "boolean" == typeof e ? !0 === (t = e) ? 0 : n.slideCount - 1 : !0 === t ? --e : e, !(n.slideCount < 1 || e < 0 || e > n.slideCount - 1) && (n.unload(), !0 === i ? n.$slideTrack.children().remove() : n.$slideTrack.children(this.options.slide).eq(e).remove(), n.$slides = n.$slideTrack.children(this.options.slide), n.$slideTrack.children(this.options.slide).detach(), n.$slideTrack.append(n.$slides), n.$slidesCache = n.$slides, void n.reinit())
}, s.prototype.setCSS = function(e) {
var t, i, n = this,
o = {};
!0 === n.options.rtl && (e = -e), t = "left" == n.positionProp ? Math.ceil(e) + "px" : "0px", i = "top" == n.positionProp ? Math.ceil(e) + "px" : "0px", o[n.positionProp] = e, !1 === n.transformsEnabled || (!(o = {}) === n.cssTransitions ? o[n.animType] = "translate(" + t + ", " + i + ")" : o[n.animType] = "translate3d(" + t + ", " + i + ", 0px)"), n.$slideTrack.css(o)
}, s.prototype.setDimensions = function() {
var e = this;
!1 === e.options.vertical ? !0 === e.options.centerMode && e.$list.css({
padding: "0px " + e.options.centerPadding
}) : (e.$list.height(e.$slides.first().outerHeight(!0) * e.options.slidesToShow), !0 === e.options.centerMode && e.$list.css({
padding: e.options.centerPadding + " 0px"
})), e.listWidth = e.$list.width(), e.listHeight = e.$list.height(), !1 === e.options.vertical && !1 === e.options.variableWidth ? (e.slideWidth = Math.ceil(e.listWidth / e.options.slidesToShow), e.$slideTrack.width(Math.ceil(e.slideWidth * e.$slideTrack.children(".slick-slide").length))) : !0 === e.options.variableWidth ? e.$slideTrack.width(5e3 * e.slideCount) : (e.slideWidth = Math.ceil(e.listWidth), e.$slideTrack.height(Math.ceil(e.$slides.first().outerHeight(!0) * e.$slideTrack.children(".slick-slide").length)));
var t = e.$slides.first().outerWidth(!0) - e.$slides.first().width();
!1 === e.options.variableWidth && e.$slideTrack.children(".slick-slide").width(e.slideWidth - t)
}, s.prototype.setFade = function() {
var i, n = this;
n.$slides.each(function(e, t) {
i = n.slideWidth * e * -1, !0 === n.options.rtl ? c(t).css({
position: "relative",
right: i,
top: 0,
zIndex: n.options.zIndex - 2,
opacity: 0
}) : c(t).css({
position: "relative",
left: i,
top: 0,
zIndex: n.options.zIndex - 2,
opacity: 0
})
}), n.$slides.eq(n.currentSlide).css({
zIndex: n.options.zIndex - 1,
opacity: 1
})
}, s.prototype.setHeight = function() {
var e = this;
if (1 === e.options.slidesToShow && !0 === e.options.adaptiveHeight && !1 === e.options.vertical) {
var t = e.$slides.eq(e.currentSlide).outerHeight(!0);
e.$list.css("height", t)
}
}, s.prototype.setOption = s.prototype.slickSetOption = function() {
var e, t, i, n, o, a = this,
s = !1;
if ("object" === c.type(arguments[0]) ? (i = arguments[0], s = arguments[1], o = "multiple") : "string" === c.type(arguments[0]) && (i = arguments[0], n = arguments[1], s = arguments[2], "responsive" === arguments[0] && "array" === c.type(arguments[1]) ? o = "responsive" : void 0 !== arguments[1] && (o = "single")), "single" === o) a.options[i] = n;
else if ("multiple" === o) c.each(i, function(e, t) {
a.options[e] = t
});
else if ("responsive" === o)
for (t in n)
if ("array" !== c.type(a.options.responsive)) a.options.responsive = [n[t]];
else {
for (e = a.options.responsive.length - 1; 0 <= e;) a.options.responsive[e].breakpoint === n[t].breakpoint && a.options.responsive.splice(e, 1), e--;
a.options.responsive.push(n[t])
}
s && (a.unload(), a.reinit())
}, s.prototype.setPosition = function() {
var e = this;
e.setDimensions(), e.setHeight(), !1 === e.options.fade ? e.setCSS(e.getLeft(e.currentSlide)) : e.setFade(), e.$slider.trigger("setPosition", [e])
}, s.prototype.setProps = function() {
var e = this,
t = document.body.style;
e.positionProp = !0 === e.options.vertical ? "top" : "left", "top" === e.positionProp ? e.$slider.addClass("slick-vertical") : e.$slider.removeClass("slick-vertical"), (void 0 !== t.WebkitTransition || void 0 !== t.MozTransition || void 0 !== t.msTransition) && !0 === e.options.useCSS && (e.cssTransitions = !0), e.options.fade && ("number" == typeof e.options.zIndex ? e.options.zIndex < 3 && (e.options.zIndex = 3) : e.options.zIndex = e.defaults.zIndex), void 0 !== t.OTransform && (e.animType = "OTransform", e.transformType = "-o-transform", e.transitionType = "OTransition", void 0 === t.perspectiveProperty && void 0 === t.webkitPerspective && (e.animType = !1)), void 0 !== t.MozTransform && (e.animType = "MozTransform", e.transformType = "-moz-transform", e.transitionType = "MozTransition", void 0 === t.perspectiveProperty && void 0 === t.MozPerspective && (e.animType = !1)), void 0 !== t.webkitTransform && (e.animType = "webkitTransform", e.transformType = "-webkit-transform", e.transitionType = "webkitTransition", void 0 === t.perspectiveProperty && void 0 === t.webkitPerspective && (e.animType = !1)), void 0 !== t.msTransform && (e.animType = "msTransform", e.transformType = "-ms-transform", e.transitionType = "msTransition", void 0 === t.msTransform && (e.animType = !1)), void 0 !== t.transform && !1 !== e.animType && (e.animType = "transform", e.transformType = "transform", e.transitionType = "transition"), e.transformsEnabled = e.options.useTransform && null !== e.animType && !1 !== e.animType
}, s.prototype.setSlideClasses = function(e) {
var t, i, n, o, a = this;
i = a.$slider.find(".slick-slide").removeClass("slick-active slick-center slick-current").attr("aria-hidden", "true"), a.$slides.eq(e).addClass("slick-current"), !0 === a.options.centerMode ? (t = Math.floor(a.options.slidesToShow / 2), !0 === a.options.infinite && (t <= e && e <= a.slideCount - 1 - t ? a.$slides.slice(e - t, e + t + 1).addClass("slick-active").attr("aria-hidden", "false") : (n = a.options.slidesToShow + e, i.slice(n - t + 1, n + t + 2).addClass("slick-active").attr("aria-hidden", "false")), 0 === e ? i.eq(i.length - 1 - a.options.slidesToShow).addClass("slick-center") : e === a.slideCount - 1 && i.eq(a.options.slidesToShow).addClass("slick-center")), a.$slides.eq(e).addClass("slick-center")) : 0 <= e && e <= a.slideCount - a.options.slidesToShow ? a.$slides.slice(e, e + a.options.slidesToShow).addClass("slick-active").attr("aria-hidden", "false") : i.length <= a.options.slidesToShow ? i.addClass("slick-active").attr("aria-hidden", "false") : (o = a.slideCount % a.options.slidesToShow, n = !0 === a.options.infinite ? a.options.slidesToShow + e : e, a.options.slidesToShow == a.options.slidesToScroll && a.slideCount - e < a.options.slidesToShow ? i.slice(n - (a.options.slidesToShow - o), n + o).addClass("slick-active").attr("aria-hidden", "false") : i.slice(n, n + a.options.slidesToShow).addClass("slick-active").attr("aria-hidden", "false")), "ondemand" === a.options.lazyLoad && a.lazyLoad()
}, s.prototype.setupInfinite = function() {
var e, t, i, n = this;
if (!0 === n.options.fade && (n.options.centerMode = !1), !0 === n.options.infinite && !1 === n.options.fade && (t = null, n.slideCount > n.options.slidesToShow)) {
for (i = !0 === n.options.centerMode ? n.options.slidesToShow + 1 : n.options.slidesToShow, e = n.slideCount; e > n.slideCount - i; e -= 1) t = e - 1, c(n.$slides[t]).clone(!0).attr("id", "").attr("data-slick-index", t - n.slideCount).prependTo(n.$slideTrack).addClass("slick-cloned");
for (e = 0; e < i; e += 1) t = e, c(n.$slides[t]).clone(!0).attr("id", "").attr("data-slick-index", t + n.slideCount).appendTo(n.$slideTrack).addClass("slick-cloned");
n.$slideTrack.find(".slick-cloned").find("[id]").each(function() {
c(this).attr("id", "")
})
}
}, s.prototype.interrupt = function(e) {
e || this.autoPlay(), this.interrupted = e
}, s.prototype.selectHandler = function(e) {
var t = this,
i = c(e.target).is(".slick-slide") ? c(e.target) : c(e.target).parents(".slick-slide"),
n = parseInt(i.attr("data-slick-index"));
return n || (n = 0), t.slideCount <= t.options.slidesToShow ? (t.setSlideClasses(n), void t.asNavFor(n)) : void t.slideHandler(n)
}, s.prototype.slideHandler = function(e, t, i) {
var n, o, a, s, r, l = null,
c = this;
return t = t || !1, !0 === c.animating && !0 === c.options.waitForAnimate || !0 === c.options.fade && c.currentSlide === e || c.slideCount <= c.options.slidesToShow ? void 0 : (!1 === t && c.asNavFor(e), n = e, l = c.getLeft(n), s = c.getLeft(c.currentSlide), c.currentLeft = null === c.swipeLeft ? s : c.swipeLeft, !1 === c.options.infinite && !1 === c.options.centerMode && (e < 0 || e > c.getDotCount() * c.options.slidesToScroll) ? void(!1 === c.options.fade && (n = c.currentSlide, !0 !== i ? c.animateSlide(s, function() {
c.postSlide(n)
}) : c.postSlide(n))) : !1 === c.options.infinite && !0 === c.options.centerMode && (e < 0 || e > c.slideCount - c.options.slidesToScroll) ? void(!1 === c.options.fade && (n = c.currentSlide, !0 !== i ? c.animateSlide(s, function() {
c.postSlide(n)
}) : c.postSlide(n))) : (c.options.autoplay && clearInterval(c.autoPlayTimer), o = n < 0 ? c.slideCount % c.options.slidesToScroll != 0 ? c.slideCount - c.slideCount % c.options.slidesToScroll : c.slideCount + n : n >= c.slideCount ? c.slideCount % c.options.slidesToScroll != 0 ? 0 : n - c.slideCount : n, c.animating = !0, c.$slider.trigger("beforeChange", [c, c.currentSlide, o]), a = c.currentSlide, c.currentSlide = o, c.setSlideClasses(c.currentSlide), c.options.asNavFor && ((r = (r = c.getNavTarget()).slick("getSlick")).slideCount <= r.options.slidesToShow && r.setSlideClasses(c.currentSlide)), c.updateDots(), c.updateArrows(), !0 === c.options.fade ? (!0 !== i ? (c.fadeSlideOut(a), c.fadeSlide(o, function() {
c.postSlide(o)
})) : c.postSlide(o), void c.animateHeight()) : void(!0 !== i ? c.animateSlide(l, function() {
c.postSlide(o)
}) : c.postSlide(o))))
}, s.prototype.startLoad = function() {
var e = this;
!0 === e.options.arrows && e.slideCount > e.options.slidesToShow && (e.$prevArrow.hide(), e.$nextArrow.hide()), !0 === e.options.dots && e.slideCount > e.options.slidesToShow && e.$dots.hide(), e.$slider.addClass("slick-loading")
}, s.prototype.swipeDirection = function() {
var e, t, i, n, o = this;
return e = o.touchObject.startX - o.touchObject.curX, t = o.touchObject.startY - o.touchObject.curY, i = Math.atan2(t, e), (n = Math.round(180 * i / Math.PI)) < 0 && (n = 360 - Math.abs(n)), n <= 45 && 0 <= n ? !1 === o.options.rtl ? "left" : "right" : n <= 360 && 315 <= n ? !1 === o.options.rtl ? "left" : "right" : 135 <= n && n <= 225 ? !1 === o.options.rtl ? "right" : "left" : !0 === o.options.verticalSwiping ? 35 <= n && n <= 135 ? "down" : "up" : "vertical"
}, s.prototype.swipeEnd = function(e) {
var t, i, n = this;
if (n.dragging = !1, n.interrupted = !1, n.shouldClick = !(10 < n.touchObject.swipeLength), void 0 === n.touchObject.curX) return !1;
if (!0 === n.touchObject.edgeHit && n.$slider.trigger("edge", [n, n.swipeDirection()]), n.touchObject.swipeLength >= n.touchObject.minSwipe) {
switch (i = n.swipeDirection()) {
case "left":
case "down":
t = n.options.swipeToSlide ? n.checkNavigable(n.currentSlide + n.getSlideCount()) : n.currentSlide + n.getSlideCount(), n.currentDirection = 0;
break;
case "right":
case "up":
t = n.options.swipeToSlide ? n.checkNavigable(n.currentSlide - n.getSlideCount()) : n.currentSlide - n.getSlideCount(), n.currentDirection = 1
}
"vertical" != i && (n.slideHandler(t), n.touchObject = {}, n.$slider.trigger("swipe", [n, i]))
} else n.touchObject.startX !== n.touchObject.curX && (n.slideHandler(n.currentSlide), n.touchObject = {})
}, s.prototype.swipeHandler = function(e) {
var t = this;
if (!(!1 === t.options.swipe || "ontouchend" in document && !1 === t.options.swipe || !1 === t.options.draggable && -1 !== e.type.indexOf("mouse"))) switch (t.touchObject.fingerCount = e.originalEvent && void 0 !== e.originalEvent.touches ? e.originalEvent.touches.length : 1, t.touchObject.minSwipe = t.listWidth / t.options.touchThreshold, !0 === t.options.verticalSwiping && (t.touchObject.minSwipe = t.listHeight / t.options.touchThreshold), e.data.action) {
case "start":
t.swipeStart(e);
break;
case "move":
t.swipeMove(e);
break;
case "end":
t.swipeEnd(e)
}
}, s.prototype.swipeMove = function(e) {
var t, i, n, o, a, s = this;
return a = void 0 !== e.originalEvent ? e.originalEvent.touches : null, !(!s.dragging || a && 1 !== a.length) && (t = s.getLeft(s.currentSlide), s.touchObject.curX = void 0 !== a ? a[0].pageX : e.clientX, s.touchObject.curY = void 0 !== a ? a[0].pageY : e.clientY, s.touchObject.swipeLength = Math.round(Math.sqrt(Math.pow(s.touchObject.curX - s.touchObject.startX, 2))), !0 === s.options.verticalSwiping && (s.touchObject.swipeLength = Math.round(Math.sqrt(Math.pow(s.touchObject.curY - s.touchObject.startY, 2)))), "vertical" !== (i = s.swipeDirection()) ? (void 0 !== e.originalEvent && 4 < s.touchObject.swipeLength && e.preventDefault(), o = (!1 === s.options.rtl ? 1 : -1) * (s.touchObject.curX > s.touchObject.startX ? 1 : -1), !0 === s.options.verticalSwiping && (o = s.touchObject.curY > s.touchObject.startY ? 1 : -1), n = s.touchObject.swipeLength, (s.touchObject.edgeHit = !1) === s.options.infinite && (0 === s.currentSlide && "right" === i || s.currentSlide >= s.getDotCount() && "left" === i) && (n = s.touchObject.swipeLength * s.options.edgeFriction, s.touchObject.edgeHit = !0), !1 === s.options.vertical ? s.swipeLeft = t + n * o : s.swipeLeft = t + n * (s.$list.height() / s.listWidth) * o, !0 === s.options.verticalSwiping && (s.swipeLeft = t + n * o), !0 !== s.options.fade && !1 !== s.options.touchMove && (!0 === s.animating ? (s.swipeLeft = null, !1) : void s.setCSS(s.swipeLeft))) : void 0)
}, s.prototype.swipeStart = function(e) {
var t, i = this;
return i.interrupted = !0, 1 !== i.touchObject.fingerCount || i.slideCount <= i.options.slidesToShow ? !(i.touchObject = {}) : (void 0 !== e.originalEvent && void 0 !== e.originalEvent.touches && (t = e.originalEvent.touches[0]), i.touchObject.startX = i.touchObject.curX = void 0 !== t ? t.pageX : e.clientX, i.touchObject.startY = i.touchObject.curY = void 0 !== t ? t.pageY : e.clientY, void(i.dragging = !0))
}, s.prototype.unfilterSlides = s.prototype.slickUnfilter = function() {
var e = this;
null !== e.$slidesCache && (e.unload(), e.$slideTrack.children(this.options.slide).detach(), e.$slidesCache.appendTo(e.$slideTrack), e.reinit())
}, s.prototype.unload = function() {
var e = this;
c(".slick-cloned", e.$slider).remove(), e.$dots && e.$dots.remove(), e.$prevArrow && e.htmlExpr.test(e.options.prevArrow) && e.$prevArrow.remove(), e.$nextArrow && e.htmlExpr.test(e.options.nextArrow) && e.$nextArrow.remove(), e.$slides.removeClass("slick-slide slick-active slick-visible slick-current").attr("aria-hidden", "true").css("width", "")
}, s.prototype.unslick = function(e) {
this.$slider.trigger("unslick", [this, e]), this.destroy()
}, s.prototype.updateArrows = function() {
var e = this;
Math.floor(e.options.slidesToShow / 2), !0 === e.options.arrows && e.slideCount > e.options.slidesToShow && !e.options.infinite && (e.$prevArrow.removeClass("slick-disabled").attr("aria-disabled", "false"), e.$nextArrow.removeClass("slick-disabled").attr("aria-disabled", "false"), 0 === e.currentSlide ? (e.$prevArrow.addClass("slick-disabled").attr("aria-disabled", "true"), e.$nextArrow.removeClass("slick-disabled").attr("aria-disabled", "false")) : e.currentSlide >= e.slideCount - e.options.slidesToShow && !1 === e.options.centerMode ? (e.$nextArrow.addClass("slick-disabled").attr("aria-disabled", "true"), e.$prevArrow.removeClass("slick-disabled").attr("aria-disabled", "false")) : e.currentSlide >= e.slideCount - 1 && !0 === e.options.centerMode && (e.$nextArrow.addClass("slick-disabled").attr("aria-disabled", "true"), e.$prevArrow.removeClass("slick-disabled").attr("aria-disabled", "false")))
}, s.prototype.updateDots = function() {
var e = this;
null !== e.$dots && (e.$dots.find("li").removeClass("slick-active").attr("aria-hidden", "true"), e.$dots.find("li").eq(Math.floor(e.currentSlide / e.options.slidesToScroll)).addClass("slick-active").attr("aria-hidden", "false"))
}, s.prototype.visibility = function() {
this.options.autoplay && (document[this.hidden] ? this.interrupted = !0 : this.interrupted = !1)
}, c.fn.slick = function() {
var e, t, i = this,
n = arguments[0],
o = Array.prototype.slice.call(arguments, 1),
a = i.length;
for (e = 0; e < a; e++)
if ("object" == typeof n || void 0 === n ? i[e].slick = new s(i[e], n) : t = i[e].slick[n].apply(i[e].slick, o), void 0 !== t) return t;
return i
}
}),
function(e, t) {
"function" == typeof define && define.amd ? define("ev-emitter/ev-emitter", t) : "object" == typeof module && module.exports ? module.exports = t() : e.EvEmitter = t()
}("undefined" != typeof window ? window : this, function() {
function e() {}
var t = e.prototype;
return t.on = function(e, t) {
if (e && t) {
var i = this._events = this._events || {},
n = i[e] = i[e] || [];
return -1 == n.indexOf(t) && n.push(t), this
}
}, t.once = function(e, t) {
if (e && t) {
this.on(e, t);
var i = this._onceEvents = this._onceEvents || {};
return (i[e] = i[e] || {})[t] = !0, this
}
}, t.off = function(e, t) {
var i = this._events && this._events[e];
if (i && i.length) {
var n = i.indexOf(t);
return -1 != n && i.splice(n, 1), this
}
}, t.emitEvent = function(e, t) {
var i = this._events && this._events[e];
if (i && i.length) {
var n = 0,
o = i[n];
t = t || [];
for (var a = this._onceEvents && this._onceEvents[e]; o;) {
var s = a && a[o];
s && (this.off(e, o), delete a[o]), o.apply(this, t), o = i[n += s ? 0 : 1]
}
return this
}
}, t.allOff = t.removeAllListeners = function() {
delete this._events, delete this._onceEvents
}, e
}),
function(t, i) {
"use strict";
"function" == typeof define && define.amd ? define(["ev-emitter/ev-emitter"], function(e) {
return i(t, e)
}) : "object" == typeof module && module.exports ? module.exports = i(t, require("ev-emitter")) : t.imagesLoaded = i(t, t.EvEmitter)
}("undefined" != typeof window ? window : this, function(t, e) {
var n = t.jQuery,
o = t.console;
function a(e, t) {
for (var i in t) e[i] = t[i];
return e
}
function s(e, t, i) {
if (!(this instanceof s)) return new s(e, t, i);
"string" == typeof e && (e = document.querySelectorAll(e)), this.elements = function(e) {
var t = [];
if (Array.isArray(e)) t = e;
else if ("number" == typeof e.length)
for (var i = 0; i < e.length; i++) t.push(e[i]);
else t.push(e);
return t
}(e), this.options = a({}, this.options), "function" == typeof t ? i = t : a(this.options, t), i && this.on("always", i), this.getImages(), n && (this.jqDeferred = new n.Deferred), setTimeout(function() {
this.check()
}.bind(this))
}(s.prototype = Object.create(e.prototype)).options = {}, s.prototype.getImages = function() {
this.images = [], this.elements.forEach(this.addElementImages, this)
}, s.prototype.addElementImages = function(e) {
"IMG" == e.nodeName && this.addImage(e), !0 === this.options.background && this.addElementBackgroundImages(e);
var t = e.nodeType;
if (t && r[t]) {
for (var i = e.querySelectorAll("img"), n = 0; n < i.length; n++) {
var o = i[n];
this.addImage(o)
}
if ("string" == typeof this.options.background) {
var a = e.querySelectorAll(this.options.background);
for (n = 0; n < a.length; n++) {
var s = a[n];
this.addElementBackgroundImages(s)
}
}
}
};
var r = {
1: !0,
9: !0,
11: !0
};
function i(e) {
this.img = e
}
function l(e, t) {
this.url = e, this.element = t, this.img = new Image
}
return s.prototype.addElementBackgroundImages = function(e) {
var t = getComputedStyle(e);
if (t)
for (var i = /url\((['"])?(.*?)\1\)/gi, n = i.exec(t.backgroundImage); null !== n;) {
var o = n && n[2];
o && this.addBackground(o, e), n = i.exec(t.backgroundImage)
}
}, s.prototype.addImage = function(e) {
var t = new i(e);
this.images.push(t)
}, s.prototype.addBackground = function(e, t) {
var i = new l(e, t);
this.images.push(i)
}, s.prototype.check = function() {
var n = this;
function t(e, t, i) {
setTimeout(function() {
n.progress(e, t, i)
})
}
this.progressedCount = 0, this.hasAnyBroken = !1, this.images.length ? this.images.forEach(function(e) {
e.once("progress", t), e.check()
}) : this.complete()
}, s.prototype.progress = function(e, t, i) {
this.progressedCount++, this.hasAnyBroken = this.hasAnyBroken || !e.isLoaded, this.emitEvent("progress", [this, e, t]), this.jqDeferred && this.jqDeferred.notify && this.jqDeferred.notify(this, e), this.progressedCount == this.images.length && this.complete(), this.options.debug && o && o.log("progress: " + i, e, t)
}, s.prototype.complete = function() {
var e = this.hasAnyBroken ? "fail" : "done";
if (this.isComplete = !0, this.emitEvent(e, [this]), this.emitEvent("always", [this]), this.jqDeferred) {
var t = this.hasAnyBroken ? "reject" : "resolve";
this.jqDeferred[t](this)
}
}, (i.prototype = Object.create(e.prototype)).check = function() {
this.getIsImageComplete() ? this.confirm(0 !== this.img.naturalWidth, "naturalWidth") : (this.proxyImage = new Image, this.proxyImage.addEventListener("load", this), this.proxyImage.addEventListener("error", this), this.img.addEventListener("load", this), this.img.addEventListener("error", this), this.proxyImage.src = this.img.src)
}, i.prototype.getIsImageComplete = function() {
return this.img.complete && void 0 !== this.img.naturalWidth
}, i.prototype.confirm = function(e, t) {
this.isLoaded = e, this.emitEvent("progress", [this, this.img, t])
}, i.prototype.handleEvent = function(e) {
var t = "on" + e.type;
this[t] && this[t](e)
}, i.prototype.onload = function() {
this.confirm(!0, "onload"), this.unbindEvents()
}, i.prototype.onerror = function() {
this.confirm(!1, "onerror"), this.unbindEvents()
}, i.prototype.unbindEvents = function() {
this.proxyImage.removeEventListener("load", this), this.proxyImage.removeEventListener("error", this), this.img.removeEventListener("load", this), this.img.removeEventListener("error", this)
}, (l.prototype = Object.create(i.prototype)).check = function() {
this.img.addEventListener("load", this), this.img.addEventListener("error", this), this.img.src = this.url, this.getIsImageComplete() && (this.confirm(0 !== this.img.naturalWidth, "naturalWidth"), this.unbindEvents())
}, l.prototype.unbindEvents = function() {
this.img.removeEventListener("load", this), this.img.removeEventListener("error", this)
}, l.prototype.confirm = function(e, t) {
this.isLoaded = e, this.emitEvent("progress", [this, this.element, t])
}, s.makeJQueryPlugin = function(e) {
(e = e || t.jQuery) && ((n = e).fn.imagesLoaded = function(e, t) {
return new s(this, e, t).jqDeferred.promise(n(this))
})
}, s.makeJQueryPlugin(), s
}),
function(e) {
"use strict";
"function" == typeof define && define.amd ? define(["jquery"], e) : jQuery && !jQuery.fn.hoverIntent && e(jQuery)
}(function(l) {
"use strict";
var o, a, s = {
interval: 100,
sensitivity: 6,
timeout: 0
},
c = 0,
d = function(e) {
o = e.pageX, a = e.pageY
},
u = function(e, t, i, n) {
if (Math.sqrt((i.pX - o) * (i.pX - o) + (i.pY - a) * (i.pY - a)) < n.sensitivity) return t.off(i.event, d), delete i.timeoutId, i.isActive = !0, e.pageX = o, e.pageY = a, delete i.pX, delete i.pY, n.over.apply(t[0], [e]);
i.pX = o, i.pY = a, i.timeoutId = setTimeout(function() {
u(e, t, i, n)
}, n.interval)
};
l.fn.hoverIntent = function(e, t, i) {
var n = c++,
r = l.extend({}, s);
l.isPlainObject(e) ? (r = l.extend(r, e), l.isFunction(r.out) || (r.out = r.over)) : r = l.isFunction(t) ? l.extend(r, {
over: e,
out: t,
selector: i
}) : l.extend(r, {
over: e,
out: e,
selector: t
});
var o = function(e) {
var o = l.extend({}, e),
a = l(this),
t = a.data("hoverIntent");
t || a.data("hoverIntent", t = {});
var s = t[n];
s || (t[n] = s = {
id: n
}), s.timeoutId && (s.timeoutId = clearTimeout(s.timeoutId));
var i = s.event = "mousemove.hoverIntent.hoverIntent" + n;
if ("mouseenter" === e.type) {
if (s.isActive) return;
s.pX = o.pageX, s.pY = o.pageY, a.off(i, d).on(i, d), s.timeoutId = setTimeout(function() {
u(o, a, s, r)
}, r.interval)
} else {
if (!s.isActive) return;
a.off(i, d), s.timeoutId = setTimeout(function() {
var e, t, i, n;
e = o, t = a, i = s, n = r.out, delete t.data("hoverIntent")[i.id], n.apply(t[0], [e])
}, r.timeout)
}
};
return this.on({
"mouseenter.hoverIntent": o,
"mouseleave.hoverIntent": o
}, r.selector)
}
}), jQuery.noConflict();
var IBMCore = {
version: "142.0.0"
};
(function(e, t) {
t.namespace = function() {
var e, t, i, n, o, a = arguments[0],
s = arguments.length;
for (e = 1; e < s; e++)
for (o = a[(n = arguments[e].split("."))[0]] = Object(a[n[0]]), t = 1, i = n.length; t < i; t++) o = o[n[t]] = Object(o[n[t]]);
return o
}, t.namespace(t, "performance", "common", "common.config", "common.meta", "common.module", "common.util", "common.vendor", "common.widget", "www", "www.module")
})(jQuery, IBMCore),
function(e) {
var t = e.namespace(e, "common.util.debug"),
n = [];
t.add = function(e, t, i) {
n.push({
func: e,
contents: t,
usePrefix: i
})
}, t.show = function() {
var e = 0;
for (; e < n.length; e++) t = n[e].func, i = n[e].contents, !1 !== n[e].usePrefix ? window.console[t]("v18: ", i) : window.console[t](i);
var t, i
}
}(IBMCore),
function(t, n) {
var i = n.namespace(n, "common.util.config");
i.set = function(e) {
"object" === jQuery.type(e) && t.extend(!0, n.common.config, e)
}, i.get = function(e) {
for (var t = e.split("."), i = n.common.config; i && t.length;) i = i[t.shift()];
return i
}, i.isEnabled = function(e) {
var t = i.get(e + ".enabled");
return !1 === n.common.util.config.get("coremodules.enabled") && (t = !1), t
}
}(jQuery, IBMCore),
function(e, t) {
var i, n = "production",
o = {
production: {
config: "www",
forced: !1,
usedSettings: "production",
imageUrl: "https://1.www.s81c.com/common/v18/i/",
jsFilesUrl: "https://1.www.s81c.com/common/v18/js/",
jsFilesUrlNC: "https://1.www.s81c.com/common/noticechoice/",
jsFilesUrlUrx: "https://www.ibm.com/account/ibmidutil/urx/v2/js/urx.modal.min.js",
dataUrl: "https://www.ibm.com/common/v18/js/data/",
datepickerDataUrl: "https://1.www.s81c.com/common/v18/js/datepicker/data/",
coreservicesUrl: "https://www.ibm.com/gateway/secstate/?",
coreservicesUrlSecure: "https://www.ibm.com/gateway/sec/?",
noticechoice: {
jsonUrl: "https://1.www.s81c.com/common/translations"
},
userStateUrl: "https://idaas.iam.ibm.com/v1/mgmt/idaas/user/status/",
coremodules: {
enabled: !0
},
contentwidgets: {
enabled: !0
},
eluminate: {
enabled: !0
},
backtotop: {
enabled: !1
},
contactModuleWidget: {
enabled: !0
},
dynamicContactModule: {
enabled: !1
},
errorchecking: {
enabled: !0
},
feedbacklink: {
enabled: !0
},
footer: {
enabled: !0,
socialLinks: {
enabled: !1
},
type: "default"
},
footermenu: {
enabled: !0
},
greeting: {
enabled: !0
},
localeselector: {
enabled: !0
},
masthead: {
enabled: !0,
logoanimation: {
enabled: !1
},
marketplaceLink: {
enabled: !0
},
megamenu: {
enabled: !0
},
mobilemenu: {
enabled: !0
},
notifications: {
enabled: !0
},
profile: {
enabled: !0
},
search: {
enabled: !0,
typeahead: {
enabled: !0
}
},
sticky: {
enabled: !0
},
type: "default"
},
scrolltracker: {
enabled: !1
},
sharethispage: {
enabled: !0
},
survey: {
enabled: !0
},
useriplookup: {
enabled: !0
},
userstateservice: {
enabled: !0
},
wat: {
enabled: !1
},
bitly: {
login: "ibmdigital",
key: "R_1ed9169df98d3b072731d88ec80d18a7",
timeout: 3e3
}
},
staging: {
usedSettings: "staging",
imageUrl: "https://1.wwwstage.s81c.com/common/v18/i/",
jsFilesUrl: "https://1.wwwstage.s81c.com/common/v18/js/",
jsFilesUrlNC: "https://1.wwwstage.s81c.com/common/noticechoice/",
jsFilesUrlUrx: "https://wwwtest.ibm.com/account/ibmidutil/urx/v2/js/urx.modal.min.js",
dataUrl: "https://1.wwwstage.s81c.com/common/v18/js/data/",
datepickerDataUrl: "https://1.wwwstage.s81c.com/common/v18/js/datepicker/data/",
coreservicesUrl: "https://www-sso.toronto.ca.ibm.com/gateway/secstate/?",
coreservicesUrlSecure: "https://www-sso.toronto.ca.ibm.com/gateway/sec/?",
noticechoice: {
jsonUrl: "https://1.wwwstage.s81c.com/common/translations"
},
userStateUrl: "https://idaas.iam.ibm.com/v1/mgmt/idaas/user/status/"
},
preview: {
usedSettings: "preview",
imageUrl: "https://1.wwwpreview.s81c.com/common/v18/i/",
jsFilesUrl: "https://1.wwwpreview.s81c.com/common/v18/js/",
jsFilesUrlNC: "https://1.wwwpreview.s81c.com/common/noticechoice/",
dataUrl: "https://1.wwwpreview.s81c.com/common/v18/js/data/",
datepickerDataUrl: "https://1.wwwpreview.s81c.com/common/v18/js/datepicker/data/",
coreservicesUrl: "https://www-sso.toronto.ca.ibm.com/gateway/secstate/?",
coreservicesUrlSecure: "https://www-sso.toronto.ca.ibm.com/gateway/sec/?",
noticechoice: {
jsonUrl: "https://1.wwwpreview.s81c.com/common/translations"
},
userStateUrl: "https://idaas.iam.ibm.com/v1/mgmt/idaas/user/status/"
}
};
e.extend(!0, t.common.config, o.production), (i = document.cookie.match(/__forcev18env=(\w*)/)) && "" !== i[1] && (n = i[1]), "production" !== n && o[n] && (e.extend(!0, t.common.config, o[n]), t.common.config.forced = !0), window.digitalData && window.digitalData.page && window.digitalData.page.pageInfo && window.digitalData.page.pageInfo.ibm && e.extend(!0, t.common.config, window.digitalData.page.pageInfo.ibm.config || {})
}(jQuery, IBMCore),
function(r, e) {
var s = e.namespace(e, "common.util.url");
function t(e) {
var t = e.url,
i = t,
n = (-1 < t.indexOf("?") ? t.substr(t.indexOf("?") + 1) : "").split("#")[0],
o = -1 < t.indexOf("#") ? t.substr(t.indexOf("#")) : "",
a = {};
return "" !== o && (i = t.substr(0, t.indexOf("#"))), "" !== n && (i = t.substr(0, t.indexOf("?")), a = s.paramsToObject(n)), "add" === e.action ? a[e.paramName] = e.paramValue : "remove" === e.action && delete a[e.paramName], i + "?" + s.objectToQuerystring(a) + o
}
s.addParam = function(e) {
return e.action = "add", t(e)
}, s.removeParam = function(e) {
return e.action = "remove", t(e)
}, s.getAllParams = function(e) {
var t = s.urlParams;
return e && "" !== e && (t = {}, -1 < e.indexOf("?") && (t = s.paramsToObject(e))), t
}, s.getParam = function(e, t) {
var i = s.urlParams[e];
return t && "" !== t && (i = s.paramsToObject(t)[e]), i
}, s.getUrl = function() {
var e = r('link[rel="canonical"]').attr("href");
if (e) return e;
if (-1 !== (e = location.href).indexOf("?")) {
var t, i, n = e.substr(0, e.indexOf("?")),
o = e.substr(e.indexOf("?") + 1).split("&"),
a = /^(cm_re|ca|me|met|re|lnk)=/,
s = [];
for (t = 0, i = o.length; t < i; t++) a.test(o[t]) || s.push(o[t]);
e = 0 < s.length ? n + "?" + s.join("&") : n
}
return e
}, s.paramsToObject = function(e) {
var o = {};
return e && "" !== e && (-1 < e.indexOf("?") && (e = e.substr(e.indexOf("?") + 1)), r.each(e.split("&"), function(e, t) {
var i = t.split("="),
n = decodeURIComponent(i[0]);
i[0] = r.trim(i[0]), i[1] = r.trim(i[1]) || "", i[0] && (-1 === n.indexOf("[]") ? o[n] = decodeURIComponent(i[1]) : -1 < n.indexOf("[]") && (o[n] || (o[n] = []), o[n].push(decodeURIComponent(i[1]))))
})), o
}, s.objectToQuerystring = function(e) {
var i = "",
n = 0;
return r.each(e, function(e, t) {
if ("" !== e && "object" != typeof t) i += "&" + e + "=" + t;
else if ("object" == typeof t)
for (n = 0; n < t.length; n++) i += "&" + e + "=" + t[n]
}), i = i.substr(1)
}, s.urlParams = s.paramsToObject(window.location.search.substr(1))
}(jQuery, IBMCore),
function(r, e) {
function i(e, t) {
var n = this;
function i() {
return "rgb(" + n.red + "," + n.green + "," + n.blue + ")"
}
function o(e) {
return "0123456789abcdef".indexOf(e.toLowerCase())
}
function a(e) {
var t = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"];
return t[Math.floor(e / 16)] + t[e % 16]
}
function s(e) {
return e = "#" === e.substr(0, 1) ? e.substr(1) : e, 128 <= (299 * parseInt(e.substr(0, 2), 16) + 587 * parseInt(e.substr(2, 2), 16) + 114 * parseInt(e.substr(4, 2), 16)) / 1e3 ? "black" : "white"
}
n.red = 0, n.green = 0, n.blue = 0, n.alpha = 0, n.accessibleTextColor = null, n.setColor = function(e) {
var t, i = e;
"#" === i.charAt(0) ? (4 === i.length && (i = "#" + i.charAt(1) + i.charAt(1) + i.charAt(2) + i.charAt(2) + i.charAt(3) + i.charAt(3)), n.red = 16 * o(i.charAt(1)) + o(i.charAt(2)), n.green = 16 * o(i.charAt(3)) + o(i.charAt(4)), n.blue = 16 * o(i.charAt(5)) + o(i.charAt(6)), n.alpha = 1, n.accessibleTextColor = s(i)) : (t = (t = i.substring(i.indexOf("(") + 1, i.indexOf(")"))).split(","), n.red = parseInt(t[0], 10), n.green = parseInt(t[1], 10), n.blue = parseInt(t[2], 10), n.alpha = parseFloat(t[3], 10), n.accessibleTextColor = s(n.hex()))
}, n.hex = function() {
return "#" + a(n.red) + a(n.green) + a(n.blue)
}, n.rgb = i, n.rgba = function() {
if (r.browser.msie && r.browser.versionNumber < 8) return i();
return "rgba(" + n.red + "," + n.green + "," + n.blue + "," + n.alpha + ")"
}, void 0 !== e && n.setColor(e), void 0 !== t && (n.alpha = t)
}
e.namespace(e, "common.util.color").createColor = function(e, t) {
return new i(e, t)
}
}(jQuery, IBMCore),
function(e, t) {
var o = t.namespace(t, "common.util.cookie");
o.set = function(e, t, i) {
var n, o = null;
(n = (i = i || {}).expires) && (n.toUTCString ? o = n : "number" == typeof n && (o = new Date).setTime(o.getTime() + 1e3 * parseInt(n, 10))), document.cookie = e + "=" + encodeURIComponent(t) + (o ? "; expires=" + o.toUTCString() : "") + (i.path ? "; path=" + i.path : "") + (i.domain ? "; domain=" + i.domain : "") + (i.secure ? "; secure" : "")
}, o.get = function(e) {
var t, i = e + "=",
n = document.cookie.indexOf(i);
if (-1 === n) return null;
if (0 < n) {
if (-1 === (n = document.cookie.indexOf("; " + i))) return null;
n += 2
}
return -1 === (t = document.cookie.indexOf(";", n)) && (t = document.cookie.length), decodeURIComponent(document.cookie.substring(n + i.length, t))
}, o.remove = function(e, t, i) {
var n = o.get(e);
return null !== n && (document.cookie = e + "=" + (t ? "; path=" + t : "") + (i ? "; domain=" + i : "") + "; expires=" + new Date(0).toUTCString()), n
}, o.isSupported = function() {
var e = "allowsCookies",
t = !1;
return o.set(e, 1), 1 === parseInt(o.get(e)) && (o.remove(e), t = !0), t
}
}(jQuery, IBMCore),
function(r, l) {
var e = l.namespace(l, "common.util.data"),
c = {
url: "https://www.ibm.com/common/translations/{TOKEN}/{CC}/{LC}/{ENC}.js",
cc: null,
lc: null,
enc: null
};
function d(e) {
return !!l.common.translations.data[e]
}
e.get = function(n, o, e) {
var a, t, i, s = !0;
if (n) {
for (r.isArray(n) || (n = [n]), t = 0, i = n.length; t < i; t++) s = s && d(n[t]);
s ? "function" == typeof o && o(l.common.translations.data) : (a = r.extend(c, e), l.common.util.queue.push(function() {
return l.common.meta.isLoaded
}, function() {
var e, t, i = function(t) {
var e = a.url.replace("{CC}", a.cc || l.common.util.meta.getPageCc()).replace("{LC}", a.lc || l.common.util.meta.getPageLc()).replace("{TOKEN}", t).replace("{ENC}", a.enc || l.common.meta.page.pageInfo.ibm.encoding);
r.ajax({
url: e,
dataType: "script",
cache: !0
}).fail(function(e) {
window.console.error("v18: Error while loading translation file for token: " + t, e)
})
};
for (e = 0, t = n.length; e < t; e++) d(n[e]) || i(n[e]);
l.common.util.queue.push(function() {
var e, t, i = !0;
for (e = 0, t = n.length; e < t; e++) i = i && d(n[e]);
return i
}, function() {
"function" == typeof o && o(l.common.translations.data)
})
}))
}
}, e.provide = function(e, t) {
l.common.translations.data[e] = t
}, window.ibmweb = window.ibmweb || {}, l.namespace(window.ibmweb, "data"), window.ibmweb.data.provide = e.provide
}(jQuery, IBMCore),
function(u) {
var m = !1;
function n(a, s, e) {
var t, r = this,
l = {},
c = null,
d = null,
i = e.length;
for (t = 0; t < i; t++) l[e[t].toLowerCase()] = new o(a, e[t].toLowerCase());
function n() {
if (c) try {
switch (arguments.length) {
case 0:
c.fn.call(a);
break;
case 1:
c.fn.call(a, arguments[0]);
break;
case 2:
c.fn.call(a, arguments[0], arguments[1])
}
} catch (e) {
window.console.warn("The [" + c.owner + "] subscription to the " + a + "[" + c.event_name + "] event failed with error:"), window.console.error(e)
}
}
r.handlers = function() {
return l
}, r.mergeWith = function(e) {
c = null;
var t, i, n = ["subscribe", "unsubscribe", "resumeSubscription", "pauseSubscription", "publish", "handlers", "stopPropagation"],
o = n.length;
for (t = 0; t < o; t++) void 0 === a[i = n[t]] ? a[i] = r[i] : window.console.warn("Cannot merge event handler method '" + i + "' for " + a.toString() + ".");
a.instanceName = function(e) {
if (0 === arguments.length) return d;
d = e
}, a.toString = function() {
return d ? "[ {{class_name}}: {{instance_name}} ]".replace("{{class_name}}", s).replace("{{instance_name}}", d) : "[ {{class_name}} ]".replace("{{class_name}}", s)
}, a.event_coordinator = r
}, r.subscribe = function(e, t, i, n) {
if (c = null, void 0 === t) return window.console.warn("Cannot call on() with an undefined owner."), r;
var o = l[e.toLowerCase()];
o ? o.add(t, i, n) : window.console.warn("on() - No event name found: " + e);
return c = {
fn: i,
owner: t,
event_name: e
}, r
}, r.unsubscribe = function(e, t) {
if (c = null, void 0 === e) return window.console.warn("Cannot call unsubscribe() with an undefined event_name."), r;
var i = l[e.toLowerCase()];
t ? i.remove(t) : i.reset();
return r
}, r.resumeSubscription = function(e, t) {
if (c = null, void 0 === e) return window.console.warn("Cannot call resumeSubscription() with an undefined event_name."), r;
var i = l[e.toLowerCase()];
i ? void 0 !== t ? i.resumeSubscription(t) : i.resumeAllSubscriptions() : window.console.warn("resumeSubscription() - No event name found: " + e);
return r
}, r.pauseSubscription = function(e, t) {
if (c = null, void 0 === e) return window.console.warn("Cannot call pauseSubscription() with an undefined event_name."), r;
var i = l[e.toLowerCase()];
i ? void 0 !== t ? i.pauseSubscription(t) : i.pauseAllSubscriptions() : window.console.warn("pauseSubscription() - No event name found: " + e);
return r
}, r.publish = function(e) {
if (c = null, void 0 === e) return window.console.warn("Cannot call publish() with an undefined event_name."), r;
var t = l[e.toLowerCase()];
if (t) {
if (0 < t.activeOwners().length) switch (arguments.length) {
case 1:
t.publish();
break;
case 2:
t.publish(arguments[1])
}
} else window.console.warn("publish() - No event name found: " + e);
return r
}, r.stopPropagation = function() {
m = !0
}, r.runNow = n, r.runAsap = function() {
if (c) {
var e = l[c.event_name.toLowerCase()].runCount();
0 < e && n()
} else window.console.warn("Event '" + c.event_name + "' for '" + c.owner + " has no function available to run.")
}, r.mergeWith(a)
}
function o(a, s) {
var t = this,
r = 0,
l = 0,
c = {},
d = [];
t.activeOwners = function() {
var e, t = [];
for (e in c) c[e] && t.push(e);
return t
}, t.events = d, t.runCount = function() {
return r
}, t.add = function(e, t, i) {
void 0 === c[e] && (c[e] = !0);
d[i ? "unshift" : "push"]({
owner: e,
fn: t,
runs: 0
})
}, t.remove = function(e) {
var t = -1;
for (; ++t < d.length;) d[t].owner === e && (d.splice(t, 1), t--, l++)
}, t.reset = function() {
r = 0, c = {}, l = d.length, d = []
}, t.resumeSubscription = function(e) {
c[e] ? c[e] = !0 : window.console.warn("Cannot resumeSubscription function with an unknown owner: " + s);
return t
}, t.pauseSubscription = function(e) {
c[e] ? c[e] = !1 : window.console.warn("Cannot pauseSubscription function with an unknown owner: " + s);
return t
}, t.resumeAllSubscriptions = function() {
var e;
for (e in c) c[e] = !0;
return t
}, t.pauseAllSubscriptions = function() {
var e;
for (e in c) c[e] = !1;
return t
}, t.publish = function() {
m = !1, r++, l = 0;
var t, e, i, n, o = d.length;
for (t = 0; t < o; t++) {
if (void 0 === (e = d[t - l])) throw window.console.warn("Failed event on:"), window.console.warn(a), "Cannot publish event: " + s;
if (i = e.owner, m) u.common.util.debug.add("log", "Propagation stopped. " + i + " will not publish this time.");
else if (c[e.owner]) {
e.runs++, n = e.fn;
try {
switch (arguments.length) {
case 0:
n.call(a);
break;
case 1:
n.call(a, arguments[0]);
break;
case 2:
n.call(a, arguments[0], arguments[1])
}
} catch (e) {
window.console.warn("Event function[" + t + "] failed. Owner: " + i), window.console.error(e)
}
} else u.common.util.debug.add("log", "The [" + i + "] subscription to the " + a + "[" + s + "] event is not active. (paused)")
}
}
}
u.common.util.eventCoordinator = function(e, t, i) {
return new n(e, t, i)
}
}(IBMCore),
function(t, n) {
var e, i = n.namespace(n, "common.util");
i.addCssRule = function() {
var a, t = document.createElement("style");
try {
a = document.head.appendChild(t).sheet
} catch (e) {
a = document.getElementsByTagName("head")[0].appendChild(t).styleSheet
}
return function(t, i) {
var n, o = "";
if ("string" == typeof i) o = i;
else try {
o = Object.keys(i).map(function(e) {
return e + ":" + ("content" === e ? "'" + i[e] + "'" : i[e])
}).join(";")
} catch (e) {
for (n in i) o += n + ":" + ("content" === n ? "'" + i[n] + "'" : i[n]) + ";"
}
try {
a.insertRule(t + "{" + o + "}", a.cssRules.length)
} catch (e) {
a.addRule(t, o, a.rules.length)
}
}
}(), i.convertSecondsToHMS = function(e) {
var t = parseInt(e, 10),
i = Math.floor(t / 3600),
n = Math.floor((t - 3600 * i) / 60),
o = t - 3600 * i - 60 * n;
return i < 10 && (i = "0" + i), n < 10 && (n = "0" + n), o < 10 && (o = "0" + o), (i = i < 1 ? "" : i + ":") + n + ":" + o
}, i.generateId = function() {
for (var e; n.common.util.idcount++, e = "ibm-dynid-" + n.common.util.idcount, null !== document.getElementById(e););
return e
}, i.idcount = 0, i.getDataAttributes = function(e, n) {
var o = t(e).data() || {};
return t(e)[0] && "" !== n && (o = {}, t.each(t(e).data(), function(e, t) {
var i = "";
0 === e.indexOf(n) && (i = e.substring(n.length), o[i] = t)
})), o
}, i.getScrollbarWidth = function() {
var e, t, i = document.createElement("div"),
n = document.createElement("div");
return i.style.visibility = "hidden", i.style.width = "100px", document.body.appendChild(i), e = i.offsetWidth, i.style.overflow = "scroll", n.style.width = "100%", i.appendChild(n), t = n.offsetWidth, i.parentNode.removeChild(i), e - t
}, i.has12grid = (e = null, function() {
return null === e && (e = 0 !== document.getElementsByClassName("ibm-fluid").length), e
}), i.hasScrollbars = function(e) {
return !!t(e)[0] && t(e)[0].scrollHeight > t(e).innerHeight()
}, i.setIpcCookie = function(e, t) {
if (e && t && 4 === (e + t).length) {
var i = IBMCore.www.module.truste.getUiAllowedStorageTtl(31536e3);
n.common.util.cookie.set("ipcInfo", "cc=" + e + ";lc=" + t + ";ac=all", {
path: "/",
domain: ".ibm.com",
expires: i
})
}
}, n.common.util.string = {}, i.string.htmlspecialchars = function(e) {
return e.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/'/g, "'").replace(/"/g, """).replace(/\//g, "/")
}, String.prototype.htmlspecialchars = function() {
return n.common.util.string.htmlspecialchars(this)
}
}(jQuery, IBMCore),
function(t, i) {
i.common.util.freezeScrollbars = function(e) {
t(document.body)[e ? "addClass" : "removeClass"]("ibm-no-scroll")
}, t(function() {
var e = i.common.util.getScrollbarWidth();
i.common.util.addCssRule(".ibm-no-scroll #ibm-content-wrapper", {
"margin-left": -e + "px"
})
})
}(jQuery, IBMCore),
function(l) {
function t(e) {
var t = this,
i = l.common.util.eventCoordinator(t, "Gatekeeper", ["ready"]),
n = {};
function o(e) {
var t, i = e.length;
for (t = 0; t < i; t++) a(e[t])
}
function a(e) {
return n[e] = !0, t
}
function s() {
return r() && i.publish("ready"), t
}
function r() {
var e, t = !0;
for (e in n) n[e] && (t = !1);
return t
}
e instanceof Array ? o(e) : "string" == typeof e && a(e), t.addHolds = o, t.addHold = a, t.removeHold = function(e) {
!0 !== n[e] ? window.console.warn("v18: Removing a hold that does not exist: " + e + ". If the hold is added after, this removal will have no effect.") : (n[e] = !1, s());
return t
}, t.getHolds = function() {
var e, t = [];
for (e in n) n[e] && t.push(e);
return t
}, t.removeAllHolds = function() {
n = {}, s()
}, t.isReady = r
}
l.common.util.gatekeeper = function(e) {
return new t(e)
}
}(IBMCore),
function(o, a) {
a.namespace(a, "common.util").getCurrentGridSize = function() {
var e = window.innerWidth,
t = 0;
switch (o("html.safari")[0] && (e = o(document.body).width()), !0) {
case 1480 <= e:
t = 1440;
break;
case 1240 <= e:
t = 1200;
break;
case 1e3 <= e:
t = 960;
break;
case 760 <= e:
t = 720;
break;
case 580 <= e:
t = 540;
break;
case e < 580:
t = 0
}
return t
}, o(function() {
var e = !1,
t = null,
i = {
0: "small",
540: "medium",
720: "medium",
960: "large",
1200: "xlarge",
1440: "xlarge"
};
function n() {
var e = a.common.util.getCurrentGridSize();
e !== t && (t = e, o(document.documentElement).removeClass("ibm-grid-small ibm-grid-medium ibm-grid-large ibm-grid-xlarge").addClass("ibm-grid-" + i[e]), a.common.widget.manager.dispatchEvent({
evtEl: document.documentElement,
evtName: "grid-change",
evtDetail: {
gridnum: e
}
}))
}
n(), o(window).on("resize", function() {
e = !0
}), setInterval(function() {
e && (e = !1, n())
}, 50)
})
}(jQuery, IBMCore),
function(a, e) {
var s = e.namespace(e, "common.util.queue");
function i() {
if (!s._lock && 0 !== s._queue.length) {
s._lock = !0;
var e = 0,
t = s._queue.length;
for (e = 0, t = s._queue.length; e < t; e++) s._queue[e][1]() && (s._queue[e][2](), s._queue.splice(e, 1), e--, t = s._queue.length);
s._lock = !1, s._timer = setTimeout(i, 50)
}
}
s._queue = [], s._timer = null, s._count = 0, s._lock = !1, s.push = function(e, t) {
return s._count++, s._queue.push([s._count, e, t]), i(), s._count
}, s.unshift = function(e, t) {
return s._count++, s._queue.unshift([s._count, e, t]), i(), s._count
}, s.remove = function(e) {
var t = 0,
i = s._queue.length;
for (t = 0, i = s._queue.length; t < i; t++)
if (s._queue[t][0] === e) return s._queue.splice(t, 1), !0;
return !1
}, s.waitForElement = function(e, t, i) {
var n = !1,
o = s.push(function() {
return null !== document.getElementById(e)
}, function() {
n || (n = !0, t())
});
void 0 !== i && !0 === i && a(function() {
n || (n = !0, s.remove(o), t())
})
}
}(jQuery, IBMCore),
function(n, o) {
var a = o.namespace(o, "common.meta"),
e = o.namespace(o, "common.util.meta"),
s = o.common.util.eventCoordinator(a, "Meta", ["dataReady"]);
a.isLoaded = !1, a.init = function() {
if (IBMPerformance.mark("V18-meta-info-end"), IBMPerformance.measure("V18-meta-wait-duration", "V18-meta-info-begin", "V18-meta-info-end"), window.digitalData = window.digitalData || {}, n.extend(!0, a, window.digitalData), a.page && a.page.pageInfo) {
var e = a.page.pageInfo.ibm,
t = document.documentElement.lang,
i = {
pt: "br",
zh: "cn",
de: "de",
es: "es",
fr: "fr",
it: "it",
ja: "jp",
ko: "kr"
};
e.wwCase = "", e.cc = "", e.lc = "", e.country && (e.cc = n.trim(e.country.toLowerCase()), -1 < e.cc.indexOf(",") && (e.cc = n.trim(e.cc.substring(0, e.cc.indexOf(",")))), "gb" === e.cc && (e.cc = "uk"), "zz" === e.cc && (e.cc = "us", e.wwCase = "Y")), a.page.pageInfo.language && (e.lc = a.page.pageInfo.language.substring(0, 2).toLowerCase()), t && (e.lc = e.lc || t.substring(0, 2).toLowerCase(), e.cc = e.cc || t.substring(3, 5).toLowerCase()), e.lc = e.lc || "en", e.cc = e.cc || "us", e.cc = o.common.util.config.get("meta.cc") || e.cc, e.lc = o.common.util.config.get("meta.lc") || e.lc, e.cpi = e.cc + e.lc, "us" === e.cc && "en" !== e.lc && i[e.lc] && (e.cpi = i[e.lc] + e.lc), e.subject || (e.subject = "ZZ999"), e.encoding = "utf8", e.encodingRaw = "UTF-8", n("meta[charset]")[0] && (e.encodingRaw = n("meta[charset]").attr("charset"), e.encoding = e.encodingRaw.replace("-", "").replace("_", "").toLowerCase()), e.title = "", n("title")[0] && (e.title = n("title")[0].innerHTML), !1 === n(document.body).data("coremodules_enabled") && o.common.util.config.set({
coremodules: {
enabled: !1
}
}), !1 === n(document.body).data("contentwidgets_enabled") && o.common.util.config.set({
contentwidgets: {
enabled: !1
}
}), n.extend(!0, window.digitalData.page, a.page), s.publish("dataReady")
}
}, e.changePageLocale = function(e) {
var t = e.substr(0, 2).toLowerCase(),
i = e.substr(3).toUpperCase();
window.digitalData.page.pageInfo.ibm.country = i, window.digitalData.page.pageInfo.language = t + "-" + i, a.init()
}, e.getPageCc = function() {
return o.common.meta.page.pageInfo.ibm.cc
}, e.getPageLc = function() {
return o.common.meta.page.pageInfo.ibm.lc
}, a.subscribe("dataReady", "self", function() {
a.isLoaded = !0
}), IBMPerformance.mark("V18-meta-info-begin"), o.common.util.queue.waitForElement("ibm-top", a.init, !0)
}(jQuery, IBMCore),
function(i, e) {
var t = e.namespace(e, "common.util.anchorlinkAdjustment");
t.adjustLinks = function(e) {
i(e).on("click", "a", function(e) {
e.preventDefault(), t.gotoElement(this.getAttribute("href"))
})
}, t.gotoElement = function(e) {
var t = i(e).offset().top - 60;
window.scroll(0, t)
}
}(jQuery, IBMCore),
function(s, e) {
e.namespace(e, "common.util").scrolledintoview = function(e) {
var t = s(e),
i = s(window),
n = i.scrollTop(),
o = n + i.height(),
a = t.offset().top;
return a + t.height() <= o && n <= a
}
}(jQuery, IBMCore),
function(n, o) {
var e = o.namespace(o, "common.util.scrolltracker");
e.autoInit = function() {
o.common.util.config.isEnabled("scrolltracker") && e.init()
}, e.init = function() {
var e = 0,
t = 0,
i = !1;
n(window).on("scroll", function() {
i = !0
}), setInterval(function() {
i && (i = !1, t = Math.floor(n(window).scrollTop() / 400), e < t && (e = t, o.common.util.statshelper.fireEvent({
ibmEV: "scroll distance",
ibmEvGroup: o.common.util.getCurrentGridSize() + " grid",
ibmEvAction: 400 * e,
ibmEvModule: n(document.body).height()
})))
}, 50)
}, o.common.meta.subscribe("dataReady", "scrolltracker", e.autoInit)
}(jQuery, IBMCore),
function(a, o) {
var e = o.namespace(o, "common.util.statshelper");
e.fireEvent = function(e) {
var t, i, n = document.getElementsByTagName("h2")[0],
o = ["Group", "Name", "Module", "Section", "Target", "FileSize", "LinkTitle"];
for (e.ibmEvLinkTitle || e.ibmEvLinktitle || n && n.innerHTML && a.extend(e, {
ibmEvLinkTitle: n.innerHTML
}), t = o.length - 1; 0 <= t; t--) e[i = "ibmEv" + o[t]] || (e[i] = "null");
"undefined" != typeof ibmStats && ibmStats.event ? ibmStats.event(e) : window.console.warn("v18: ibmStats.event doesn't exist yet, cannot fire event: ", e)
}, e.getCustomEventParams = function(e) {
var t = o.common.util.getDataAttributes(e, "ibmevent_"),
i = {
ibmev: "ibmEV",
ibmevaction: "ibmEvAction",
ibmevname: "ibmEvName",
ibmevmodule: "ibmEvModule",
ibmevgroup: "ibmEvGroup",
ibmevsection: "ibmEvSection",
ibmevlinktitle: "ibmEvLinkTitle",
ibmevfilesize: "ibmEvFileSize",
ibmevtarget: "ibmEvTarget"
},
n = {};
return a.each(t, function(e, t) {
n[i[e]] = t
}), n
}
}(jQuery, IBMCore),
function(e, t) {
var s = t.namespace(t, "common.util.storage");
s.clear = function() {
return !!s.isSupported() && (localStorage.clear(), !0)
}, s.getItem = function(e) {
IBMPerformance.mark("V18-storage-get-begin");
var t = null,
i = 0,
n = (new Date).getTime();
return s.isSupported() ? (null !== localStorage.getItem(e) && (0 !== (i = JSON.parse(localStorage.getItem(e)).expires) && i < n ? s.removeItem(e) : t = JSON.parse(localStorage.getItem(e)).value), IBMPerformance.mark("V18-storage-get-end"), IBMPerformance.measure("V18-storage-get-duration-" + e, "V18-storage-get-begin", "V18-storage-get-end"), t) : null
}, s.isSupported = function() {
return Modernizr.localstorage && "undefined" != typeof JSON
}, s.removeItem = function(e) {
return !!s.isSupported() && (localStorage.removeItem(e), !0)
}, s.setItem = function(e, t, i) {
IBMPerformance.mark("V18-storage-set-begin");
var n, o = 0,
a = (new Date).getTime();
return !!s.isSupported() && (s.removeItem(e), i && (o = 1e3 * i, o += a), n = {
value: t,
expires: o
}, localStorage.setItem(e, JSON.stringify(n)), IBMPerformance.mark("V18-storage-set-end"), IBMPerformance.measure("V18-storage-set-duration-" + e, "V18-storage-set-begin", "V18-storage-set-end"), !0)
}
}(jQuery, IBMCore),
function(t, i) {
var n = i.namespace(i, "common.translations"),
o = i.common.util.eventCoordinator(n, "meta", ["dataAndDomReady", "dataReady", "error"]),
a = i.common.util.storage.getItem("v18mainxl8ns") || {},
s = {
v18: {
data: {},
ready: !1
}
};
function e(e) {
t.extend(!0, n.data, e)
}
n.data = {}, n.isDataLoaded = !1, n.init = function() {
n.data = {}, s.v18.ready = !1, i.common.util.meta.getPageLc() && i.common.util.meta.getPageCc() ? (i.common.util.queue.push(function() {
return s.v18.ready
}, function() {
e(a[i.common.meta.page.pageInfo.ibm.cpi]), e(s.v18.data),
function() {
a[i.common.meta.page.pageInfo.ibm.cpi] = n.data;
var e = {},
t = IBMCore.www.module.truste.getUiAllowedStorageTtl(14400);
e[i.common.meta.page.pageInfo.ibm.cpi] = {
v18main: n.data.v18main
}, i.common.util.storage.setItem("v18mainxl8ns", e, t)
}(), o.publish("dataReady"), t(function() {
o.publish("dataAndDomReady")
})
}), a[i.common.meta.page.pageInfo.ibm.cpi] && a[i.common.meta.page.pageInfo.ibm.cpi].v18main && (s.v18.ready = !0), s.v18.ready || function() {
IBMPerformance.mark("V18-begin-load-i18n");
var e = i.common.config.dataUrl + i.common.meta.page.pageInfo.ibm.cpi + ".js";
t.ajax({
url: e,
dataType: "script",
cache: !0
}).done(function() {
IBMPerformance.mark("V18-end-load-i18n"), IBMPerformance.measure("V18-load-i18n", "V18-begin-load-i18n", "V18-end-load-i18n"), s.v18.ready = !0
}).fail(function(e) {
window.console.error("v18: Error while loading main v18 translation file", e), s.v18.ready = !0, o.publish("error")
})
}()) : window.console.error("v18: Page is missing required digitalData object language and country code. v18 JS cannot continue.")
}, n.subscribe("dataReady", "self", function() {
n.isDataLoaded = !0
}), i.common.meta.subscribe("dataReady", "translations", n.init).runAsap(n.init)
}(jQuery, IBMCore),
function(o, a) {
var e, t, i, n, s, r, l = a.namespace(a, "common.util.user"),
c = a.common.util.eventCoordinator(l, "user", ["userIpDataReady", "userIBMDataReady", "userstateReady", "error", "ready"]),
d = ["annual_sales", "audience", "audience_segment", "b2b", "b2c", "city", "company_name", "country", "country_name", "demandbase_sid", "employee_count", "employee_range", "forbes_2000", "fortune_1000", "industry", "information_level", "ip", "isp", "marketing_alias", "phone", "primary_naics", "primary_sic", "registry_city", "registry_country_code", "registry_state", "state", "stock_ticker", "street_address", "sub_industry", "traffic", "web_site", "zip"],
u = {
cryptKey: "yxsdpqmouenictjarzvkbfhwlg",
decode: function(e) {
if ("boolean" == typeof e) return e;
var t, i = e,
n = "",
o = /[a-z]/;
for (t = 0; t < i.length; t++) o.test(i.charAt(t)) ? n += String.fromCharCode(u.cryptKey.indexOf(i.charAt(t)) + 97) : n += i.charAt(t);
return decodeURIComponent(n)
},
encode: function(e) {
if ("string" != typeof e || !e || "" === e) return e;
var t, i = e.toLowerCase(),
n = "",
o = /[a-z]/;
for (t = 0; t < i.length; t++) o.test(i.charAt(t)) ? n += u.cryptKey.charAt(i.charCodeAt(t) - 97) : n += i.charAt(t);
return encodeURIComponent(n)
}
},
m = (a.common.util.url.getParam("ip"), {
signedin: {
complete: !1
}
}),
p = {
expireDaysBasic: 3,
expireDaysDetailed: 3,
key: "comusrtag"
},
h = {};
function f() {
IBMPerformance.mark("V18-dbipcall-begin"), o.ajax({
url: "https://api.www.s81c.com/webmaster/dbip/",
dataType: "jsonp",
success: function(e) {
var t, i, n = (t = e, i = {}, o.each(d, function() {
var e = t[this];
null == e ? e = "n/a" : "boolean" != typeof e && (e = e.toString().toLowerCase()), i[this] = e
}), i.information_level = "basic", i);
l.setInfo(n),
function() {
var e, t = {},
i = IBMCore.www.module.truste.getUiAllowedStorageTtl(24 * p.expireDaysDetailed * 3600);
for (e in h) h.hasOwnProperty(e) && (t[u.encode(e)] = u.encode(h[e]));
a.common.util.storage.setItem(p.key, t, i)
}(), IBMPerformance.mark("V18-dbipcall-end"), IBMPerformance.measure("V18-dbipcall-duration", "V18-dbipcall-begin", "V18-dbipcall-end"), c.publish("userIpDataReady")
}
})
}
function g() {
var e = function() {
var e, t, i, n = {},
o = a.common.util.storage.getItem(p.key);
if ("object" == typeof o)
for (e in o) o.hasOwnProperty(e) && (t = u.decode(e), i = u.decode(o[e]), n[t] = i);
return n
}();
e && e.information_level ? (l.setInfo(e), c.publish("userIpDataReady")) : f()
}
function v(e) {
l.setInfo({
signedin: e
})
}
function b() {
a.common.util.config.isEnabled("userstateservice") && o.ajax({
url: a.common.config.userStateUrl,
dataType: "jsonp",
signedIn: !1
}).done(function(e) {
e.user && "Unauthenticated" !== e.user && (this.signedIn = !0)
}).fail(function() {
a.common.util.debug.add("warn", "User service failed.")
}).always(function() {
v(this.signedIn), c.publish("userIBMDataReady"), c.publish("userstateReady"), m.signedin.complete = !0
})
}
l.getInfo = function() {
return h
}, l.setInfo = function(e) {
return o.extend(h, e), h
}, l.setUserSigninState = function(e) {
e && e.results && "1" === e.results.signinstate ? v(!0) : v(!1);
m.signedin.complete = !0, c.publish("userIBMDataReady"), c.publish("userstateReady")
}, l.subscribe("userIpDataReady", "self", function() {
l.userIpDataReady = !0
}), l.subscribe("userIBMDataReady", "self", function() {
l.userIBMDataReady = !0
}), l.subscribe("userstateReady", "self", function() {
l.userstateReady = !0
}), l.subscribe("error", "self", function() {}), a.common.util.config.isEnabled("useriplookup") && g(), h.browser_lang = window.navigator.userLanguage || window.navigator.language, e = a.common.util.cookie.get("ipcInfo"), t = [], n = i = "", s = {
ipcinfo: "n/a"
}, e && (t = e.split(";"), o.each(t, function() {
var e = this.split("=");
"cc" === e[0] ? i = e[1] : "lc" === e[0] && (n = e[1])
}), s.ipcinfo = n + "-" + i), l.setInfo(s), r = String(document.cookie).match(/(^| )(w3ibmProfile|w3_sauid|PD-W3-SSO-[^\=]*|OSCw3Session|IBM_W3SSO_ACCESS)=/), l.setInfo({
isIBMer: !!r
}), c.publish("ready"), a.common.meta.subscribe("dataReady", "v18user", b).runAsap(b)
}(jQuery, IBMCore),
function(c, a) {
var e = a.namespace(a, "common.util.a11y");
function d(e) {
e.parent("li").addClass("ibm-active").siblings().removeClass("ibm-active")
}
function u(e) {
e.find("a:visible:eq(0)").focus()
}
function m(e) {
e.find("a:visible:eq(-1)").focus()
}
function p(e) {
var t = e.find("a:visible").index(e.find("a:focus")),
i = e.find("a:visible:eq(" + (t + 1) + ")");
i[0] ? i.focus() : u(e)
}
function h(e) {
var t = e.find("a:visible").index(e.find("a:focus")),
i = e.find("a:visible:eq(" + (t - 1) + ")");
i[0] ? i.focus() : m(e)
}
function l(e) {
var t = e.find("a:focus").closest("li").next("li").find("a");
t[0] ? t.first().focus() : u(e.find("a:focus").closest("ul"))
}
function f(e) {
var t = e.parent("li").prev("li").find("a");
t[0] ? t.first().focus() : m(e.closest("ul"))
}
function n(e, t) {
t[0] && (e.find("a").attr("tabindex", -1), t.attr("tabindex", 0))
}
e.makeTreeAccessible = function(s) {
var r = c(s.el);
s.el && (n(r, r.find("a[aria-selected='true']")), r.on("focus", "a", function(e) {
s.focus && s.focus(this, e)
}).on("keydown", "a", function(e) {
var t, i, n, o, a = c(this);
switch (e.keyCode) {
case 9:
break;
case 32:
e.preventDefault(), a.click();
break;
case 35:
e.preventDefault(), m(r);
break;
case 36:
e.preventDefault(), u(r);
break;
case 37:
e.preventDefault(), (o = (n = a).closest("ul").parent("li"))[0] ? o.children("a").first().focus() : f(n);
break;
case 38:
e.preventDefault(), f(a);
break;
case 39:
e.preventDefault(), (i = (t = r).find("a:focus").closest("li").children("ul"))[0] ? u(i) : l(t);
break;
case 40:
e.preventDefault(), l(r)
}
s.keydown && s.keydown(this, e)
}))
}, e.makeMenuAccessible = function(r) {
var l = c(r.el);
r.el && (l.find(":focusable").attr("tabindex", -1).filter(":first").attr("tabindex", 0), l.on("focus", "a, button", function(e) {
r.focus && r.focus(this, e)
}).on("keydown", "a, button", function(e) {
var t, i, n, o, a, s = c(this);
switch (e.keyCode) {
case 9:
case 27:
l.find(".ibm-active").removeClass("ibm-active");
break;
case 32:
e.preventDefault(), s.click();
break;
case 35:
e.preventDefault(), m(l);
break;
case 36:
e.preventDefault(), u(l);
break;
case 37:
e.preventDefault(),
function(e) {
var t, i = e.closest("ul[role='menu']").parent("li"),
n = e.parent("li");
t = 1 === i.prev("li").length ? i.prev("li") : 0 === i.prev("li").length && 0 < i.siblings("li").length ? i.parent("ul").children("li:last") : 1 === n.prev("li").length ? n.prev("li") : n.siblings("li:last");
t[0] ? u((t = t.siblings().removeClass("ibm-active").end().addClass("ibm-active").find(":focusable").first().focus()).siblings("ul")) : m(e.closest("ul"))
}(s);
break;
case 38:
e.preventDefault(), a = (o = s).parent("li").prev("li"), "menubar" === o.closest("ul").attr("role") ? o.siblings("ul")[0] ? (d(o), u(o.siblings("ul"))) : (h(o.closest("ul")), d(o.closest("ul").children("li:last")), u(o.closest("ul").children("li:last").children("ul"))) : a[0] ? h(o.closest("ul")) : m(o.closest("ul"));
break;
case 39:
e.preventDefault(),
function(e) {
var t, i = e.closest("ul[role='menu']").parent("li"),
n = e.parent("li");
t = 1 === i.next("li").length ? i.next("li") : 0 === i.next("li").length && 0 < i.siblings("li").length ? i.parent("ul").children("li:first") : n.next("li");
t[0] ? u((t = t.siblings().removeClass("ibm-active").end().addClass("ibm-active").find(":focusable").first().focus()).siblings("ul")) : u(e.closest("ul"))
}(s);
break;
case 40:
e.preventDefault(), "menubar" === (t = s).closest("ul").attr("role") ? t.siblings("ul")[0] ? (d(t), u(t.siblings("ul"))) : (p(t.closest("ul")), d(t.parent("li").next("li")), u(t.parent("li").next("li").children("ul"))) : (n = (i = t).closest("li").next("li").find("a"))[0] ? n.first().focus() : u(i.closest("ul"))
}
r.keydown && r.keydown(this, e)
}))
}, e.makeTabsAccessible = function(t) {
var i = c(t.el);
t.el && (n(i, i.find("a[aria-selected='true']")), i.on("focus", "a", function(e) {
t.focus && t.focus(this, e)
}).on("keydown", "a", function(e) {
switch (e.keyCode) {
case 9:
break;
case 32:
e.preventDefault(), c(this).click();
break;
case 35:
e.preventDefault(), m(i);
break;
case 36:
e.preventDefault(), u(i);
break;
case 37:
case 38:
e.preventDefault(), h(i);
break;
case 39:
case 40:
e.preventDefault(), p(i)
}
t.keydown && t.keydown(this, e)
}))
}, e.makeToolbarAccessible = function(t) {
var i = c(t.el);
t.el && i.on("focus", "a", function(e) {
n(i, c(this)), t.focus && t.focus(this, e)
}).on("keydown", "a", function(e) {
switch (e.keyCode) {
case 9:
break;
case 32:
e.preventDefault(), c(this).click();
break;
case 35:
e.preventDefault(), m(i);
break;
case 36:
e.preventDefault(), u(i);
break;
case 37:
case 38:
e.preventDefault(), h(i);
break;
case 39:
case 40:
e.preventDefault(), p(i)
}
t.keydown && t.keydown(this, e)
})
}, e.gotoFirstItem = u, c(function() {
var e, t, i, n, o;
e = c(document.getElementById("ibm-leadspace-head")).find("h1").text() || "", t = c(document.getElementById("ibm-primary-tabs")).find("a[aria-selected='true']").text() || "", i = c(document.getElementById("ibm-secondary-tabs")).find("a[aria-selected='true']").text() || "", n = c(document.getElementById("ibm-primary-links")).children("li").children("a[aria-selected='true']").text() || "", o = c(document.getElementById("ibm-primary-links")).children("li").find("a[aria-selected='true']").text() || "", c("main").removeAttr("aria-labelledby").attr("aria-label", c.trim(o + " " + i + " " + n + " " + t + " " + e)), document.getElementById("ibm-primary-tabs") && !c("#ibm-primary-tabs[data-widget]")[0] && setTimeout(function() {
a.common.util.a11y.makeTabsAccessible({
el: document.getElementById("ibm-primary-tabs")
})
}, 100), document.getElementById("ibm-secondary-tabs") && !c("#ibm-secondary-tabs[data-widget]")[0] && setTimeout(function() {
a.common.util.a11y.makeTabsAccessible({
el: document.getElementById("ibm-secondary-tabs")
})
}, 100)
})
}(jQuery, IBMCore),
function(n, o) {
function t() {
var e = o.common.util.config.get("survey.global_percent"),
t = "n/a",
i = o.common.util.user.getInfo().country;
0 !== e && "number" != typeof e && (e = "not set"), e = e.toString();
try {
t = navigator.connection.effectiveType
} catch (e) {}
"n/a" === i && (i = o.common.util.user.getInfo().registry_country_code), o.common.util.statshelper.fireEvent({
ibmEV: "page load",
ibmEvAction: "v18 page tracker",
ibmEvFileSize: window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth,
ibmEvGroup: t,
ibmEvLinkTitle: o.common.util.getCurrentGridSize(),
ibmEvModule: o.common.util.config.get("masthead.type"),
ibmEvName: n(document.documentElement).hasClass("hires") ? "1" : "0",
ibmEvSection: e,
attribute1: o.common.util.meta.getPageLc() + "-" + o.common.util.meta.getPageCc(),
attribute2: i + "^" + o.common.util.user.getInfo().browser_lang,
attribute3: o.common.util.user.getInfo().ipcinfo,
attribute4: o.common.util.user.getInfo().signedin ? "true" : "false"
})
}
n(function() {
setTimeout(function() {
var e = o.common.util.gatekeeper();
e.addHolds(["ipdata", "ibmdata"]), e.subscribe("ready", "v18pagetacker", t), o.common.util.user.subscribe("userIpDataReady", "v18tipdata", function() {
e.removeHold("ipdata")
}).runAsap(function() {
e.removeHold("ipdata")
}), o.common.util.user.subscribe("userIBMDataReady", "v18tibmdata", function() {
e.removeHold("ibmdata")
}).runAsap(function() {
e.removeHold("ibmdata")
})
}, 1500)
})
}(jQuery, IBMCore),
function(e, i) {
var n = i.namespace(i, "common.util.bitly");
n.shorten = function(t) {
t.url || (t.url = window.location.href), e.ajax({
url: "http:" === window.location.protocol ? "http://api.bit.ly/v3/shorten" : "https://api-ssl.bit.ly/v3/shorten",
dataType: "script",
data: {
login: i.common.config.bitly.login,
apiKey: i.common.config.bitly.key,
longUrl: t.url,
format: "json",
callback: "IBMCore.common.util.bitly._callback"
},
timeout: i.common.config.bitly.timeout,
error: function(e) {
window.console.error("v18: Error while getting bit.ly URL", e), t.error && t.error(t.url)
}
}), n._callback = function(e) {
e && e.status_code && 200 === e.status_code || (window.console.error("v18: Error while getting bit.ly URL", e), t.error && t.error(t.url)), t.success && t.success(e.data.url)
}
}
}(jQuery, IBMCore),
function(t, i) {
var e, n, o = i.namespace(i, "www.module.truste"),
a = i.common.util.eventCoordinator(o, "truste", ["ready"]),
s = "Cookie preferences";
function r() {
var e = i.common.translations.data.v18main.misc.cookiePrefs || s;
"es" === i.common.util.meta.getPageLc() && e === s ? e = "Configuración de Cookies" : "fr" === i.common.util.meta.getPageLc() && e === s && (e = "Préférences relatives aux témoins"), t(".ibm-footer-corporate-links ul").children("#ibm-truste-cp").remove().end().append('<li id="ibm-truste-cp"><a href="#" onclick="truste.eu.clickListener();return false;">' + e + "</a></li>")
}
o.init = function() {
"fr" === i.common.util.meta.getPageLc() && "ca" === i.common.util.meta.getPageCc() && "fr_CA"
}, o.getConsentDecision = function(e, t) {
e || (e = "ibm.com");
try {
var i = truste.cma.callApi("getConsentDecision", e);
return t ? i : i.consentDecision
} catch (e) {
return 0
}
}, o.getUiAllowedStorageTtl = function(e) {
return 1 < IBMCore.www.module.truste.getConsentDecision() ? e : 14400
}, i.www.module.truste.subscribe("ready", "self", function() {}), i.common.translations.subscribe("dataReady", "truste", o.init), e = i.common.util.queue.push(function() {
return "undefined" != typeof truste
}, function() {
window.top.postMessage('{"PrivacyManagerAPI":{"action":"getConsent","timestamp":' + (new Date).getTime() + "}}", "*"), a.publish("ready"), i.common.module.footer.subscribe("ready", "truste", r).runAsap(r), clearTimeout(n)
}), n = setTimeout(function() {
i.common.util.queue.remove(e), i.common.util.debug.add("log", "Truste library didn't load in time. Cookie preference link not injected.")
}, 5e3)
}(jQuery, IBMCore),
function(i, n) {
var e = n.namespace(n, "common.module.backtotop"),
o = !1,
a = {
btt: {}
},
t = !1,
s = i(window).height();
function r() {
!t && i(window).scrollTop() > s ? (a.btt.addClass("ibm-active").children("a").attr("tabindex", "0"), t = !0) : t && i(window).scrollTop() < s && (a.btt.removeClass("ibm-active").children("a").attr("tabindex", "-1"), t = !1)
}
e.autoInit = function() {
n.common.util.config.isEnabled("backtotop") && e.init()
}, e.init = function() {
var e = document.getElementById("ibm-content-wrapper") || document.getElementById("ibm-pcon") || document.getElementById("ibm-content-main") || i(n.common.util.config.get("backtotop.container"))[0],
t = n.common.translations.data.v18main.misc.backtotop;
i(window).scroll(function() {
o = !0
}), setInterval(function() {
o && (o = !1, r())
}, 500), i(function() {
i(e).find(".ibm-btt-auto").remove(), i('<p class="ibm-ind-link ibm-nospacing ibm-icononly ibm-btt-auto ibm-hidden-small"><a class="ibm-nospacing ibm-chevron-up-link" href="#top" tabindex="-1">' + t + "</a></p>").appendTo(e).children("a").on("click", function(e) {
var t = i(window).scrollTop() / 16;
e.preventDefault(), i("html, body").animate({
scrollTop: 0
}, t)
}), a.btt = i(document.getElementsByClassName("ibm-btt-auto")[0]), r()
})
}, n.common.translations.subscribe("dataReady", "backtotop", e.autoInit).runAsap(e.autoInit)
}(jQuery, IBMCore),
function(e, t) {
function i() {
t.common.module.canadanotice || "ca" !== t.common.util.meta.getPageCc() || "en" !== t.common.util.meta.getPageLc() && "fr" !== t.common.util.meta.getPageLc() || e.ajax({
url: t.common.util.config.get("jsFilesUrl") + "canada-notice.js",
dataType: "script",
cache: !0
})
}
t.common.meta.subscribe("dataReady", "canadanotice", i).runAsap(i)
}(jQuery, IBMCore),
function(r, t) {
var i, n = t.namespace(t, "common.module.contactmodule"),
o = t.common.util.eventCoordinator(n, "contactmodule", ["ready"]),
a = ["blue-60", "blue-50", "green-50", "magenta-50", "orange-50", "purple-50", "red-50", "teal-50"],
s = "Contact IBM",
l = {
contactModule: {},
cmButton: {}
},
e = {
"en-bn": "asean-imt",
"en-id": "asean-imt",
"en-my": "asean-imt",
"en-ph": "asean-imt",
"en-sg": "asean-imt",
"en-th": "asean-imt",
"en-vn": "asean-imt",
"en-au": "anz-imt",
"en-nz": "anz-imt",
"en-bu": "benelux-imt",
"en-lu": "benelux-imt",
"en-nl": "benelux-imt",
bg_bg: "cee-imt",
cs_cz: "cee-imt",
"en-az": "cee-imt",
"en-cz": "cee-imt",
"en-ee": "cee-imt",
"en-hr": "cee-imt",
"en-hu": "cee-imt",
"en-lt": "cee-imt",
"en-lv": "cee-imt",
"en-ro": "cee-imt",
et_ee: "cee-imt",
hr_hr: "cee-imt",
hu_hu: "cee-imt",
lt_lt: "cee-imt",
lv_lv: "cee-imt",
"pl-pl": "cee-imt",
ro_ro: "cee-imt",
"ru-ru": "cee-imt",
sk_sk: "cee-imt",
sl_si: "cee-imt",
sr_rs: "cee-imt",
uk_ua: "cee-imt",
"de-at": "dach-imt",
"de-ch": "dach-imt",
"de-de": "dach-imt",
"de-li": "dach-imt",
"en-at": "dach-imt",
"en-ch": "dach-imt",
"en-li": "dach-imt",
"fr-ch": "dach-imt",
"it-ch": "dach-imt",
"en-ma": "france-imt",
"en-mc": "france-imt",
"fr-fr": "france-imt",
"fr-mc": "france-imt",
"en-hk": "greater-china-imt",
"ko-kr": "greater-china-imt",
"zh-cn": "greater-china-imt",
"zh-tw": "greater-china-imt",
"en-in": "isa-imt",
"en-pk": "isa-imt",
"it-it": "italy-imt",
"ja-jp": "japan-imt",
"en-bz": "latin-america-imt",
"es-ar": "latin-america-imt",
"es-bz": "latin-america-imt",
"es-cl": "latin-america-imt",
"es-co": "latin-america-imt",
"es-ec": "latin-america-imt",
"es-mx": "latin-america-imt",
"es-pe": "latin-america-imt",
"es-sv": "latin-america-imt",
"es-uy": "latin-america-imt",
"es-ve": "latin-america-imt",
"pt-br": "latin-america-imt",
"en-ng": "mea-imt",
"en-za": "mea-imt",
"da-dk": "nordic-imt",
"en-dk": "nordic-imt",
"en-fi": "nordic-imt",
"en-is": "nordic-imt",
"en-no": "nordic-imt",
"en-se": "nordic-imt",
"fi-fi": "nordic-imt",
"no-no": "nordic-imt",
"sv-se": "nordic-imt",
"en-cy": "spgi-imt",
"en-gr": "spgi-imt",
"en-il": "spgi-imt",
"en-mt": "spgi-imt",
"en-pt": "spgi-imt",
"es-es": "spgi-imt",
"pt-pt": "spgi-imt",
"en-gb": "uk-imt",
"en-ie": "uk-imt",
"en-uk": "uk-imt"
},
c = "",
d = {
bgColorClass: "",
buttonColorClass: "",
color: "blue-60"
};
function u() {
if (!l.contactModule.find("h3")[0] || "" === r.trim(l.contactModule.find("h3").text())) {
var e = "Considering a Purchase?";
try {
switch (c) {
case "de-de":
e = "Wir beraten Sie gerne.";
break;
case "es-es":
e = "¿Está considerando la compra?";
break;
case "es-sv":
case "es-mx":
case "es-cl":
case "es-co":
case "es-ar":
case "es-pe":
case "es-ve":
case "es-ec":
case "es-uy":
case "es-bz":
case "es-cr":
case "es-hn":
e = "¿Está considerando comprar?";
break;
case "fr-ca":
e = "Achat en vue?";
break;
case "fr-fr":
e = "Vous envisagez un achat ?";
break;
case "it-it":
e = "Stai considerando di fare un acquisto?";
break;
case "ja-jp":
e = "ãŠå•ã„åˆã‚ã›ã¯ã“ã¡ã‚‰";
break;
case "ko-kr":
e = "구매를 ê³ ë ¤í•˜ì‹ë‹ˆê¹Œ?";
break;
case "pl-pl":
e = "Myślisz o zakupie?";
break;
case "pt-br":
e = "Pensando em comprar?";
break;
case "ru-RU":
e = "Планируете покупку?";
break;
case "tr-tr":
e = "Satın almayı mı düşünüyorsunuz?";
break;
case "zh-cn":
e = "考虑è´ä¹°";
break;
case "zh-tw":
e = "詢價"
}
} catch (e) {
window.console.warn("Contact module: Header doesn't exist and page locale default doesn't exist.")
}
l.contactModule.find("h3")[0] ? l.contactModule.find("h3").text(e) : l.contactModule.prepend('<h3 class="ibm-autofill">' + e + "</h3>")
}
l.contactModule.find(".ibm-icononly .ibm-close-link")[0] || l.contactModule.prepend('<p class="ibm-icononly"><a class="ibm-close-link" href="#">Close</a></p>'), l.contactModule.find("ul:last").addClass("ibm-padding-bottom-0"), l.contactModule.find("h2")[0] && "" !== r.trim(l.contactModule.find("h2").text()) && (s = l.contactModule.find("h2").text()), m("LVADVISOR:CM-TAB-CODE", "conversion", "CM-TAB-INSTALLED", null, null, null), l.cmButton[0] || (l.cmButton = r('<button type="button" class="ibm-btn-pri ' + d.bgColorClass + ' ibm-contact-widget-btn ibm-active" value="">' + s + "</button>").appendTo(i).click(function(e) {
e.preventDefault(), n.showContactModule(!0)
})), l.contactCTA.click(function(e) {
e.preventDefault(), n.showContactModule(!0)
}), l.contactModule.find(".ibm-close-link").click(function(e) {
e.preventDefault(), n.showContactModule(!1)
}), setTimeout(function() {
l.contactModule.removeClass("ibm-hide")
}, 1e3), t.common.translations.subscribe("dataready", "contactmodulewidget", p).runAsap(p), o.publish("ready")
}
function m(e, t, i, n, o, a) {
var s = {
eventCategoryGroup: "LVADVISOR"
};
if (s.primaryCategory = e, s.type = t, s.eventName = i, n && (s.eventAction = n), o && (s.eventCallBackCode = o), a && (s.executionPath = a), "undefined" != typeof digitalData && void 0 !== digitalData.page && void 0 !== digitalData.page.isDataLayerReady && !0 === digitalData.page.isDataLayerReady) try {
ibmStats.event(s)
} catch (e) {
window.console.log("Error: " + e)
} else try {
r(document).on("datalayer_ready", function(e) {
ibmStats.event(s)
})
} catch (e) {
window.console.log("Error: " + e)
}
}
function p() {
l.contactModule.find(".ibm-close-link").html(t.common.translations.data.v18main.misc.close)
}
n.autoInit = function() {
t.common.util.config.isEnabled("contactModuleWidget") && r(n.init)
}, n.init = function() {
l.contactModule = r(document.getElementById("ibm-contact-module")), l.contactCTA = r('[data-ibm-contact="contact-link"]'), i = document.getElementById("ibm-content-wrapper") || document.getElementById("ibm-pcon") || document.getElementById("ibm-content-main"), c = t.common.util.meta.getPageLc() + "-" + t.common.util.meta.getPageCc(), e[c] && r(document.documentElement).addClass(e[c]),
function() {
var e = t.common.util.config.get("contactModuleWidget.color");
e && -1 < r.inArray(e, a) && (d.color = e);
d.bgColorClass = "ibm-contact--bg-" + d.color, d.buttonColorClass = "ibm-btn-" + d.color
}(), l.contactModule[0] && l.contactModule.children()[0] ? (l.contactModule.addClass("ibm-contact-widget " + d.bgColorClass + " addtransition ibm-hide"), l.contactModule.attr("aria-hidden", "true"), setTimeout(u, 100)) : o.publish("ready")
}, n.showContactModule = function(e) {
if (e) {
l.contactModule.addClass("ibm-active"), l.contactModule.attr("aria-hidden", "false"), l.cmButton.removeClass("ibm-active"), m("LVADVISOR:CM-TAB-CODE", "conversion", "CM-TAB-EXPANDED", null, null, null);
try {
"object" == typeof window.Chat_Router && window.Chat_Router.isChatAvailable() && window.Chat_Router.chatAnalytics("conversion", "CM-CHAT", "1", null, null)
} catch (e) {
window.console.log("Error: " + e)
}
} else l.contactModule.removeClass("ibm-active"), l.contactModule.attr("aria-hidden", "true"), l.cmButton.addClass("ibm-active")
}, t.common.meta.subscribe("dataReady", "contactmodulewidget", n.autoInit)
}(jQuery, IBMCore),
function(a, s) {
var e = s.namespace(s, "common.module.footermenu"),
r = s.common.util.eventCoordinator(e, "footermenu", ["ready"]),
l = {};
e.isLoaded = !1, e.autoInit = function() {
document.getElementById("ibm-footer-module") && a(document.getElementById("ibm-footer-module")).remove(), s.common.util.config.isEnabled("footermenu") && "alternate" !== s.common.util.config.get("footer.type") && "popup" !== s.common.util.config.get("masthead.type") ? e.init() : a(function() {
r.publish("ready")
})
}, e.init = function() {
var e = "",
n = s.common.util.has12grid() ? "ibm-fluid" : "ibm-columns",
o = s.common.util.has12grid() ? "ibm-col-12-12 ibm-col-8-8" : "ibm-col-1-1";
l = s.common.translations.data.v18main.footerMenu || [], a(function() {
var t, i;
l[0] && l[0].links && 0 < l[0].links.length && (t = "", i = s.common.util.has12grid() ? "ibm-col-12-3 ibm-col-8-2" : "ibm-col-4-1", a.each(l, function() {
var e = "";
a.each(this.links, function() {
e += '<li><a href="' + this.url + '">' + this.title + "</a></li>"
}), t += '<div class="ibm-footermenu-list ' + i + '" aria-label="' + this.title + '"><h3 class="ibm-bold">' + this.title + '</h3><ul class="ibm-plain-list ibm-textcolumns-small-2">' + e + "</ul></div>"
}), e = t), "" !== e && a(document.getElementById("ibm-footer")).before('<div id="ibm-footer-module"><section role="region" aria-label="Resources"><div class="' + n + ' ibm-word-break" id="ibm-footer-module-links">' + e + '</div><div class="' + n + ' ibm-padding-bottom-0"><div class="' + o + '"><div class="ibm-rule ibm-alternate ibm-nospacing ibm-gray-30"><hr></div></div></div></section></div>'), r.publish("ready")
})
}, e.subscribe("ready", "footermenuself", function() {
e.isLoaded = !0
}), s.common.translations.subscribe("dataReady", "footermenu", e.autoInit).runAsap(e.autoInit)
}(jQuery, IBMCore),
function(o, a) {
var e = a.namespace(a, "common.module.footer"),
s = a.common.util.eventCoordinator(e, "Footer", ["ready"]);
e.isLoaded = !1, e.autoInit = function() {
a.common.util.config.isEnabled("footer") ? e.init() : s.publish("ready")
}, e.init = function() {
var t, n = '<div class="ibm-footer-corporate-links ibm-word-break-all">' + (t = "", o.each(a.common.translations.data.v18main.footerThin, function() {
var e = 0 < this.url.indexOf("?lnk") ? "" : "?lnk=flg";
t += '<li><a href="' + this.url + e + '">' + this.title.htmlspecialchars() + "</a></li>"
}), '<ul class="ibm-padding-bottom-0 ibm-textcolumns-small-2">' + t + "</ul>") + "</div>" + function() {
var e = "",
t = "",
i = a.common.translations.data.v18main.socialFollow.title || "Follow IBM";
a.common.util.config.isEnabled("footer.socialLinks") && 0 < a.common.translations.data.v18main.socialFollow.links.length && (o.each(a.common.translations.data.v18main.socialFollow.links, function() {
t += '<a class="' + (this.linkClass || "ibm-forward-link") + '" href="' + this.url + '" target="_blank">' + this.title.htmlspecialchars() + "</a>"
}), e = '<div class="ibm-footer-social-links ibm-fright"><div class="ibm-fleft"><p class="ibm-padding-bottom-0">' + i + '</p></div><div><p class="ibm-ind-link ibm-icononly ibm-padding-bottom-0">' + t + "</p></div></div>");
return e
}();
"popup" === a.common.util.config.get("masthead.type") && a.common.util.config.set({
footer: {
type: "popup"
},
localeselector: {
enabled: !1
}
}), o(function() {
var e, t, i;
o(document.getElementById("ibm-footer")).html((e = n, t = a.common.util.has12grid() ? "ibm-fluid" : "ibm-columns", i = a.common.util.has12grid() ? "ibm-col-12-12 ibm-col-8-8" : "ibm-col-1-1", '<div class="' + t + ' ibm-padding-bottom-0"><div class="' + i + '">' + e + "</div></div>")), s.publish("ready")
})
}, e.subscribe("ready", "footerself", function() {
e.isLoaded = !0
}), a.common.translations.subscribe("dataReady", "Footer", e.autoInit).runAsap(e.autoInit)
}(jQuery, IBMCore),
function(i, e) {
var t = e.namespace(e, "common.module.leftnav"),
n = {
leftnav: {}
};
t.autoInit = function() {
i(function() {
document.getElementById("ibm-primary-links") && !i(document.getElementById("ibm-primary-links")).hasClass("ibm-widget-processed") && t.init()
})
}, t.init = function() {
n.leftnav = i(document.getElementById("ibm-primary-links")), n.leftnav.find(".ibm-subnav-heading").each(function() {
var e = i(this).parent(),
t = e.wrapInner('<div class="ibm-show-hide" data-type="panel">').children("div");
i(this).wrap("<h2>"), t.children("ul").wrap('<div class="ibm-container-body">'), "true" === e.attr("aria-expanded") && e.find("h2").attr("data-open", !0), t.showhide()
}), setTimeout(function() {
e.common.util.a11y.makeTreeAccessible({
el: n.leftnav
}), e.common.widget.manager.dispatchInitEvent(n.leftnav[0])
}, 100)
}, e.common.meta.subscribe("dataReady", "leftnav", t.autoInit).runAsap(t.autoInit)
}(jQuery, IBMCore),
function(e, t) {
var i = t.namespace(t, "common.module.liveperson");
i.autoInit = function() {
var e = t.common.meta.page.pageInfo.liveperson;
e && e.enabled && e.routing && "" !== e.routing && i.init()
}, i.init = function() {
window.lpEditSkill = window.editskill || t.common.meta.page.pageInfo.liveperson.routing, e(function() {
e.ajax({
url: "https://www.ibm.com/common/digitaladvisor/js/router.js",
dataType: "script",
cache: !0
})
})
}, t.common.module.contactmodule.subscribe("ready", "liveperson-loader", i.autoInit).runAsap(i.autoInit)
}(jQuery, IBMCore),
function(l, c) {
var d = c.namespace(c, "common.module.localeselector"),
u = c.common.util.eventCoordinator(d, "localeselector", ["ready", "error"]),
m = c.common.util.storage.getItem("v18lsdata") || {},
p = "",
e = !1;
function i() {
e || ("alternate" !== c.common.util.config.get("footer.type") ? c.common.module.footermenu.subscribe("ready", "localeselect", t).runAsap(t) : c.common.module.footer.subscribe("ready", "localeselect", t).runAsap(t), e = !0)
}
function t() {
var t, i, n, e;
n = i = t = "", e = m.translations.select, l.each(m.regionList, function() {
l.each(this.countryList, function() {
var e = this.name;
l.each(this.locale, function() {
n = this[0].substr(0, 2), "gb" === (i = this[0].substr(3)) && (i = "uk"), t += '<option data-localecode="' + n + "-" + i + '" value="http://www.ibm.com/' + i + "-" + n + '/?lnk=fcc">' + e + " - " + this[1] + "</option>"
})
})
}), p = '<select class="ibm-fullwidth" aria-label="' + e + '">' + t + "</select>", o()
}
function o() {
var o, e, a = l(document.getElementById("ibm-footer-locale-selector")),
t = l("link[rel='alternate'][hreflang][href]:not([data-exclude='true'])"),
i = c.common.util.has12grid() ? "ibm-fluid" : "ibm-columns",
n = c.common.util.has12grid() ? "ibm-col-12-3 ibm-col-medium-12-6 ibm-col-8-2 ibm-col-medium-8-4" : "ibm-col-4-1 ibm-col-medium-4-2",
s = c.common.util.config.get("localeselector.localVersionsHeading") || c.common.translations.data.v18main.localeSelector.localVersions,
r = c.common.translations.data.v18main.misc.selectCountry || m.translations.select;
a[0] ? a.find("select")[0] && a.find("select").select2 && a.find("select").select2("destroy") : "alternate" !== c.common.util.config.get("footer.type") && 0 < c.common.translations.data.v18main.footerMenu[0].links.length ? l('<div class="ibm-footer-locale-columns ' + i + '"><div id="ibm-footer-locale-selector" class="' + n + ' ibm-fright"></div></div>').insertAfter("#ibm-footer-module-links") : (l(document.getElementById("ibm-footer")).addClass("ibm-alternate"), l('<div id="ibm-footer-locale-selector"></div>').insertAfter(".ibm-footer-corporate-links")), a = l(document.getElementById("ibm-footer-locale-selector")).html('<h3 class="ibm-bold">' + r + "</h3>" + p).children("select"), (o = a.find("option")).sort(function(e, t) {
return e.text > t.text ? 1 : e.text < t.text ? -1 : 0
}), a.html(o).on("change.setCookie", function() {
var e = d.$el.find(":selected").data("localecode");
(e = e.split("-")) && c.common.util.setIpcCookie(e[1], e[0])
}).on("change.defaultAction", function() {
d.defaultOnchangeAction()
}), 0 < t.length ? (o = [], t.sort(function(e, t) {
var i = e.getAttribute("hreflang"),
n = t.getAttribute("hreflang");
return i.length - n.length
}), t.each(function() {
var e = this.getAttribute("hreflang"),
t = this.getAttribute("href"),
i = this.getAttribute("data-label"),
n = null;
"en-gb" === e && (e = "en-uk"), n = a.find("option[data-localecode='" + e + "']"), i ? (o.push(l('<option data-localecode="' + e + '" value="' + t + '">' + i + "</option>")), n.remove()) : 5 === e.length ? n[0] && o.push(n.attr("value", t)) : 2 === e.length && a.find("option[data-localecode^='" + e + "']").each(function() {
o.push(l(this).attr("value", t))
})
}), o.sort(function(e, t) {
return e[0].text > t[0].text ? 1 : e[0].text < t[0].text ? -1 : 0
}), a.wrapInner('<optgroup label="' + c.common.translations.data.v18main.localeSelector.homepages + '"></optgroup>').prepend(l('<optgroup label="' + s + '"></optgroup>').html(o))) : a.wrapInner('<optgroup label="' + c.common.translations.data.v18main.localeSelector.homepages + '"></optgroup>'), e = a.find("option[data-localecode='" + c.common.util.meta.getPageLc() + "-" + c.common.util.meta.getPageCc() + "']").prop("selected", !0), a.find("optgroup:first").prepend(e), c.common.widget.selectlist.init(a, {
width: "100%"
}), d.$el = a, u.publish("ready")
}
d.autoInit = function() {
c.common.util.config.isEnabled("localeselector") && "popup" !== c.common.util.config.get("masthead.type") ? (c.common.util.config.isEnabled("footer") || c.common.util.config.isEnabled("footermenu")) && d.init() : u.publish("ready")
}, d.init = function() {
m.translations ? i() : l.ajax({
url: "https://1.www.s81c.com/common/js/dynamicnav/www/countrylist/usen-utf8.js",
dataType: "script",
cache: !0
}).fail(function(e) {
window.console.error("v18: Error while loading locale selector data file", e), u.publish("error")
})
}, d.dataCallback = function(e) {
var t = IBMCore.www.module.truste.getUiAllowedStorageTtl(86400);
m = e, c.common.util.data.provide("localeSelector", e), c.common.util.storage.setItem("v18lsdata", m, t), i()
}, d.setupLocaleSelector = o, d.defaultOnchangeAction = function() {
var e = {
ibmEV: "widget",
ibmEvAction: "locale selector",
ibmEvGroup: c.common.util.meta.getPageLc() + "-" + c.common.util.meta.getPageCc(),
ibmEvModule: d.$el.find(":selected").data("localecode"),
ibmEvLinkTitle: d.$el.find(":selected").text(),
ibmEvLinkTarget: d.$el.find(":selected").val()
};
"" !== this.value && (c.common.util.statshelper.fireEvent(e), setTimeout(function() {
window.location.href = d.$el.val()
}, 150))
}, window.ibmweb = window.ibmweb || {}, c.namespace(window.ibmweb, "dynnav.localeselector.dataCallback"), window.ibmweb.dynnav.localeselector.dataCallback = d.dataCallback, c.common.meta.subscribe("dataReady", "localeselector", d.autoInit).runAsap(d.autoInit), d.subscribe("ready", "self", function() {})
}(jQuery, IBMCore),
function(n, o) {
o.namespace(o, "common.module.localpagenotification");
var a, e, t, i, s = o.common.util.gatekeeper(),
r = '<div class="ibm-localpagen10n ibm-background-yellow-10"><p class="ibm-center ibm-button-link">You are on the <strong>{cc}</strong> site. Would you like to switch to a localized version? <span class="ibm-localpagen10n-buttons"><a class="ibm-btn-pri ibm-btn-small" href="{url}">Yes</a> <button class="ibm-btn-sec ibm-btn-small">No thanks</button></p></div>',
l = '<div class="ibm-localpagen10n ibm-background-yellow-10"><p class="ibm-center ibm-button-link">Eine <strong>deutsche</strong> Übersetzung dieser Seite ist verfügbar. Möchten Sie dorthin wechseln? <span class="ibm-localpagen10n-buttons"><a class="ibm-btn-pri ibm-btn-small" href="{url}">Ja</a> <button class="ibm-btn-sec ibm-btn-small">Nein danke</button></p></div>';
function c() {
var e = function() {
var e = {},
t = u();
if (2 !== t.userCc.length || "n/a" === t.userCc || t.userCc === t.pageCc) return e;
1 === n("link[rel='alternate'][hreflang='" + t.newLocaleCode + "'][href]").length && (e.url = n("link[rel='alternate'][hreflang='" + t.newLocaleCode + "'][href]").attr("href"), d("mismatch-available", t.pageCc + "-" + t.userCc));
"en" !== t.pageLc && "de-de" !== t.newLocaleCode && (e = {});
return e
}();
o.common.util.cookie.isSupported() && e.url && (! function(e) {
var t = r,
i = "";
"de" === o.common.util.user.getInfo().country.toLowerCase() && (t = l);
i = t.replace("{url}", e.url).replace("{cc}", u().pageCc.toUpperCase()), (a = n(i).prependTo("#ibm-top")).delay(200).slideDown()
}(e), a.on("click", "a, button", function(e) {
var t;
t = IBMCore.www.module.truste.getUiAllowedStorageTtl(86400), o.common.util.cookie.set("v18lpn1", 1, {
path: "/",
domain: ".ibm.com",
expires: t
}), o.common.util.storage.setItem("v18lpn1", 1, t);
var i = this,
n = u();
a.slideUp("fast"), "BUTTON" === i.nodeName ? d("nothanks", n.pageCc + "-" + n.userCc) : (d("okay", n.pageCc + "-" + n.userCc), o.common.util.setIpcCookie(n.userCc, n.pageLc), e.preventDefault(), setTimeout(function() {
window.location.href = i.getAttribute("href")
}, 300))
}))
}
function d(e, t) {
o.common.util.statshelper.fireEvent({
ibmEV: "widget",
ibmEvName: "v18localnotifybar",
ibmEvAction: e,
ibmEvGroup: t
})
}
function u() {
var e = {
userCc: o.common.util.user.getInfo().country.toLowerCase(),
pageCc: o.common.util.meta.getPageCc().toLowerCase(),
pageLc: o.common.util.meta.getPageLc().toLowerCase(),
newLocaleCode: ""
};
return "gb" === e.userCc && (e.userCc = "uk"), "de" !== e.userCc ? e.newLocaleCode = e.pageLc + "-" + e.userCc : e.newLocaleCode = "de-de", e
}
e = !1, t = o.common.util.storage.getItem("v18lpn1"), i = o.common.util.cookie.get("v18lpn1"), (t || i) && (e = !0), e || (s.addHolds(["meta", "ipdata"]), s.subscribe("ready", "localpagenotification", c), o.common.util.user.subscribe("userIpDataReady", "lpnipdata", function() {
s.removeHold("ipdata")
}).runAsap(function() {
s.removeHold("ipdata")
}), o.common.meta.subscribe("dataReady", "lpnmeta", function() {
s.removeHold("meta")
}).runAsap(function() {
s.removeHold("meta")
}))
}(jQuery, IBMCore),
function(s, i) {
var o = i.namespace(i, "common.module.masthead"),
t = i.common.util.eventCoordinator(o, "masthead", ["ready", "profileMenuReady", "profileMenuUpdated"]),
a = {
body: {},
masthead: {}
},
e = {
mainLinks: null,
marketplace: null
},
n = {
mainLinks: {
$el: null,
html: ""
},
iconsonly: {
$el: null,
html: ""
},
imagesloaded: {}
},
r = "",
l = {
default: "full",
alternate: "minimal",
mobile: "mobile",
popup: "popup"
},
c = {
$closeButtonLink: null,
$el: null,
$sectionShowing: null,
isopen: !1,
$panelShowing: null
},
d = {
megamenus: [],
dropdownmenus: []
},
u = ["aeen", "afar", "afen", "agen", "aien", "aopt", "ares", "auen", "awen", "bben", "bden", "bffr", "bgbg", "bgen", "bhar", "bhen", "bmen", "bnen", "boes", "brpt", "bsen", "bwen", "cafr", "cdfr", "cgfr", "cifr", "cles", "cmfr", "cnzh", "coes", "cres", "cwen", "cyen", "czcs", "dede", "dkda", "dmen", "dzfr", "eces", "eeen", "eeet", "egen", "eten", "eses", "frfr", "gafr", "gden", "ghen", "grel", "gren", "gyen", "hken", "hrhr", "hren", "inen", "iqar", "iqen", "itit", "jmen", "joar", "joen", "jpja", "keen", "khen", "knen", "krko", "kwar", "kwen", "kyen", "kzen", "kzkk", "lbar", "lben", "lcen", "lken", "lten", "ltlt", "lven", "lvlv", "lyen", "mafr", "mgfr", "msen", "mufr", "mwen", "mxes", "mzpt", "naen", "nefr", "ngen", "nlnl", "npen", "omar", "omen", "pees", "pkar", "pken", "plpl", "pyes", "qaar", "qaen", "rsen", "rssr", "ruru", "saen", "scfr", "sesv", "sgen", "sken", "sksk", "sien", "sisl", "slen", "snfr", "sren", "tcen", "tden", "tdfr", "tnfr", "trtr", "tten", "twzh", "tzen", "uaen", "uauk", "ugen", "uken", "usen", "uyes", "uzen", "uzuz", "vcen", "vees", "vgen", "year", "yeen", "zaen", "zmen", "zwen"],
m = null,
p = {};
function h() {
-1 === u.indexOf(i.common.meta.page.pageInfo.ibm.cpi) && (n.iconsonly.$el.find(".ibm-mh-marketplace-link").remove(), n.iconsonly.$el.prepend('<p class="ibm-mh-marketplace-link ibm-button-link ibm-fleft ibm-padding-bottom-0"><a class="ibm-btn-small ibm-btn-sec ibm-btn-blue-50" href="' + e.marketplace.url + '?lnk=mp">' + e.marketplace.title + "</a></p>"))
}
function f() {
n.iconsonly.$el.append(n.iconsonly.html), m = n.iconsonly.$el.find(".ibm-masthead-item-signin")
}
function g() {
var e = "",
t = s(document.getElementById("ibm-search")).removeClass("ibm-btn-search").addClass("ibm-search-link");
s.each(t[0].attributes, function() {
e += " " + this.name + '="' + this.value + '"'
}), t.replaceWith('<button role="button"' + e + '><span class="ibm-access">' + t[0].value + "</span></button>")
}
function v(e) {
var i = "";
return s.each(e, function() {
var e = this.id && "" !== this.id ? ' data-linktype="' + this.id + '"' : "",
t = !0 !== this.newWindow ? "" : ' target="_blank"';
this.title && (i += '<li role="presentation"' + e + '><a role="menuitem" href="' + this.url.replace("{{window.location}}", encodeURIComponent(window.location.href)) + '"' + t + ">" + this.title + "</a></li>")
}), i
}
function b() {
n.iconsonly.$el || (n.iconsonly.$el = s('<div class="ibm-masthead-rightside"></div>').prepend(s(document.getElementById("ibm-search-module"))).insertAfter(document.getElementById("ibm-menu-links")))
}
function y() {
n.iconsonly.$el.removeClass("signedin hasinitials"), m.children("button").removeAttr("style aria-label").html("")
}
function w(e) {
var t = s(document.getElementsByClassName("ibm-notification-count")[0]),
i = s(document.getElementsByClassName("ibm-masthead-item-signin")[0]).find("li[data-linktype='notifications'] a");
0 < e ? (t[0] || (t = s('<div class="ibm-notification-count"></div>').appendTo(".ibm-masthead-item-signin")), t.html(e), i[0] && (i.children("span")[0] || i.append("<span></span>"), i.children("span").html(" (" + e + ")"))) : t.remove()
}
function k(e) {
y(), n.iconsonly.$el.addClass("signedin"), m.children("button").html(e.linkContents).attr("aria-label", e.linkAlt), "image" === e.type && e.backgroundImage && "" !== e.backgroundImage && (n.iconsonly.$el.addClass("hasinitials"), m.children("button").html("").css({
"background-image": "url(" + e.backgroundImage + ")",
"background-size": "cover"
})), "text" === e.type && "" !== e.linkContents && n.iconsonly.$el.addClass("hasinitials")
}
function C() {
var e = {
linkContents: "",
linkAlt: p.misc.welcomeback,
backgroundImage: i.common.util.user.getInfo().imageUrl,
type: "default"
};
i.common.util.user.getInfo().imageUrl && "" !== i.common.util.user.getInfo().imageUrl || (e.backgroundImage = ""), k(e)
}
function x() {
var e = v(p.profileMenu.signedin);
"" !== e && (m && m.children("ul")[0] || i.common.util.debug.add("log", "Waiting for profile menu to be ready"), i.common.util.queue.push(function() {
return m && m.children("ul")[0]
}, function() {
i.common.util.debug.add("log", "Profile menu now exists, changing to 'signed in' menu"), m.children("ul").html(e), w(i.common.util.user.getInfo().newNotificationCount), t.publish("profileMenuUpdated")
}))
}
function T() {
E(!1), S(n.mainLinks.$el.find("li.ibm-active a"), !1)
}
function S(e, t) {
t ? e.parent().addClass("ibm-active") : e.parent().removeClass("ibm-active")
}
function E(e) {
e ? (a.body.addClass("ibm-masthead-megamenu-showing"), c.isopen = !0) : (a.body.removeClass("ibm-masthead-megamenu-showing"), c.isopen = !1, setTimeout(function() {
!c.isopen && c.$sectionShowing && (c.$sectionShowing.removeClass("ibm-showing"), c.$sectionShowing = null, c.$panelShowing && (c.$panelShowing.removeClass("ibm-showing"), c.$panelShowing = null))
}, 3e3))
}
function I(e) {
e && (c.$panelShowing && c.$panelShowing.removeClass("ibm-showing"), c.$panelShowing = s(document.getElementById(e)).addClass("ibm-showing"))
}
function $(e) {
c.$sectionShowing && c.$sectionShowing.removeClass("ibm-showing"), c.$panelShowing && c.$panelShowing.removeClass("ibm-showing"), c.$sectionShowing = s(".ibm-megamenu-section[data-linkid='" + e + "']").addClass("ibm-showing"), I(c.$sectionShowing.find(".ibm-megapanel:first")[0].id), c.$sectionShowing.find(".ibm-megapaneltrigs li.ibm-active").removeClass("ibm-active"), c.$sectionShowing.find(".ibm-megapaneltrigs a[data-panelid='" + e + "-mp0']").parent().addClass("ibm-active")
}
function _(e) {
i.common.util.statshelper.fireEvent({
ibmEV: "masthead",
ibmEvAction: "hover",
ibmEvGroup: e.id,
ibmEvLinkTitle: e.title,
ibmEvSection: e.type
})
}
function A() {
var e = 0,
t = 0;
s(document.getElementById("ibm-universal-nav")).addClass("getWidth").find("#ibm-home, .ibm-masthead-categories, .ibm-masthead-rightside, .ibm-mh-marketplace-link, .ibm-parent-site-name").each(function() {
e += s(this).outerWidth(!0), s(this).hasClass("ibm-masthead-categories") || (t += s(this).outerWidth(!0))
}).end().removeClass("getWidth"), document.getElementById("ibm-masthead-hidelinks") || s("head").append('<style id="ibm-masthead-hidelinks"></style>'), document.getElementById("ibm-masthead-hidelinks").innerHTML = "@media screen and (max-width: " + (e + 50) + "px) { .ibm-masthead-categories,#ibm-megamenu-sections{display:none} }@media screen and (max-width: " + (t + 50) + "px) { .ibm-mh-marketplace-link{display:none} }"
}
function M() {
var e = !1;
D(), s(window).on("resize", function() {
e = !0
}), setInterval(function() {
e && (e = !1, D())
}, 100)
}
function D() {
"maximized" !== i.common.module.mastheadsearch.getDisplayState() && (s(window).width() < 580 ? i.common.module.mastheadsearch.showAs("minimized") : i.common.module.mastheadsearch.showAs("default"))
}
o.isLoaded = !1, o.autoInit = function() {
"been" === i.common.meta.page.pageInfo.ibm.cpi && i.common.util.config.set({
masthead: {
enabled: !1
}
}), i.common.util.config.isEnabled("masthead") && o.init()
}, o.init = function() {
r = i.common.util.config.get("masthead.type"), r = l[r], p = i.common.translations.data.v18main, window.mhcustomtest && (p = window.mhcustomtest), e.mainLinks = p.mastheadNav, e.marketplace = {
title: p.marketplace.title,
url: "https://www.ibm.com/" + i.common.meta.page.pageInfo.ibm.cc + "-" + i.common.meta.page.pageInfo.ibm.lc + "/marketplace"
}, p.marketplace.url && "" !== p.marketplace.url && (e.marketplace.url = p.marketplace.url), n.mainLinks.html = function() {
var o = "";
0 < e.mainLinks.links.length && (s.each(e.mainLinks.links, function(e) {
var t = this.hasMenu ? " ibm-hasmenu" : "",
i = "" !== t ? ' class="ibm-chevron-down-link ibm-icon-after"' : "",
n = this.hasMegapanel ? "megamenu" : this.hasMenu ? "dropdown" : "none";
o += '<li role="presentation" class="ibm-mh-mainitem' + t + '"><a role="button" href="' + this.url + '" id="mhitem-mms' + e + '" data-linkid="mms' + e + '"' + i + ' data-menutype="' + n + '">' + this.title.htmlspecialchars() + "</a></li>", "megamenu" === n ? d.megamenus.push({
id: "mms" + e,
data: this
}) : "dropdown" === n && d.dropdownmenus.push({
id: "mms" + e,
data: this
})
}), o = '<ul aria-label="' + p.unav.title + '" role="toolbar" class="ibm-masthead-categories">' + o + "</ul>");
return o
}(), n.iconsonly.html = function() {
var e = "";
(i.common.util.config.isEnabled("masthead.profile") && 0 < p.profileMenu.signedout.length || i.common.util.config.isEnabled("masthead.profileAlways")) && (e += '<li role="presentation" class="ibm-masthead-item-signin"><button role="button" aria-haspopup="true" aria-owns="ibm-signin-minimenu-container" class="ibm-profile-link">' + (p.profileMenu.signedout[0] ? p.profileMenu.signedout[0].title : "") + "</button></li>");
i.common.util.config.isEnabled("masthead.mobilemenu") && (e += '<li role="presentation" class="ibm-masthead-item-menu"><button role="button" aria-haspopup="true" aria-owns="ibm-burger-menu-container" class="ibm-menu-link">' + p.misc.sitenav + "</button></li>");
"" !== e && (e = '<ul aria-label="Tools" role="menubar" class="ibm-masthead-iconsonly">' + e + "</ul>");
return e
}(), n.mainLinks.burgerMenuHtml = function(e) {
var o = "";
function a(e) {
for (var t = 0, i = "", n = ""; t < e.length; t++) n = "" !== e[t].url ? e[t].url : e[t].megapanelContent.headingUrl, i += '<li><a href="' + n + '">' + e[t].title + "</a></li>";
return i
}
0 < e.length && (s.each(e, function() {
var e, t = "",
i = "",
n = 0;
if (this.menuSections && 0 < this.menuSections.length)
for (; n < this.menuSections.length; n++) i += a(this.menuSections[n].menuItems);
else this.menuItems && 0 < this.menuItems.length && (i += a(this.menuItems));
t = "" !== i ? (e = i, '<div data-widget="showhide" data-type="panel" class="ibm-show-hide"><h2>' + this.title.htmlspecialchars() + '</h2><div class="ibm-container-body"><ul>' + e + "</ul></div></div>") : '<a href="' + this.url + '">' + this.title.htmlspecialchars() + "</a>", o += "<li>" + t + "</li>"
}), o = '<ul class="ibm-mobilemenu-mhlinks" aria-label="' + p.unav.title + '">' + o + "</ul>");
return o
}(e.mainLinks.links), s(function() {
if (IBMPerformance.mark("V18-masthead-begin"), s("#ibm-megamenu-sections, .ibm-masthead-categories, .ibm-masthead-iconsonly").remove(), a.body = s(document.body), a.masthead = s(document.getElementById("ibm-masthead")), "popup" === r) a.masthead.addClass("ibm-mhtype-popup"), i.common.util.config.set({
masthead: {
megamenu: {
enabled: !1
},
mobilemenu: {
enabled: !1
},
profile: {
enabled: !1
},
search: {
enabled: !1
},
sticky: {
enabled: !1
}
}
});
else if ("minimal" === r) ! function() {
a.masthead.addClass("ibm-mhtype-minimal"), b(), f(), i.common.util.config.isEnabled("masthead.search") && (g(), document.getElementById("ibm-search-form").setAttribute("aria-labelledby", "ibm-masthead"));
i.common.util.config.isEnabled("masthead.marketplaceLink") && h()
}(), A(), M();
else {
if ("full" !== r) return;
! function() {
a.masthead.addClass("ibm-mhtype-full"), n.mainLinks.$el = s(n.mainLinks.html).insertBefore("#ibm-menu-links"), b(), f(), i.common.util.config.isEnabled("masthead.search") && (g(), document.getElementById("ibm-search-form").setAttribute("aria-labelledby", "ibm-masthead"));
i.common.util.config.isEnabled("masthead.marketplaceLink") && h()
}(), s.browser.safari ? setTimeout(function() {
A()
}, 200) : A(), M(), setTimeout(function() {
var e;
i.common.util.config.isEnabled("masthead.megamenu") && (! function() {
var e = "",
t = 0;
s.each(d.megamenus, function() {
var p, h, f;
e += (p = this, f = h = "", s.each(p.data.menuSections, function() {
var e, t;
h += ((t = "") !== (e = this).heading && (t = '<li role="presentation" class="ibm-mm-sec-heading ibm-bold">' + e.heading + "</li>"), t), s.each(this.menuItems, function(e) {
var t, i, n, o, a, s, r, l, c, d = this,
u = !(!d.megapanelContent || "" === d.megapanelContent.headingTitle),
m = u ? p.id + "-mp" + e : "";
h += (n = "" !== (i = m) ? ' data-panelid="' + i + '"' : "", '<li role="presentation"><a class="ibm-light ibm-h4' + ("" !== i ? " ibm-arrow-forward-link" : "") + '" href="' + (t = d).url + '"' + n + ">" + t.title + "</a></li>"), u && (f += '<div class="ibm-megapanel" id="' + m + '"><h3 class="ibm-light ibm-h1 ibm-medium ibm-padding-bottom-1"><a href="' + d.megapanelContent.headingUrl + '">' + d.megapanelContent.headingTitle + '</a></h3><div class="ibm-columns"><div class="ibm-col-6-2">' + (s = d.megapanelContent, r = "", l = "<p>" + s.quickLinks.title + "</p>", c = '<ul class="ibm-plain-list ibm-mh-quicklinks">' + function(e) {
for (var t = "", i = 0; i < e.length; i++) t += '<li><a class="ibm-h4 ibm-light" href="' + e[i].url + '">' + e[i].title + "</a></li>";
return t
}(s.quickLinks.links) + "</ul>", s.description && "" !== s.description && (r = '<p class="ibm-h4 ibm-light">' + s.description + "</p>"), "{descr}{qlTitle}{quickLinks}".replace("{descr}", r).replace("{qlTitle}", l).replace("{quickLinks}", c)) + '</div><div class="ibm-col-6-2">' + (o = d.megapanelContent, a = "" !== o.feature.imageUrl ? '<p><img data-src="' + o.feature.imageUrl.replace("http:", "https:") + '" width="300" height="150" alt="" class="ibm-resize"></p>' : "", '<p class="ibm-bold">' + o.feature.heading + "</p>" + a + '<p class="ibm-linkcolor-default"><a href="' + o.feature.linkUrl + '">' + o.feature.linkTitle + "</a></p>") + "</div></div></div>")
})
}), '<div role="dialog" aria-labelledby="mhitem-' + p.id + '" class="ibm-megamenu-section" data-linkid="' + p.id + '"><div id="' + p.id + '" class="ibm-columns"><div class="ibm-col-6-2 ibm-background-neutral-white-30 ibm-megapaneltrigs"><ul class="ibm-dropdown-menu ibm-background-neutral-white-30">' + h + '</ul></div><div class="ibm-col-6-4 ibm-background-white-core">' + f + "</div></div></div>")
}), document.getElementById("ibm-megamenu-sections") && s(document.getElementById("ibm-megamenu-sections")).remove();
c.$el = s('<div id="ibm-megamenu-sections" class="ibm-hidden-small">' + e + '<div class="ibm-megamenu-close-container"><p class="ibm-icononly ibm-ind-link ibm-nospacing"><a class="ibm-chevron-up-link ibm-nospacing" href="#close">' + i.common.translations.data.v18main.misc.close + "</a></p></div></div>").insertAfter("#ibm-universal-nav"), c.$closeButtonLink = c.$el.find(".ibm-megamenu-close-container a"), s(document.getElementById("ibm-megamenu-sections")).addClass("getheight").find(".ibm-megapanel, .ibm-megapaneltrigs").each(function() {
var e = s(this).height();
t < e && (t = e)
}).end().removeClass("getheight"), i.common.util.addCssRule(".ibm-megamenu-section, #ibm-megamenu-sections", {
height: t + 30 + "px"
})
}(), s.each(d.dropdownmenus, function() {
var e, t, i, n;
e = this, t = a.masthead.find("[data-linkid='" + e.id + "']"), n = i = "", s.each(e.data.menuSections, function() {
i = function(e) {
for (var t = "", i = 0; i < e.length; i++) t += '<li><a href="' + e[i].url + '">' + e[i].title + "</a></li>";
return t
}(this.menuItems)
}), n = '<ul class="ibm-dropdown-menu">' + i + "</ul>", t.removeAttr("href"), t.after(n)
}), e = null, n.mainLinks.$el.hoverIntent(function() {
var e = this.getAttribute("data-menutype"),
t = this.getAttribute("data-linkid");
T(), "dropdown" === e ? S(s(this), !0) : "megamenu" === e && (n.imagesloaded[t] || (s(".ibm-megamenu-section[data-linkid='" + t + "']").find("img[data-src]").each(function() {
s(this).attr("src", s(this).data("src"))
}), n.imagesloaded[t] = !0), $(t), E(!0), S(s(this), !0)), _({
id: t,
title: this.innerHTML,
type: e
})
}, function() {}, ">li>a").on("click keydown", ">li>a", function(e) {
var t = this.getAttribute("data-menutype"),
i = this.getAttribute("data-linkid");
"keydown" === e.type && 13 !== e.keyCode || (T(), "dropdown" === t ? (e.preventDefault(), S(s(this), !0), s(this).next("ul").find("a:first").focus()) : "megamenu" === t && (e.preventDefault(), $(i), E(!0), c.$sectionShowing.find("a:first").focus()))
}), n.mainLinks.$el.children("li").add(c.$el).hover(function() {
clearTimeout(e)
}, function() {
clearTimeout(null), e = setTimeout(function() {
T()
}, 400)
}), c.$closeButtonLink.click(function(e) {
e.preventDefault(), E(!1), n.mainLinks.$el.find("a[tabindex='0']").focus()
}), c.$el.on("keydown", function(e) {
var t = "";
9 !== e.keyCode || e.shiftKey ? 9 === e.keyCode && e.shiftKey ? s(e.target).is(c.$sectionShowing.find("a:first")) ? t = c.$closeButtonLink : s(e.target).is(c.$closeButtonLink) && (t = c.$panelShowing.find("a:last")) : 27 === e.keyCode && (E(!1), n.mainLinks.$el.find("a[tabindex='0']").focus()) : s(e.target).is(c.$sectionShowing.find("a:last")) ? t = c.$closeButtonLink : s(e.target).is(c.$closeButtonLink) && (t = c.$sectionShowing.find("a:first")), "" !== t && (e.preventDefault(), t.focus())
}), s(document.getElementsByClassName("ibm-megapaneltrigs")).hoverIntent(function() {
I(this.getAttribute("data-panelid")), S(s(document.getElementsByClassName("ibm-megapaneltrigs")).find("a"), !1), S(s(this), !0), s(document.getElementsByClassName("ibm-megapaneltrigs")).find("a").blur(), _({
id: this.getAttribute("data-panelid"),
url: this.getAttribute("href"),
title: this.innerHTML,
type: "megapanel trigger"
})
}, function() {}, "a").on("click", "a", function(e) {
this.getAttribute("data-panelid") && (e.preventDefault(), I(this.getAttribute("data-panelid")), S(s(document.getElementsByClassName("ibm-megapaneltrigs")).find("a"), !1), S(s(this), !0))
}), i.common.util.a11y.makeToolbarAccessible({
el: a.masthead.find(".ibm-masthead-categories")[0],
keydown: function(e, t) {
if (null === e.getAttribute("data-menutype")) {
var i = null;
switch (t.originalEvent.keyCode) {
case 9:
T(), s(e).closest(".ibm-mh-mainitem").children("a").attr("tabindex", "0"), t.originalEvent.shiftKey && (s(e).closest(".ibm-mh-mainitem").prev().children("a").focus().attr("tabindex", "-1"), s(e).closest(".ibm-mh-mainitem").children("a").attr("tabindex", "0"));
break;
case 37:
s(e).closest(".ibm-mh-mainitem").prev().children("a").focus(), T();
break;
case 38:
i = s(e).parent().prev().children("a")[0] || s(e).closest("ul").find("a:eq(-1)");
break;
case 39:
s(e).closest(".ibm-mh-mainitem").next().children("a").focus(), T();
break;
case 40:
i = s(e).parent().next().children("a")[0] || s(e).closest("ul").find("a:eq(0)")
}
null !== i && s(i).focus()
}
}
}))
}, 50)
}
s(document.getElementById("ibm-menu-links")).addClass("ibm-hide"), setTimeout(function() {
var n;
i.common.util.config.isEnabled("masthead.mobilemenu") && s(document.getElementsByClassName("ibm-masthead-iconsonly")).find(".ibm-masthead-item-menu button").click(function(e) {
e.preventDefault(), i.common.module.mobilemenu.toggle()
}), s(document.getElementById("ibm-home")).find("a")[0].href += "?lnk=m", i.common.util.config.isEnabled("masthead.profile") && (! function() {
var e = v(p.profileMenu.signedout);
if ("" === e && !i.common.util.config.isEnabled("masthead.profileAlways")) return;
if (m.append('<ul id="ibm-signin-minimenu-container" role="menu" aria-label="Profile" class="ibm-dropdown-menu">' + e + "</ul>"), o.subscribe("profileMenuReady", "self", function() {}), !i.common.util.config.isEnabled("greeting")) return t.publish("profileMenuReady");
o.subscribe("profileMenuUpdated", "self", function() {
t.publish("profileMenuReady")
}), i.common.util.user.subscribe("userIBMDataReady", "masthead", function() {
i.common.util.user.getInfo().signedin ? (i.common.util.debug.add("log", "User is signed in - Waited for IBMid WSR"), C(), x()) : t.publish("profileMenuReady")
}).runAsap(function() {
i.common.util.user.getInfo().signedin ? (i.common.util.debug.add("log", "User is signed in - IBMid WSR already done"), C(), x()) : t.publish("profileMenuReady")
})
}(), function() {
var t = !1;
if (!m[0]) return;
m.children("button").click(function(e) {
e.preventDefault(), m.hasClass("ibm-active") ? o.hideProfileMenu() : (o.showProfileMenu(), m.find("li:eq(0) a").focus(), t || (a.body.on("click", function() {
o.hideProfileMenu()
}), t = !0))
}), m.hoverIntent(function() {
o.showProfileMenu()
}, function() {}).on("click", function(e) {
e.stopPropagation()
}), m.hoverIntent({
over: function() {},
out: function() {
o.hideProfileMenu()
},
timeout: 300
})
}(), 0 < (n = a.masthead.find(".ibm-masthead-iconsonly")).children("li").length && i.common.util.a11y.makeToolbarAccessible({
el: n[0],
keydown: function(e, t) {
var i = null;
switch (t.originalEvent.keyCode) {
case 9:
o.hideProfileMenu();
break;
case 27:
i = n.find("li.ibm-active button").focus(), o.hideProfileMenu();
break;
case 38:
i = s(e).parent().prev().children("a")[0] || s(e).closest("ul").find("a:eq(-1)");
break;
case 40:
i = s(e).parent().next().children("a")[0] || s(e).closest("ul").find("a:eq(0)")
}
null !== i && s(i).focus()
}
}))
}, 50), IBMPerformance.mark("V18-masthead-end"), IBMPerformance.measure("V18-masthead-load", "V18-masthead-begin", "V18-masthead-end"), o.isLoaded = !0, t.publish("ready")
})
}, o.editProfileMenu = function(e) {
"replace" === e.action ? s(document.getElementById("ibm-signin-minimenu-container")).html(v(e.links)) : "prepend" === e.action ? s(document.getElementById("ibm-signin-minimenu-container")).prepend(v(e.links)) : "append" === e.action ? s(document.getElementById("ibm-signin-minimenu-container")).append(v(e.links)) : "replaceLinkUrl" === e.action && s(document.getElementById("ibm-signin-minimenu-container")).find("li[data-linktype='" + e.linktype + "'] a").attr("href", e.linkurl)
}, o.showNotificationCount = w, o.showProfileLinkAnonymous = function(e) {
y(), w(0), m.children("button").html(e.linkContents).attr("aria-label", e.linkAlt)
}, o.showProfileLinkContents = function() {
n.iconsonly.$el.addClass("hasinitials")
}, o.showProfileLinkSignedin = k, o.showProfileMenu = function() {
m.addClass("ibm-active")
}, o.hideProfileMenu = function() {
m.removeClass("ibm-active")
}, o.showMegamenu = E, o.showMegamenuPanel = I, o.showMegamenuSection = $, o.getMastheadData = function() {
return e
}, o.getLocalesDisableMpButton = function() {
return u
}, o.getMastheadLinklists = function() {
return n
}, o.setMastheadWidthUsed = A, i.common.translations.subscribe("dataReady", "Masthead", o.autoInit).runAsap(o.autoInit), o.subscribe("ready", "dyncss", function() {
i.common.util.addCssRule("#ibm-com.ibm-no-scroll #ibm-universal-nav .ibm-masthead-iconsonly", {
"margin-right": parseInt(s(document.getElementById("ibm-universal-nav")).find(".ibm-masthead-iconsonly").css("margin-right"), 10) + i.common.util.getScrollbarWidth() + "px"
})
})
}(jQuery, IBMCore),
function(e, t) {
var i = t.namespace(t, "common.module.masthead.sticky"),
n = {
sticky: "ibm-masthead-sticky",
stickyShowing: "ibm-masthead-sticky-showing",
enableTransition: "hastransition"
},
o = 0,
a = 120,
s = !1,
r = {
masthead: {},
body: {},
mhPlaceholder: {}
},
l = 0,
c = "";
function d(e) {
r.mhPlaceholder[e ? "removeClass" : "addClass"]("ibm-hide")
}
i.autoInit = function() {
t.common.util.config.isEnabled("masthead") && t.common.module.masthead.subscribe("ready", "mastheadsticky", function() {
t.common.util.config.isEnabled("masthead.sticky") && setTimeout(i.init, 20)
})
}, i.init = function() {
r.body = e(document.body), r.masthead = e(document.getElementById("ibm-masthead")), e(window).scroll(function() {
s = !0
}), setInterval(function() {
s ? (s = !1, function() {
0 === (o = e(this).scrollTop()) ? (r.masthead.removeClass(n.enableTransition), r.body.removeClass(n.sticky + " " + n.stickyShowing), d(!1)) : Math.abs(l - o) >= a && (l < o ? "down" !== c && (c = "down", r.body.addClass(n.sticky).removeClass(n.stickyShowing), d(!0), setTimeout(function() {
r.masthead.addClass(n.enableTransition)
}, 200)) : "up" !== c && (c = "up", r.masthead.addClass(n.enableTransition), r.body.addClass(n.sticky + " " + n.stickyShowing), d(!0)), l = o)
}()) : "down" === c && (l = e(this).scrollTop())
}, 100), document.getElementsByClassName("ibm-mhplaceholder")[0] || (r.mhPlaceholder = e('<div class="ibm-hide ibm-mhplaceholder"></div>').insertAfter("#ibm-masthead"))
}, t.common.meta.subscribe("dataReady", "mastheadsticky", i.autoInit).runAsap(i.autoInit)
}(jQuery, IBMCore),
function(n, i) {
var o, a = i.namespace(i, "common.module.mastheadsearch"),
e = i.common.util.eventCoordinator(a, "Mastheadsearch", ["ready"]),
s = 50,
t = "default",
r = {
body: {},
inputField: {},
searchScope: {},
searchButton: {},
searchCloseButton: {},
searchForm: {},
searchModule: {},
typeaheadContainer: {},
typeaheadUl: {}
},
l = "",
c = !1,
d = 0,
u = !1;
function m() {
0 < r.typeaheadUl.length && r.typeaheadUl.empty()
}
function p() {
return t
}
function h(e) {
var t = r.inputField[0].value;
(t !== l || e) && ("" !== (l = t) ? !c && r.searchScope.find(":checkbox").prop("checked") && a.customTypeaheadFunction ? a.customTypeaheadFunction(t) : c && r.searchScope.find(":checkbox").prop("checked") ? a.makeTypeaheadRequest(function() {
n.ajax({
url: "https://www.ibm.com/marketplace/api/search/v3/combined_suggestions?locale=" + i.common.util.meta.getPageLc() + "-" + i.common.util.meta.getPageCc() + "&q=" + t,
dataType: "json",
searchString: t,
requestCount: ++d,
success: function(e) {
if (d === this.requestCount) {
var t = [],
i = 0,
n = e["phrase-suggestions"].options,
o = e["product-suggestions"].results.items;
if (0 < n.length)
for (i = 0; i < n.length; i++) t.push(n[i].text);
if (0 < o.length)
for (i = 0; i < o.length; i++) t.push(o[i].fields["doc.name"][0]);
a.createTypeahead(this.searchString, t)
}
},
error: function(e) {
window.console.error("Error calling typeahead service: ", e)
}
})
}) : a.makeTypeaheadRequest(function() {
n.ajax({
url: "https://www-api.ibm.com/search/typeahead/v1?lang=" + i.common.util.meta.getPageLc() + "&cc=" + i.common.util.meta.getPageCc() + "&query=" + t,
dataType: "jsonp",
searchString: t,
requestCount: ++d,
success: function(e) {
if (d === this.requestCount) {
for (var t = [], i = 0, n = e.response.length; i < n; i++) t.push(e.response[i][0]);
a.createTypeahead(this.searchString, t)
}
},
error: function(e) {
window.console.error("Error calling typeahead service: ", e)
}
})
}) : a.makeTypeaheadRequest(function() {
m(), b(!1)
}, s + 10))
}
function f() {
r.inputField.attr("aria-activedescendant", r.typeaheadUl.find("li.ibm-active").attr("id")), r.inputField.val(r.typeaheadUl.find("li.ibm-active").text())
}
function g(e) {
e ? "default" === p() && n(".ibm-masthead-categories, .ibm-mh-marketplace-link").addClass("ibm-fadein").removeClass("ibm-fadeout") : n(".ibm-masthead-categories, .ibm-mh-marketplace-link").addClass("ibm-fadeout").removeClass("ibm-fadein")
}
function v(e) {
"default" === e ? (n(document.body).removeClass("ibm-masthead-search-minimized ibm-masthead-search-maximized"), t = "default") : "minimized" === e ? (n(document.body).addClass("ibm-masthead-search-minimized").removeClass("ibm-masthead-search-maximized"), i.common.util.freezeScrollbars(!1), t = "minimized") : "maximized" === e && (n(document.body).removeClass("ibm-masthead-search-minimized").addClass("ibm-masthead-search-maximized"), i.common.util.freezeScrollbars(!0), t = "maximized")
}
function b(e) {
u = e ? (r.typeaheadContainer.add(r.searchScope).addClass("ibm-fadein").removeClass("ibm-fadeout").attr("aria-expanded", !0), r.inputField.attr("aria-expanded", !0), !0) : (r.typeaheadContainer.add(r.searchScope).addClass("ibm-fadeout").removeClass("ibm-fadein").attr("aria-expanded", !0), r.inputField.attr("aria-expanded", !1), !1)
}
a.isLoaded = !1, a.autoInit = function() {
i.common.util.config.isEnabled("masthead") && (i.common.util.config.isEnabled("masthead.search") ? (i.common.module.masthead.subscribe("ready", "mastheadsearch", function() {
setTimeout(a.init, 100), i.common.module.masthead.pauseSubscription("ready", "mastheadsearch")
}), i.common.util.config.isEnabled("masthead.search.typeahead") && a.subscribe("ready", "mastheadsearchtypeahead", function() {
! function() {
r.typeaheadContainer[0] ? r.typeaheadContainer.empty() : r.typeaheadContainer = n('<div id="ibm-search-typeahead-container" aria-expanded="false" class="ibm-search-typeahead-container"></div>').insertAfter(r.searchModule);
r.typeaheadUl = n('<ul class="ibm-plain-list ibm-padding-bottom-0" role="listbox" aria-live="polite" aria-label="' + (i.common.translations.data.v18main.misc.resultsNav || "Suggestions") + '"></ul>'), r.inputField.attr({
role: "combobox",
"aria-autocomplete": "list",
"aria-expanded": "false",
"aria-owns": "ibm-search-typeahead-container"
}), r.typeaheadUl.on("focusin", function() {}).on("click", function(e) {
n(e.target).closest(".typeahead-nooption")[0] || (e.preventDefault(), e.stopPropagation(), function(e) {
"li" !== e[0].nodeName.toLowerCase() && (e = e.parent());
if (e.hasClass("typeahead-nooption")) return;
r.typeaheadUl.find("li.ibm-active").removeClass("ibm-active"), e.addClass("ibm-active"), r.inputField.focus()
}(n(e.target)), f(), r.searchForm.submit())
}).on("mouseover", function(e) {
var t = n(e.target);
"li" !== t[0].nodeName.toLowerCase() && (t = t.parent()), t.hasClass("typeahead-nooption") || (r.typeaheadUl.find("li").removeClass("ibm-active"), t.addClass("ibm-active"))
}), r.inputField.on("input", function() {
h(), g(!1)
}).on("focus", function() {
"" !== r.inputField.val() && (g(!1), b(!0))
}).on("keydown", function(e) {
var t = e.keyCode;
37 !== t && 39 !== t && (9 === e.keyCode && e.shiftKey && "maximized" !== p() && (b(!1), g(!0)), 38 === t ? (e.preventDefault(), u ? (! function e() {
var t = r.typeaheadUl.find("li.ibm-active").prev("li");
r.typeaheadUl.find("li.ibm-active").removeClass("ibm-active");
t[0] ? t.addClass("ibm-active") : r.typeaheadUl.find("li:last").addClass("ibm-active");
r.typeaheadUl.find("li.ibm-active").hasClass("typeahead-nooption") && e()
}(), f()) : h()) : 40 === t && (e.preventDefault(), u ? (! function e() {
var t = r.typeaheadUl.find("li.ibm-active").next("li");
r.typeaheadUl.find("li.ibm-active").removeClass("ibm-active");
t[0] ? t.addClass("ibm-active") : r.typeaheadUl.find("li:first").addClass("ibm-active");
r.typeaheadUl.find("li.ibm-active").hasClass("typeahead-nooption") && e()
}(), f()) : h()))
}), e = !1, n(window).on("scroll", function() {
e = !0
}), setInterval(function() {
e && (e = !1, document.getElementsByClassName("ibm-masthead-search-maximized")[0] || (b(!1), g(!0)))
}, 100), r.body.on("click", function(e) {
"maximized" !== p() && (n(e.target).closest(".ibm-masthead-rightside")[0] || (b(!1), g(!0)))
}), r.searchButton.on("keydown", function(e) {
9 !== e.keyCode || e.shiftKey || "maximized" === p() || b(!1)
});
var e
}()
})) : n(function() {
n(document.getElementById("ibm-search-module")).addClass("ibm-hide")
}))
}, a.init = function() {
r.body = n(document.body), r.inputField = n(document.getElementById("q")), r.searchButton = n(document.getElementById("ibm-search")), r.searchForm = n(document.getElementById("ibm-search-form")), r.searchModule = n(document.getElementById("ibm-search-module")), r.searchCloseButton = n('<div class="ibm-masthead-search-close"><p class="ibm-ind-link ibm-icononly ibm-padding-bottom-0"><a href="#" class="ibm-close-link ibm-nospacing">' + i.common.translations.data.v18main.misc.close + "</a></p></div>").insertBefore("#ibm-search-form").on("click", function(e) {
e.preventDefault(), v("minimized"), b(!1), r.searchButton.focus()
}).find("a"),
function() {
var t = r.searchModule.find("form:not('#ibm-search-form')"),
e = '<form class="ibm-hide" id="ibm-default-scope-form" action="https://www.ibm.com/search" method="get"><input name="lang" type="hidden" value="' + i.common.util.meta.getPageLc() + '"><input name="cc" type="hidden" value="' + i.common.util.meta.getPageCc() + '"><input name="tabType[0]" type="hidden" value="Products"><input name="q" type="text" value=""><input name="lnk" type="hidden" value="mhmpsrch"></form>';
t[0] || (n('<span class="ibm-search-scope"><input class="ibm-styled-checkbox" data-init="false" type="checkbox" name="sn" value="" id="ibm-mh-scopeoption"> <label for="ibm-mh-scopeoption">' + (i.common.translations.data.v18main.misc.withinMp || "In Marketplace") + "</span>").insertBefore("#ibm-search"), t = n(e).insertAfter("#ibm-search-form"), c = !0);
r.inputField.attr("autocomplete", "off").after('<input name="lnk" type="hidden" value="mhsrch">'), r.searchScope = r.searchModule.find(".ibm-search-scope"), r.searchScope[0] && r.searchModule.addClass("ibm-has-scope");
r.searchForm.submit(function(e) {
"" !== r.inputField.val() ? r.searchScope.find(":checkbox").prop("checked") && t[0] && (e.preventDefault(), t.find("input:text").val(r.inputField.val()), t.submit()) : e.preventDefault()
}), r.inputField.on("focus", function() {
"minimized" === p() && v("maximized")
}), r.searchButton.on("keydown", function(e) {
9 !== e.keyCode || e.shiftKey || ("maximized" === p() ? (e.preventDefault(), r.searchCloseButton.focus()) : g(!0))
}), r.searchCloseButton.on("keydown", function(e) {
9 === e.keyCode && e.shiftKey && (e.preventDefault(), r.searchButton.focus())
}), r.searchScope.find(":checkbox").on("change", function() {
h(!0)
})
}(), a.isLoaded = !0, e.publish("ready")
}, a.clearTypeahead = m, a.createTypeahead = function(e, t) {
var i = t,
o = "",
a = e;
i.sort(), n.each(i, function(e, t) {
var i = t,
n = new RegExp(a, "i");
i = i.replace(n, "<strong>" + a + "</strong>"), e < 6 && (o += '<li id="ibm-search-overlay-typeahead-res-' + e + '" role="option" tabindex="-1">' + i + "</li>")
}), "" === r.inputField.val() ? (m(), b(!1)) : (r.typeaheadContainer.find("ul")[0] || r.typeaheadContainer.html(r.typeaheadUl), r.typeaheadUl.html(o), b(!0))
}, a.getDisplayState = p, a.makeTypeaheadRequest = (o = 0, function(e, t) {
var i = t || s;
clearTimeout(o), o = setTimeout(e, i)
}), a.showAs = v, a.showTypeaheadResults = b, i.common.meta.subscribe("dataReady", "mastheadsearch", a.autoInit).runAsap(a.autoInit)
}(jQuery, IBMCore),
function(a, n) {
var o, s, r, l, c, d = n.namespace(n, "common.module.mobilemenu"),
u = n.common.util.eventCoordinator(d, "mobilemenu", ["ready"]),
e = !1,
m = {
menuScreen: {}
},
p = null,
h = null;
function f() {
var e, t = document.getElementById("ibm-primary-tabs"),
i = document.getElementById("ibm-secondary-tabs"),
n = document.getElementById("ibm-primary-links"),
o = document.getElementById("ibm-secondary-navigation");
if (0 < a(t).find("li").length) e = a(t).find("ul").clone(!0), a("#ibm-primary-tabs[data-widget='dyntabs']")[0] && e.attr("data-type", "dyntabs"), 0 < a(i).find("li").length && e.find("a[aria-selected='true']").after(a(i).find("ul").clone());
else if (0 < a(i).find("li").length) e = a(i).find("ul").clone().removeAttr("id");
else {
if (!(0 < a(n).find("li").length)) return e;
(e = a(n).clone().removeAttr("id")).find(".ibm-show-hide.ibm-widget-processed").removeClass("ibm-widget-processed").find(".ibm-container-body").removeAttr("style"), 0 < a(o).find("li").length && (o = a(o).clone().attr("id", "ibm-mobile-menu-lnavrel-links").wrapInner('<div class="ibm-show-hide" data-type="panel" data-widget="showhide"></div>').find("ul").addClass("ibm-padding-top-0").wrap('<div class="ibm-container-body"><div>').end(), e = e.add(o))
}
return e.removeClass("ibm-tabs").find(".ibm-tabs").removeClass("ibm-tabs"), e.find("[id]").removeAttr("id"), e.find("a[aria-selected='true']:last").wrapInner("<span>").parent().addClass("ibm-mobilemenu-nav-selected"), a('<div class="ibm-mobilemenu-section ibm-mobilemenu-pagenav"></div>').html(e)
}
function g() {
var e;
if (document.getElementsByClassName("ibm-sitenav-menu-container")[0] && 0 !== a(".ibm-sitenav-menu-list > ul > li").length) return e = a(".ibm-sitenav-menu-container").children(".ibm-sitenav-menu-list").children("ul").clone(), document.getElementsByClassName("ibm-sitenav-menu-name")[0] && e.prepend('<li class="ibm-mobile-section-heading ibm-mobile-sitename">' + a(document.getElementsByClassName("ibm-sitenav-menu-name")[0]).html() + "</li>"), document.getElementsByClassName("ibm-parent-site-name")[0] && e.prepend('<li class="ibm-mobile-section-heading ibm-mobile-sitename">' + a(document.getElementsByClassName("ibm-parent-site-name")[0]).html() + "</li>"), e.find("[data-altlabel]").each(function() {
a(this).text(a(this).attr("data-altlabel"))
}), e.find("a.ibm-highlight").removeClass("ibm-highlight").parent().addClass("ibm-highlight"), e.find(".ibm-highlight").addClass("ibm-mobilemenu-nav-selected").children("a").closest("li.ibm-haschildlist").attr("aria-expanded", "true"), e.find("li.ibm-haschildlist").wrapInner('<div class="ibm-show-hide" data-type="panel" data-widget="showhide"></div>').each(function() {
var e = a(this),
t = e.find("> div > button")[0] || e.find("> div > span")[0],
i = t.innerHTML;
a("<h2>" + i + "</h2>").replaceAll(a(t)).siblings("ul").addClass("ibm-padding-top-0").removeAttr("style").wrap('<div class="ibm-container-body"><div>')
}), e.find(".ibm-highlight").closest(".ibm-show-hide").children("h2").attr("data-open", "true"), a('<div class="ibm-mobilemenu-section ibm-mobilemenu-sitenavmenu"></div>').html(e)
}
function v() {
o.find(".ibm-mobilemenu-section li li a").wrapInner("<span>"), n.common.util.a11y.makeTreeAccessible({
el: o.find(".ibm-mobilemenu-pagenav > ul")
}), n.common.util.a11y.makeToolbarAccessible({
el: o.find(".ibm-mobilemenu-sitenavmenu > ul")
})
}
function b() {
o.find(".ibm-show-hide:not(.ibm-widget-processed)").showhide(), o.find(".ibm-mobilemenu-nav-selected .ibm-show-hide").parent().addClass("ibm-showing")
}
d.isLoaded = !1, d.autoInit = function() {
n.common.util.config.isEnabled("masthead") && n.common.module.masthead.subscribe("ready", "mobilemenu", function() {
n.common.util.config.isEnabled("masthead.mobilemenu") && setTimeout(d.init, 100)
})
}, d.init = function() {
var e, t;
p = n.common.module.masthead.getMastheadData(), h = n.common.module.masthead.getMastheadLinklists(), a(document.getElementsByClassName("ibm-mobilemenu")[0]).remove(), m.menuScreen = a(document.getElementById("ibm-mobilemenu-screen")), m.menuScreen[0] || (m.menuScreen = a('<div id="ibm-mobilemenu-screen"></div>').appendTo(document.body)), s = f(), r = document.getElementsByClassName("ibm-parent-site-menu")[0] && 0 !== a(".ibm-parent-site-menu").find("ul > li").length ? ((e = a(".ibm-parent-site-menu").children(".ibm-sitenav-menu-list").children("ul").clone()).find("[data-altlabel]").each(function() {
a(this).text(a(this).attr("data-altlabel"))
}), e.find("a.ibm-highlight").removeClass("ibm-highlight").parent().addClass("ibm-highlight"), e.find(".ibm-highlight").addClass("ibm-mobilemenu-nav-selected").children("a").closest("li.ibm-haschildlist").attr("aria-expanded", "true"), e.find("li.ibm-haschildlist").wrapInner('<div class="ibm-show-hide" data-type="panel" data-widget="showhide"></div>').each(function() {
var e = a(this),
t = e.find("> div > button")[0] || e.find("> div > span")[0],
i = t.innerHTML;
a("<h2>" + i + "</h2>").replaceAll(a(t)).siblings("ul").addClass("ibm-padding-top-0").removeAttr("style").wrap('<div class="ibm-container-body"><div>')
}), e.find(".ibm-highlight").closest(".ibm-show-hide").children("h2").attr("data-open", "true"), a('<div class="ibm-mobilemenu-section ibm-mobilemenu-sitenavmenu"></div>').html(e)) : void 0, l = g(), document.getElementsByClassName("ibm-sitenav-menu-item-right")[0] ? ((t = a(document.getElementsByClassName("ibm-sitenav-menu-item-right")[0]).clone().removeAttr("class")).find("a.ibm-highlight").removeClass("ibm-highlight").parent().addClass("ibm-highlight"), t.find(".ibm-highlight").addClass("ibm-mobilemenu-nav-selected").children("a").closest("li.ibm-haschildlist").attr("aria-expanded", "true"), t.find("li.ibm-haschildlist").wrapInner('<div class="ibm-show-hide" data-type="panel" data-widget="showhide"></div>').each(function() {
var e = a(this),
t = e.find("> div > button")[0] || e.find("> div > span")[0],
i = t.innerHTML;
a("<h2>" + i + "</h2>").replaceAll(a(t)).siblings("ul").addClass("ibm-padding-top-0").removeAttr("style").wrap('<div class="ibm-container-body"><div>')
}), t.find(".ibm-highlight").closest(".ibm-show-hide").children("h2").attr("data-open", "true"), a('<div class="ibm-mobilemenu-section ibm-mobilemenu-sitenavmenu-right"></div>').html(t)) : void 0, c = function() {
var e = '<div class="ibm-mobilemenu-section">' + h.mainLinks.burgerMenuHtml + "</div>",
t = a(e).find(".ibm-masthead-categories").attr("class", "ibm-masthead-categories-mobilemenu").end(); - 1 === n.common.module.masthead.getLocalesDisableMpButton().indexOf(n.common.meta.page.pageInfo.ibm.cpi) && t.find(".ibm-mobilemenu-mhlinks:eq(0)").prepend(function() {
var e = "";
p.marketplace && p.marketplace.url && (e = '<li><a href="' + p.marketplace.url + '?lnk=mp">' + p.marketplace.title + "</a></li>");
return e
}());
return t
}();
var i = '<div class="ibm-mobilemenu-close"><p class="ibm-icononly ibm-fright ibm-ind-link ibm-nospacing"><a class="ibm-close-link" href="#">' + n.common.translations.data.v18main.misc.close + "</a></p></div>";
s || l || c.find(".ibm-show-hide > h2").attr("data-open", "true"), o = a('<div class="ibm-mobilemenu ibm-hide" id="ibm-burger-menu-container" aria-labelledby="ibm-burgermenu-a11y" role="dialog" tabindex="0"></div>').append('<p class="ibm-hide" id="ibm-burgermenu-a11y">' + (n.common.translations.data.v18main.misc.sitenav || "Site navigation") + "</p>").append(i).append(s).append(r).append(l).append(c).insertAfter("#ibm-masthead"), setTimeout(function() {
a(document.getElementsByClassName("ibm-mobilemenu-close")[0]).click(function(e) {
e.preventDefault(), d.hide(), a(document.getElementsByClassName("ibm-masthead-item-menu")[0]).find("button").focus()
}), o.find("a").each(function() {
var e = n.common.util.url.addParam({
url: this.getAttribute("href"),
paramName: "lnk",
paramValue: "hm" + (n.common.util.url.getParam("lnk", this.href) || "")
});
this.href = e
}), b(), v(), o.find(".ibm-show-hide h2 a").on("click", function() {
var e = a(this);
e.parent("h2.ibm-showing")[0] ? e.closest(".ibm-haschildlist").addClass("ibm-showing") : e.closest(".ibm-haschildlist").removeClass("ibm-showing")
}), o.find(".ibm-mobilemenu-mhlinks").each(function() {
n.common.util.a11y.makeToolbarAccessible({
el: this
})
}), o.find(".ibm-mobilemenu-section:last a").keydown(function(e) {
if (9 === e.keyCode && !e.shiftKey) {
if (a(this).hasClass("ibm-show-active")) return;
e.preventDefault(), o.find("a:first").focus()
}
}), o.find(".ibm-mobilemenu-close a").keydown(function(e) {
9 === e.keyCode && e.shiftKey && (e.preventDefault(), o.find("a:visible:last").focus())
}), m.menuScreen.on("click", function() {
n.common.module.mobilemenu.isShowing() && n.common.module.mobilemenu.hide()
})
}, 100), d.isLoaded = !0, u.publish("ready")
}, d.addSiteNavigation = function() {
s || l || (s = f(), l = g(), (s || l) && (c.find(".ibm-show-hide.ibm-widget-processed > h2 a.ibm-show-active").trigger("click"), o.find(".ibm-mobilemenu-section:first").prepend(l).prepend(s), b(), v()))
}, d.show = function() {
o.removeClass("ibm-hide"), setTimeout(function() {
a(document.body).addClass("ibm-show-mobilemenu-screen ibm-mobilemenu-show"), o.focus(), n.common.util.freezeScrollbars(!0), e = !0
}, 30)
}, d.hide = function() {
a(document.body).removeClass("ibm-mobilemenu-show"), setTimeout(function() {
a(document.body).removeClass("ibm-show-mobilemenu-screen"), n.common.util.freezeScrollbars(!1)
}, 150), setTimeout(function() {
o.addClass("ibm-hide"), e = !1
}, 400)
}, d.toggle = function() {
d.isShowing() ? d.hide() : d.show()
}, d.isShowing = function() {
return e
}, d.isOpen = d.isShowing, n.common.meta.subscribe("dataReady", "mobilemenu", d.autoInit).runAsap(d.autoInit)
}(jQuery, IBMCore),
function(a, t) {
var n, e = t.namespace(t, "common.module.sharethiscontent"),
i = t.common.util.eventCoordinator(e, "sharethiscontent", ["ready"]);
function s() {
var e = "";
return window.getSelection ? e = window.getSelection().toString() : document.selection && "Control" !== document.selection.type && (e = document.selection.createRange().text), e
}
e.autoInit = function() {
t.common.util.config.isEnabled("sharethiscontent") && e.init()
}, e.init = function() {
var e, o = {};
a.extend(!0, o, {
links: {
email: {
url: "mailto:?subject={title}&body={text}",
linkClass: "ibm-email-mono-link"
},
linkedin: {
url: "https://www.linkedin.com/shareArticle?mini=true&url={url}&title={title}&summary={text}",
linkClass: "ibm-linkedin-mono-link"
},
twitter: {
url: "https://twitter.com/intent/tweet?text={text} {url}",
linkClass: "ibm-twitter-mono-link"
}
}
}, t.common.util.config.get("sharethiscontent"), {
$links: []
}), a.each(o.links, function(e, t) {
var i, n;
t && (t.id = e, o.$links.push((n = "email" !== (i = t).id ? "window.open()" : "null", i.url && "" !== i.url ? a("<a></a>").attr({
class: i.linkClass + " ibm-thick-underline",
href: i.url,
"data-id": i.id,
onclick: "return IBMCore.common.module.sharethiscontent.gotoUrl(" + n + ", this);"
}).html(i.id) : void 0)))
}),
function(e) {
(n = a(document.getElementById("social-media-share-tooltip-content")))[0] || (n = a('<div id="social-media-share-tooltip-content" class="tipso_bubble bottom ibm-background-neutral-white-40 ibm-hide"><div class="tipso_content"><div class="tipso_contents"><p class="ibm-icononly"></p></div></div><div class="tipso_arrow"></div></div>'));
n.find(".ibm-icononly").html(e), n.appendTo("body")
}(o.$links), e = document.getElementById("ibm-content-wrapper") || document.getElementById("ibm-pcon"), a(e).on("selectstart", function() {
n.addClass("ibm-hide")
}).on("mouseup", function(e) {
var t, i;
a(e.target).is("a") || a(e.target).parent().is("a") || (e.preventDefault(), 1 < s().length ? (n.removeClass("ibm-hide"), i = {
top: e.pageY + 20,
left: e.pageX - .5 * n.outerWidth(),
right: "auto"
}, n.css(i), t = n[0].getBoundingClientRect(), i.left < 0 ? i.left = 0 : i.left + t.width + 40 > window.innerWidth && (i.left = "auto", i.right = 0), t.top + t.height > window.innerHeight ? (i.top = i.top - (t.height + 30), n.css(i).removeClass("bottom").addClass("top")) : n.css(i).addClass("bottom").removeClass("top"), n.css(i)) : n.addClass("ibm-hide"))
}), i.publish("ready")
}, e.gotoUrl = function(i, e) {
var n = e.getAttribute("data-id"),
o = e.href;
return t.common.util.statshelper.fireEvent({
ibmEV: "external link",
ibmEvAction: o,
ibmEvGroup: "Share this content icons",
ibmEvName: "stc-" + n
}), t.common.util.bitly.shorten({
url: t.common.util.url.getUrl(),
success: function(e) {
var t = e;
"email" === n ? (t = o.replace("{text}", encodeURIComponent(s()) + "%0D%0A%0D%0A" + encodeURIComponent(e)).replace("{title}", encodeURIComponent(a("title").text())), window.location.href = t) : (t = o.replace("{text}", encodeURIComponent(s())).replace("{url}", encodeURIComponent(e)).replace("{title}", encodeURIComponent(a("title").text())), i.location.href = t)
}
}), !1
}, t.common.meta.subscribe("dataReady", "sharethiscontent", e.autoInit).runAsap(e.autoInit)
}(jQuery, IBMCore),
function(i, o) {
var a, s, e = o.namespace(o, "common.module.sharethispage"),
t = o.common.util.eventCoordinator(e, "sharethispage", ["ready"]);
function n(e) {
return e.replace(/%\{URL\}/g, encodeURIComponent(a)).replace(/%\{TITLE\}/g, encodeURIComponent(s))
}
function r(e) {
return i("<a></a>").attr({
class: "ibm-" + e.id + "-encircled-link",
href: e.linkUrl,
"data-id": e.id,
onclick: "email" !== e.id ? "return IBMCore.common.module.sharethispage.gotoUrl(window.open(), this);" : ""
}).html(e.title)
}
e.autoInit = function() {
o.common.util.config.isEnabled("sharethispage") && o.common.translations.data.v18main.socialSharing && 0 !== o.common.translations.data.v18main.socialSharing.length && i(e.init)
}, e.init = function() {
a = o.common.util.url.getUrl(), s = i("title").html() || "";
var e = function() {
var e = [],
t = {
id: "email",
title: o.common.translations.data.v18main.misc.emailThisPage,
url: ""
};
i.each(o.common.translations.data.v18main.socialSharing, function() {
this.url && "ibm-dogear" !== this.id && ("stumble" === this.id ? this.id = "stumbleupon" : "twitter" === this.id && (this.url = "https://twitter.com/intent/tweet?url=%{URL}&text=%{TITLE}"), this.linkUrl = n(this.url), e.push(r(this)))
}), t.title && "" !== t.title && (t.linkUrl = n("mailto:?subject=%{TITLE}&body=%{URL}"), e.push(r(t)));
return e
}();
i(function() {
document.getElementsByClassName("ibm-sharethispage")[0] && i('<p class="ibm-icononly"></p>').appendTo(i(document.getElementsByClassName("ibm-sharethispage")).html('<h4 class="ibm-bold">' + (o.common.translations.data.v18main.misc.sharePage || "Share this page") + "</h4>")).html(e), t.publish("ready")
})
}, e.gotoUrl = function(i, e) {
var t = e.getAttribute("data-id"),
n = e.href;
return o.common.util.statshelper.fireEvent({
ibmEV: "external link",
ibmEvAction: n,
ibmEvGroup: "Share this page icons",
ibmEvName: "stp-" + t
}), "email" === t || ("stumbleupon" !== t ? o.common.util.bitly.shorten({
url: a,
success: function(e) {
var t = n.replace(/%\{URL\}/g, encodeURIComponent(e)).replace(/%\{TITLE\}/g, encodeURIComponent(s));
i.location.href = t
}
}) : i.location.href = n, !1)
}, o.common.translations.subscribe("dataReady", "sharethispage", e.autoInit).runAsap(e.autoInit)
}(jQuery, IBMCore),
function(o, t) {
var i, n = t.namespace(t, "common.module.sitenavmenu"),
e = t.namespace(t, "common.module.sitenavmenu.parentnav"),
a = t.common.util.eventCoordinator(n, "Sitenavmenu", ["ready"]),
s = t.common.util.eventCoordinator(e, "Sitenavmenu", ["ready"]),
r = !1,
l = {
sitenavMenu: {},
sitenavMenuList: {},
itemWithSubmenu: {}
},
c = {
sitenavMenu: {},
sitenavMenuList: {},
itemWithSubmenu: {}
};
function d() {
var e = o(window).scrollTop();
i < e ? o(document.body).addClass("ibm-sitenav-menu-sticky") : o(document.body).removeClass("ibm-sitenav-menu-sticky")
}
function u(e, t) {
m(e.sitenavMenuList.find("> ul > li.ibm-active")), t.children("ul")[0] && (t.children("ul").hasClass("ibm-align-right") && t.children("ul").removeClass("ibm-align-right"), p(t) && t.children("ul").addClass("ibm-align-right"), t.addClass("ibm-active"))
}
function m(e) {
e.removeClass("ibm-active")
}
function p(e) {
var t = e.addClass("ibm-active").children("ul").addClass("getWidth"),
i = t[0].getBoundingClientRect().width,
n = t.addClass("abs").offset().left;
return e.removeClass("ibm-active").children("ul").removeClass("getWidth"), t.removeClass("abs")[0].style.width = i + "px", n + i + 3 > o(window).width()
}
function h() {
var e = document.getElementsByClassName("ibm-sitenav-menu-name")[0],
t = l.sitenavMenuList[0],
i = o(".ibm-sitenav-menu-item-right"),
n = 0;
l.sitenavMenu.addClass("getWidth"), n = e.getBoundingClientRect().width, t && (n += t.getBoundingClientRect().width), e.getBoundingClientRect().width, i[0] && i.each(function() {
this.getBoundingClientRect().width
}), l.sitenavMenu.removeClass("getWidth"), document.getElementById("ibm-sitenav-menu-hidelinks") || o("head").append('<style id="ibm-sitenav-menu-hidelinks"></style>'), document.getElementById("ibm-sitenav-menu-hidelinks").innerHTML = "@media screen and (max-width: " + (n + 100) + "px) {.ibm-sitenav-menu-container .ibm-sitenav-menu-list > ul > li {display:none}}@media screen and (min-width: " + (n + 101) + "px) {.ibm-mobilemenu-sitenavmenu > ul > li {display:none}}"
}
n.init = function() {
o(document.body).addClass("ibm-sitenav-menu"), l.sitenavMenu = o(document.getElementsByClassName("ibm-sitenav-menu-container")[0]), l.sitenavMenuList = l.sitenavMenu.find(".ibm-sitenav-menu-list"), l.itemWithSubmenu = l.sitenavMenuList.find(" > ul > li.ibm-haschildlist"), i = l.sitenavMenu.offset().top, t.common.module.masthead.subscribe("ready", "menunav", function() {
i = l.sitenavMenu.offset().top
}), o.each(l.itemWithSubmenu.children("span"), function() {
var e = "",
t = o(this);
o.each(this.attributes, function() {
e += " " + this.name + '="' + this.value + '"'
}), t.replaceWith("<button" + e + ">" + t.html() + "</button>")
}), l.itemWithSubmenu.each(function() {
var e = o(this);
p(e) && e.find("ul").addClass("ibm-align-right")
}), l.itemWithSubmenu.find("> :focusable").click(function() {
var e = o(this).parent();
e.hasClass("ibm-active") ? m(e) : u(l, e)
}), l.sitenavMenuList.hoverIntent(function() {
var e = o(this);
u(l, e)
}, function() {}, " >ul >li"), l.sitenavMenuList.hoverIntent({
over: function() {},
out: function() {
m(l.sitenavMenuList.find("> ul > li.ibm-active"))
},
timeout: 300
}), !1 !== l.sitenavMenu.data("sticky") && (o(window).scroll(function() {
r = !0
}), setInterval(function() {
r && (r = !1, d())
}, 10), d()), o.browser.safari ? setTimeout(function() {
t.common.module.sitenavmenu.setSitenavMinWidth(), l.sitenavMenu.attr("data-widgetprocessed", !0)
}, 150) : (h(), l.sitenavMenu.attr("data-widgetprocessed", !0)), t.common.util.a11y.makeMenuAccessible({
el: l.sitenavMenuList
}), a.publish("ready")
}, n.initParent = function() {
c.sitenavMenu = o(document.getElementsByClassName("ibm-parent-site-menu")[0]), c.sitenavMenuList = c.sitenavMenu.find(".ibm-sitenav-menu-list"), c.itemWithSubmenu = c.sitenavMenuList.find(" > ul > li.ibm-haschildlist"), c.itemWithSubmenu.find("> :focusable").click(function() {
var e = o(this).parent();
e.hasClass("ibm-active") ? m(c) : u(c, e)
}), c.sitenavMenuList.hoverIntent(function() {
var e = o(this);
u(c, e)
}, function() {}, " >ul >li"), c.sitenavMenuList.hoverIntent({
over: function() {},
out: function() {
m(c.sitenavMenuList.find("> ul > li.ibm-active"))
},
timeout: 300
}), t.common.util.a11y.makeMenuAccessible({
el: c.sitenavMenuList
}), c.sitenavMenu.attr("data-widgetprocessed", !0), s.publish("ready")
}, n.setSitenavMinWidth = h, o(function() {
if (document.getElementsByClassName("ibm-sitenav-menu-container")[0]) {
var e = t.common.util.getScrollbarWidth();
t.common.util.addCssRule(".ibm-no-scroll .ibm-sitenav-menu-container", {
"margin-left": e + "px",
"margin-right": e + "px"
}), setTimeout(n.init, 50)
}
document.getElementsByClassName("ibm-parent-site-menu")[0] && setTimeout(n.initParent, 50)
}), n.subscribe("ready", "menunavself", function() {})
}(jQuery, IBMCore),
function(i, n) {
var e = n.namespace(n, "common.module.feedbacklink"),
t = !1,
o = {
surveyId: "web-exp",
metaData: ""
};
function a() {
var e = n.common.translations.data.v18main.misc.feedback || "Feedback",
t = i(document.getElementsByClassName("ibm-footer-corporate-links")[0]).find("ul");
t.children(".ibm-feedbacklink").remove(), i('<li class="ibm-feedbacklink"><a href="#">' + e + "</a></li>").appendTo(t).on("click", function(e) {
e.preventDefault(), i.extend(!0, o, n.common.util.config.get("feedbacklink")), window.innerWidth < 900 && window.innerWidth, n.common.widget.surveyccfintercept.autoInit()
})
}
e.autoInit = function() {
-1 !== window.location.hostname.indexOf(".ibm.com") && n.common.util.config.isEnabled("feedbacklink") && e.init()
}, e.init = function() {
t || (n.common.module.footer.subscribe("ready", "feedbacklink", a).runAsap(a), t = !0)
}, e.injectFeedbackLink = a, 0 < window.location.hostname.indexOf(".ibm.com") && n.common.meta.subscribe("dataReady", "feedbacklink", e.autoInit).runAsap(e.autoInit)
}(jQuery, IBMCore),
function(e, t) {
var i = t.namespace(t, "common.module.urx"),
n = null;
i.autoInit = function() {
(n = t.common.meta.page.pageInfo.urx) && n.enabled && !n.ran && (i.init(), n.ran = !0)
}, i.init = function() {
var e = document.createElement("script");
e.setAttribute("src", t.common.util.config.get("jsFilesUrlUrx")), document.head.appendChild(e)
}, t.common.meta.subscribe("dataReady", "urxloader", i.autoInit).runAsap(i.autoInit)
}(jQuery, IBMCore), window.mastheadv3test = {
mastheadNav: {
links: [{
title: "Marketplace",
url: "",
hasMenu: !0,
hasMegamenu: !0,
megamenuSections: [{
type: "marketplace",
heading: "Marketplace",
description: "The place to shop for software, hardware and services from IBM and our providers. Browse by technologies, business needs and services.",
url: "",
menuItems: [{
title: "Visit the Marketplace",
url: "https://www.ibm.com/be-en/marketplace?lnk=hpm_Mrkt_Mrkt"
}]
}, {
heading: "Technologies",
description: "Solutions and software to meet every challenge",
url: "https://www.ibm.com/be-en/products/category/technology/?lnk=hpm_Mrkt_Tech",
menuItems: [{
title: "Analytics",
url: "https://www.ibm.com/be-en/products/category/technology/analytics?lnk=hpm_Mrkt_Tech"
}, {
title: "Artificial intelligence",
url: "https://www.ibm.com/be-en/products/category/technology/cognitive-computing-and-AI?lnk=hpm_Mrkt_Tech"
}, {
title: "Automation",
url: "https://www.ibm.com/be-en/products/categories/technology/automation?copernicus=true&lnk=hpm_Mrkt_Tech"
}, {
title: "Blockchain",
url: "https://www.ibm.com/nl-nl/blockchain?copernicus=true&lnk=hpm_Mrkt_Tech"
}, {
title: "Cloud",
url: "https://www.ibm.com/nl-nl/cloud?lnk=hpm_Mrkt_Tech"
}, {
title: "IT infrastructure",
url: "https://www.ibm.com/be-en/products/category/technology/IT-infrastructure?lnk=hpm_Mrkt_Tech"
}, {
title: "IT management",
url: "https://www.ibm.com/be-en/products/category/technology/IT-management?lnk=hpm_Mrkt_Tech"
}, {
title: "Mobile technology",
url: "https://www.ibm.com/be-en/products/category/technology/mobile-technology?lnk=hpm_Mrkt_Tech"
}, {
title: "Security",
url: "https://www.ibm.com/nl-nl/security?lnk=hpm_Mrkt_Tech"
}, {
title: "Software development",
url: "https://www.ibm.com/be-en/products/category/technology/software-development?lnk=hpm_Mrkt_Tech"
}, {
title: "Watson IoT",
url: "https://www.ibm.com/nl-nl/internet-of-things?lnk=hpm_Mrkt_Tech"
}, {
title: "Watson Marketing",
url: "https://www.ibm.com/nl-nl/digital-marketing"
}, {
title: "Watson Supply Chain",
url: "https://www.ibm.com/nl-nl/supply-chain"
}]
}, {
heading: "Business needs",
description: "Tools and expertise to harness innovation",
url: "https://www.ibm.com/be-en/products/category/business?lnk=hpm_Mrkt_BuNe",
menuItems: [{
title: "Business operations",
url: "https://www.ibm.com/be-en/products/category/business/business-operations?lnk=hpm_Mrkt_BuNe"
}, {
title: "Commerce",
url: "https://www.ibm.com/be-en/products/category/business/commerce?lnk=hpm_Mrkt_BuNe"
}, {
title: "Content management",
url: "https://www.ibm.com/be-en/products/category/business/content-management?lnk=hpm_Mrkt_BuNe"
}, {
title: "Customer service and CRM",
url: "https://www.ibm.com/be-en/products/category/business/customer-service-and-CRM?lnk=hpm_Mrkt_BuNe"
}, {
title: "Finance",
url: "https://www.ibm.com/be-en/products/category/business/finance?lnk=hpm_Mrkt_BuNe"
}, {
title: "Human resources",
url: "https://www.ibm.com/be-en/products/category/business/human-resources?lnk=hpm_Mrkt_BuNe"
}, {
title: "Industry all sectors",
url: "https://www.ibm.com/nl-nl/industries?lnk=hpm_Mrkt_BuNe"
}, {
title: "Marketing and sales",
url: "https://www.ibm.com/be-en/products/category/business/marketing?lnk=hpm_Mrkt_BuNe"
}, {
title: "Manufacturing / Industrial",
url: "https://www.ibm.com/industries/be-en/manufacturing/cognitive-manufacturing-outcomes/?lnk=hpm_Mrkt_BuNe"
}, {
title: "Retail and Consumer Products",
url: "https://www.ibm.com/industries/be-en/retail-consumer-products/?lnk=hpm_Mrkt_BuNe"
}, {
title: "Supply chain management",
url: "https://www.ibm.com/be-en/products/categories/business/supply-chain-management?copernicus=true&lnk=hpm_Mrkt_BuNe"
}, {
title: "Talent",
url: "https://www.ibm.com/nl-nl/services/process/talent"
}]
}, {
heading: "Services",
description: "Expertise and assistance to fuel your success",
url: "",
menuItems: [{
title: "Technology consulting",
url: "https://www.ibm.com/technologyservices/be/en/?lnk=hpm_Mrkt_Serv"
}, {
title: "Technology services",
url: "https://www.ibm.com/nl-nl/services?lnk=hpm_Mrkt_Serv"
}, {
title: "Financing",
url: "https://www.ibm.com/financing/be-en/?lnk=hpm_Mrkt_Serv"
}, {
title: "Training & skills (US)",
url: "https://www.ibm.com/training/?lnk=hpm_Mrkt_Serv"
}]
}]
}, {
title: "For developers",
url: "",
hasMenu: !0,
hasMegamenu: !0,
megamenuSections: [{
heading: "Technologies",
url: "",
menuItems: [{
title: "Blockchain",
url: "https://www.ibm.com/nl-nl/blockchain?lnk=hpm_Deve_Tech"
}, {
title: "Cloud computing",
url: "https://www.ibm.com/developerworks/learn/cloud/?lnk=hpm_Deve_Tech"
}, {
title: "Artificial Intelligence",
url: "https://www.ibm.com/developerworks/learn/cognitive?lnk=hpm_Deve_Tech"
}, {
title: "Watson IoT",
url: "https://www.ibm.com/nl-nl/internet-of-things?lnk=hpm_Deve_Tech"
}, {
title: "Analytics",
url: "https://www.ibm.com/developerworks/learn/analytics/?lnk=hpm_Deve_Tech"
}, {
title: "Java",
url: "https://www.ibm.com/developerworks/learn/java?lnk=hpm_Deve_Tech"
}, {
title: "Security",
url: "https://www.ibm.com/developerworks/learn/security/index.html?lnk=hpm_Deve_Tech"
}, {
title: "Open Source",
url: "https://developer.ibm.com/code/open/?lnk=hpm_Deve_Tech"
}, {
title: "Global Technology services",
url: "https://www.ibm.com/nl-nl/services?lnk=hpm_Mrkt_Serv"
}]
}, {
heading: "Quick links",
url: "",
menuItems: [{
title: "Tutorials & training",
url: "https://www.ibm.com/developerworks/learn/?lnk=hpm_Deve_QuLi"
}, {
title: "Code patterns",
url: "https://developer.ibm.com/code/?lnk=hpm_Deve_QuLi"
}, {
title: "Forums",
url: "https://developer.ibm.com/answers/index.html?lnk=hpm_Deve_QuLi"
}]
}]
}, {
title: "Support",
url: "https://www.ibm.com/support/home/?lnk=hpm_Supp_Supp",
hasMenu: !1,
hasMegamenu: !1,
megamenuSections: []
}, {
title: "Events",
url: "https://www.ibm.com/events?lnk=STW_BE_MAST&lnk2=event_Campaign&psrc=none&pexp=def",
hasMenu: !1,
hasMegamenu: !1,
megamenuSections: []
}]
}
},
function(s, o) {
var a = o.namespace(o, "common.module.mastheadv3"),
t = o.common.util.eventCoordinator(a, "mastheadv3", ["ready", "megamenuready", "profileMenuReady", "profileMenuUpdated"]),
r = {
body: {},
masthead: {}
},
e = {
mainLinks: null,
marketplace: null
},
i = {
mainLinks: {
$el: null,
html: ""
},
iconsonly: {
$el: null,
html: ""
},
imagesloaded: {}
},
n = "",
l = {
default: "full",
alternate: "minimal",
mobile: "mobile",
popup: "popup"
},
c = {
$closeButtonLink: null,
$el: null,
$sectionShowing: null,
isopen: !1,
$panelShowing: null
},
d = {
megamenus: [],
dropdownmenus: []
},
u = null,
m = {};
function p() {
i.iconsonly.$el.find(".ibm-mh-marketplace-link").remove(), i.iconsonly.$el.prepend('<p class="ibm-mh-marketplace-link ibm-button-link ibm-fleft ibm-padding-bottom-0"><a class="ibm-btn-small ibm-btn-sec ibm-btn-blue-50" href="' + e.marketplace.url + '?lnk=mp">' + e.marketplace.title + "</a></p>")
}
function h() {
var e, t;
i.iconsonly.$el.append(i.iconsonly.html), u = i.iconsonly.$el.find(".ibm-masthead-item-signin"), o.common.util.config.isEnabled("masthead.search") && (e = "", t = s(document.getElementById("ibm-search")).removeClass("ibm-btn-search").addClass("ibm-search-link"), s.each(t[0].attributes, function() {
e += " " + this.name + '="' + this.value + '"'
}), t.replaceWith('<button role="button"' + e + '><span class="ibm-access">' + t[0].value + "</span></button>"))
}
function f(e) {
var i = "";
return s.each(e, function() {
var e = this.id && "" !== this.id ? ' data-linktype="' + this.id + '"' : "",
t = !0 !== this.newWindow ? "" : ' target="_blank"';
this.title && (i += '<li role="presentation"' + e + '><a role="menuitem" href="' + this.url.replace("{{window.location}}", encodeURIComponent(window.location.href)) + '"' + t + ">" + this.title + "</a></li>")
}), i
}
function g() {
i.iconsonly.$el || (i.iconsonly.$el = s('<div class="ibm-masthead-rightside"></div>').prepend(s(document.getElementById("ibm-search-module"))).insertAfter(document.getElementById("ibm-menu-links")))
}
function v() {
i.iconsonly.$el.removeClass("signedin hasinitials"), u.children("button").removeAttr("style aria-label").html("")
}
function b(e) {
var t = s(document.getElementsByClassName("ibm-notification-count")[0]),
i = s(document.getElementsByClassName("ibm-masthead-item-signin")[0]).find("li[data-linktype='notifications'] a");
0 < e ? (t[0] || (t = s('<div class="ibm-notification-count"></div>').appendTo(".ibm-masthead-item-signin")), t.html(e), i[0] && (i.children("span")[0] || i.append("<span></span>"), i.children("span").html(" (" + e + ")"))) : t.remove()
}
function y(e) {
v(), i.iconsonly.$el.addClass("signedin"), u.children("button").html(e.linkContents).attr("aria-label", e.linkAlt), "image" === e.type && e.backgroundImage && "" !== e.backgroundImage && (i.iconsonly.$el.addClass("hasinitials"), u.children("button").html("").css({
"background-image": "url(" + e.backgroundImage + ")",
"background-size": "cover"
})), "text" === e.type && "" !== e.linkContents && i.iconsonly.$el.addClass("hasinitials")
}
function w() {
var e = {
linkContents: "",
linkAlt: m.misc.welcomeback,
backgroundImage: o.common.util.user.getInfo().imageUrl,
type: "image"
};
o.common.util.user.getInfo().imageUrl && "" !== o.common.util.user.getInfo().imageUrl || (e.backgroundImage = ""), y(e)
}
function k() {
var e = f(m.profileMenu.signedin);
"" !== e && (u && u.children("ul")[0] || o.common.util.debug.add("log", "Waiting for profile menu to be ready"), o.common.util.queue.push(function() {
return u && u.children("ul")[0]
}, function() {
o.common.util.debug.add("log", "Profile menu now exists, changing to 'signed in' menu"), u.children("ul").html(e), b(o.common.util.user.getInfo().newNotificationCount), t.publish("profileMenuUpdated")
}))
}
function C() {
T(!1), x(i.mainLinks.$el.find("li.ibm-active a"), !1)
}
function x(e, t) {
t ? e.parent().addClass("ibm-active") : e.parent().removeClass("ibm-active")
}
function T(e) {
e ? (r.body.addClass("ibm-masthead-megamenu-showing"), c.isopen = !0) : (r.body.removeClass("ibm-masthead-megamenu-showing"), c.isopen = !1, setTimeout(function() {
!c.isopen && c.$sectionShowing && (c.$sectionShowing.removeClass("ibm-showing"), c.$sectionShowing = null)
}, 3e3))
}
function S(e) {
c.$sectionShowing && c.$sectionShowing.removeClass("ibm-showing"), c.$sectionShowing = s(".ibm-megamenu-section[data-linkid='" + e + "']").addClass("ibm-showing")
}
function E() {
var e = 0,
t = 0;
s(document.getElementById("ibm-universal-nav")).addClass("getWidth").find("#ibm-home, .ibm-masthead-categories, .ibm-masthead-rightside, .ibm-mh-marketplace-link, .ibm-parent-site-name").each(function() {
e += s(this).outerWidth(!0), s(this).hasClass("ibm-masthead-categories") || (t += s(this).outerWidth(!0))
}).end().removeClass("getWidth"), document.getElementById("ibm-masthead-hidelinks") || s("head").append('<style id="ibm-masthead-hidelinks"></style>'), document.getElementById("ibm-masthead-hidelinks").innerHTML = "@media screen and (max-width: " + (e + 200) + "px) { .ibm-masthead-categories,#ibm-megamenu-sections{display:none} }@media screen and (max-width: " + (t + 50) + "px) { .ibm-mh-marketplace-link{display:none} }"
}
function I() {
var e = !1;
setTimeout($, 200), s(window).on("resize", function() {
e = !0
}), setInterval(function() {
e && (e = !1, $())
}, 100)
}
function $() {
"maximized" !== o.common.module.mastheadsearchv3.getDisplayState() && (s(window).width() < 580 ? o.common.module.mastheadsearchv3.showAs("minimized") : o.common.module.mastheadsearchv3.showAs("default"))
}
a.isLoaded = !1, a.autoInit = function() {
"been" === o.common.meta.page.pageInfo.ibm.cpi && (o.common.util.config.set({
masthead: {
enabled: !0,
marketplaceLink: {
enabled: !1
}
}
}), document.documentElement.classList.add("mastheadv3test"), a.init())
}, a.init = function() {
n = o.common.util.config.get("masthead.type"), n = l[n], m = o.common.translations.data.v18main, e.mainLinks = window.mastheadv3test.mastheadNav, e.marketplace = {
title: m.marketplace.title,
url: "https://www.ibm.com/marketplace/"
}, i.mainLinks.html = function() {
var o = "";
0 < e.mainLinks.links.length && (s.each(e.mainLinks.links, function(e) {
var t = this.hasMenu ? " ibm-hasmenu" : "",
i = "" !== t ? ' class="ibm-chevron-down-link ibm-icon-after"' : "",
n = this.hasMegamenu ? "megamenu" : this.hasMenu ? "dropdown" : "none";
o += '<li role="presentation" class="ibm-mh-mainitem' + t + '"><a role="button" href="' + this.url + '" id="mhitem-mms' + e + '" data-linkid="mms' + e + '"' + i + ' data-menutype="' + n + '">' + this.title.htmlspecialchars() + "</a></li>", "megamenu" === n ? d.megamenus.push({
id: "mms" + e,
data: this
}) : "dropdown" === n && d.dropdownmenus.push({
id: "mms" + e,
data: this
})
}), o = '<ul aria-label="' + m.unav.title + '" role="toolbar" class="ibm-masthead-categories">' + o + "</ul>");
return o
}(), i.iconsonly.html = function() {
var e = "";
(o.common.util.config.isEnabled("masthead.profile") && 0 < m.profileMenu.signedout.length || o.common.util.config.isEnabled("masthead.profileAlways")) && (e += '<li role="presentation" class="ibm-masthead-item-signin"><button role="button" aria-haspopup="true" aria-owns="ibm-signin-minimenu-container" class="ibm-profile-link">' + (m.profileMenu.signedout[0] ? m.profileMenu.signedout[0].title : "") + "</button></li>");
o.common.util.config.isEnabled("masthead.mobilemenu") && (e += '<li role="presentation" class="ibm-masthead-item-menu"><button role="button" aria-haspopup="true" aria-owns="ibm-burger-menu-container" class="ibm-menu-link">' + m.misc.sitenav + "</button></li>");
"" !== e && (e = '<ul aria-label="Tools" role="menubar" class="ibm-masthead-iconsonly">' + e + "</ul>");
return e
}(), i.mainLinks.burgerMenuHtml = function(e) {
var o = "";
function a(e) {
for (var t = 0, i = ""; t < e.length; t++) i += '<li><a href="' + e[t].url + '">' + e[t].title + "</a></li>";
return i
}
0 < e.length && (s.each(e, function() {
var e, t = "",
i = "",
n = 0;
if (this.megamenuSections && 0 < this.megamenuSections.length)
for (; n < this.megamenuSections.length; n++) i += a(this.megamenuSections[n].menuItems);
else this.menuItems && 0 < this.menuItems.length && (i += a(this.menuItems));
t = "" !== i ? (e = i, '<div data-widget="showhide" data-type="panel" class="ibm-show-hide"><h2>' + this.title.htmlspecialchars() + '</h2><div class="ibm-container-body"><ul>' + e + "</ul></div></div>") : '<a href="' + this.url + '">' + this.title.htmlspecialchars() + "</a>", o += "<li>" + t + "</li>"
}), o = '<ul class="ibm-mobilemenu-mhlinks" aria-label="' + m.unav.title + '">' + o + "</ul>");
return o
}(e.mainLinks.links), s(function() {
if (s("#ibm-megamenu-sections, .ibm-masthead-categories, .ibm-masthead-iconsonly").remove(), r.body = s(document.body), r.masthead = s(document.getElementById("ibm-masthead")), "popup" === n) r.masthead.addClass("ibm-mhtype-popup"), o.common.util.config.set({
masthead: {
megamenu: {
enabled: !1
},
mobilemenu: {
enabled: !1
},
profile: {
enabled: !1
},
search: {
enabled: !1
},
sticky: {
enabled: !1
}
}
});
else if ("minimal" === n) r.masthead.addClass("ibm-mhtype-minimal"), g(), h(), o.common.util.config.isEnabled("masthead.marketplaceLink") && p(), E(), I();
else {
if ("full" !== n) return;
r.masthead.addClass("ibm-mhtype-full"), i.mainLinks.$el = s(i.mainLinks.html).insertBefore("#ibm-menu-links"), g(), h(), o.common.util.config.isEnabled("masthead.marketplaceLink") && p(), s.browser.safari ? setTimeout(function() {
E()
}, 200) : E(), I(), setTimeout(function() {
var e;
o.common.util.config.isEnabled("masthead.megamenu") && (! function() {
var t = "",
i = 0;
s.each(d.megamenus, function() {
var e, n, o;
t += (e = this, o = n = "", s.each(e.data.megamenuSections, function() {
var e, t, i;
"marketplace" === this.type ? (o += '<div class="ibm-col-4-1 ibm-flex ibm-background-neutral-white-30"><div class="ibm-fullwidth"><p class="ibm-margin-top-1 ibm-ind-link ibm-small"><a href="' + this.menuItems[0].url + '" class="ibm-chevron-right-link ibm-thick-underline ibm-thick-underline-v3">' + this.menuItems[0].title + "</a></p></div></div>", n += '<div class="ibm-col-4-1 ibm-padding-top-2 ibm-flex ibm-background-neutral-white-30"><div class="ibm-fullwidth"><p class="ibm-bold ibm-padding-bottom-0 ibm-small">' + this.heading + '</p><p class="ibm-textcolor-gray-50 ibm-padding-bottom-0 realsmalltext">' + this.description + "</p></div></div>") : (o += '<div class="ibm-col-4-1 ibm-padding-bottom-2 ibm-flex"><div class="ibm-fullwidth"><ul class="ibm-margin-top-1 ibm-plain-list ibm-small">' + function(e) {
for (var t = "", i = 0; i < e.length; i++) t += '<li><a href="' + e[i].url + '" class="ibm-thick-underline ibm-thick-underline-v3">' + e[i].title + "</a></li>";
return t
}(this.menuItems) + "</ul></div></div>", n += (t = "", i = '<p class="ibm-bold ibm-padding-bottom-0 ibm-small">' + (e = this).heading + "</p>", e.url && (i = '<p class="ibm-bold ibm-padding-bottom-0 ibm-ind-link ibm-small"><a class="ibm-chevron-right-link" href="' + e.url + '">' + e.heading + "</a></p>"), e.description && (t = '<p class="ibm-textcolor-gray-50 ibm-padding-bottom-0 realsmalltext">' + e.description + "</p>"), '<div class="ibm-col-4-1 ibm-padding-top-2 ibm-flex"><div class="ibm-fullwidth">' + i + t + "</div></div>"))
}), '<div role="dialog" aria-labelledby="mhitem-' + e.id + '" class="ibm-megamenu-section" data-linkid="' + e.id + '"><div id="' + e.id + '"><div class="ibm-columns">' + n + '</div><div class="ibm-columns ibm-flex">' + o + "</div></div></div>")
}), document.getElementById("ibm-megamenu-sections") && s(document.getElementById("ibm-megamenu-sections")).remove();
c.$el = s('<div id="ibm-megamenu-sections" class="ibm-hidden-small ibm-padding-bottom-0 ibm-background-white-core">' + t + '<div class="ibm-columns"><div class="ibm-col-4-2"></div><div class="ibm-col-4-1"><div class="ibm-megamenu-close-container ibm-center"><p class="ibm-icononly ibm-ind-link ibm-nospacing"><a class="ibm-chevron-up-link ibm-nospacing" href="#close">' + o.common.translations.data.v18main.misc.close + "</a></p></div></div></div></div>").insertAfter("#ibm-universal-nav"), c.$closeButtonLink = c.$el.find(".ibm-megamenu-close-container a"), s(document.getElementById("ibm-megamenu-sections")).addClass("getheight").find(".ibm-megamenu-section").each(function() {
var e = s(this).height();
i < e && (i = e)
}).end().removeClass("getheight"), o.common.util.addCssRule(".ibm-megamenu-section, #ibm-megamenu-sections", {
height: i + 0 + "px"
})
}(), s.each(d.dropdownmenus, function() {
var e, t, i, n;
e = this, t = r.masthead.find("[data-linkid='" + e.id + "']"), n = i = "", s.each(e.data.megamenuSections, function() {
i = function(e) {
for (var t = "", i = 0; i < e.length; i++) t += '<li><a href="' + e[i].url + '">' + e[i].title + "</a></li>";
return t
}(this.menuItems)
}), n = '<ul class="ibm-dropdown-menu">' + i + "</ul>", t.removeAttr("href"), t.after(n)
}), e = null, i.mainLinks.$el.hoverIntent(function() {
var e, t = this.getAttribute("data-menutype"),
i = this.getAttribute("data-linkid");
C(), "dropdown" === t ? x(s(this), !0) : "megamenu" === t && (S(i), T(!0), x(s(this), !0)), e = {
id: i,
title: this.innerHTML,
type: t
}, o.common.util.statshelper.fireEvent({
ibmEV: "masthead",
ibmEvAction: "hover",
ibmEvGroup: e.id,
ibmEvLinkTitle: e.title,
ibmEvSection: e.type
})
}, function() {}, ">li>a").on("click keydown", ">li>a", function(e) {
var t = this.getAttribute("data-menutype"),
i = this.getAttribute("data-linkid");
"keydown" === e.type && 13 !== e.keyCode || (C(), "dropdown" === t ? (e.preventDefault(), x(s(this), !0), s(this).next("ul").find("a:first").focus()) : "megamenu" === t && (e.preventDefault(), S(i), T(!0), c.$sectionShowing.find("a:first").focus()))
}), i.mainLinks.$el.children("li").add(c.$el).hover(function() {
clearTimeout(e)
}, function() {
clearTimeout(null), e = setTimeout(function() {
C()
}, 400)
}), c.$closeButtonLink.click(function(e) {
e.preventDefault(), T(!1), i.mainLinks.$el.find("a[tabindex='0']").focus()
}), c.$el.on("keydown", function(e) {
var t = "";
9 !== e.keyCode || e.shiftKey ? 9 === e.keyCode && e.shiftKey ? s(e.target).is(c.$sectionShowing.find("a:first")) ? t = c.$closeButtonLink : s(e.target).is(c.$closeButtonLink) && (t = c.$sectionShowing.find("a:last")) : 27 === e.keyCode && (T(!1), i.mainLinks.$el.find("a[tabindex='0']").focus()) : s(e.target).is(c.$sectionShowing.find("a:last")) ? t = c.$closeButtonLink : s(e.target).is(c.$closeButtonLink) && (t = c.$sectionShowing.find("a:first")), "" !== t && (e.preventDefault(), t.focus())
}), o.common.util.a11y.makeToolbarAccessible({
el: r.masthead.find(".ibm-masthead-categories")[0],
keydown: function(e, t) {
if (null === e.getAttribute("data-menutype")) {
var i = null;
switch (t.originalEvent.keyCode) {
case 9:
C(), s(e).closest(".ibm-mh-mainitem").children("a").attr("tabindex", "0"), t.originalEvent.shiftKey && (s(e).closest(".ibm-mh-mainitem").prev().children("a").focus().attr("tabindex", "-1"), s(e).closest(".ibm-mh-mainitem").children("a").attr("tabindex", "0"));
break;
case 37:
s(e).closest(".ibm-mh-mainitem").prev().children("a").focus(), C();
break;
case 38:
i = s(e).parent().prev().children("a")[0] || s(e).closest("ul").find("a:eq(-1)");
break;
case 39:
s(e).closest(".ibm-mh-mainitem").next().children("a").focus(), C();
break;
case 40:
i = s(e).parent().next().children("a")[0] || s(e).closest("ul").find("a:eq(0)")
}
null !== i && s(i).focus()
}
}
}), o.common.module.mastheadv3.publish("ready"), o.common.module.mastheadv3.publish("megamenuready"))
}, 50)
}
s(document.getElementById("ibm-menu-links")).addClass("ibm-hide"), setTimeout(function() {
var n;
o.common.util.config.isEnabled("masthead.mobilemenu") && s(document.getElementsByClassName("ibm-masthead-iconsonly")).find(".ibm-masthead-item-menu button").click(function(e) {
e.preventDefault(), o.common.module.mobilemenuv3.toggle()
}), (!o.common.util.storage.getItem("v18larv") && o.common.util.storage.setItem("v18larv", !0) || o.common.util.url.getParam("animatelogo")) && s(document.getElementById("ibm-home")).addClass("ibm-animate"), s(document.getElementById("ibm-home")).find("a")[0].href += "?lnk=m", o.common.util.config.isEnabled("masthead.profile") && (! function() {
var e = f(m.profileMenu.signedout);
if ("" === e && !o.common.util.config.isEnabled("masthead.profileAlways")) return;
if (u.append('<ul id="ibm-signin-minimenu-container" role="menu" aria-label="Profile" class="ibm-dropdown-menu">' + e + "</ul>"), a.subscribe("profileMenuReady", "self", function() {}), !o.common.util.config.isEnabled("greeting")) return t.publish("profileMenuReady");
a.subscribe("profileMenuUpdated", "self", function() {
t.publish("profileMenuReady")
}), o.common.util.user.subscribe("userIBMDataReady", "masthead", function() {
o.common.util.user.getInfo().signedin ? (o.common.util.debug.add("log", "User is signed in - Waited for IBMid WSR"), w(), k()) : t.publish("profileMenuReady")
}).runAsap(function() {
o.common.util.user.getInfo().signedin ? (o.common.util.debug.add("log", "User is signed in - IBMid WSR already done"), w(), k()) : t.publish("profileMenuReady")
})
}(), function() {
var t = !1;
if (!u[0]) return;
u.children("button").click(function(e) {
e.preventDefault(), u.hasClass("ibm-active") ? a.hideProfileMenu() : (a.showProfileMenu(), u.find("li:eq(0) a").focus(), t || (r.body.on("click", function() {
a.hideProfileMenu()
}), t = !0))
}), u.hoverIntent(function() {
a.showProfileMenu()
}, function() {}).on("click", function(e) {
e.stopPropagation()
}), u.hoverIntent({
over: function() {},
out: function() {
a.hideProfileMenu()
},
timeout: 300
})
}(), 0 < (n = r.masthead.find(".ibm-masthead-iconsonly")).children("li").length && o.common.util.a11y.makeToolbarAccessible({
el: n[0],
keydown: function(e, t) {
var i = null;
switch (t.originalEvent.keyCode) {
case 9:
a.hideProfileMenu();
break;
case 27:
i = n.find("li.ibm-active button").focus(), a.hideProfileMenu();
break;
case 38:
i = s(e).parent().prev().children("a")[0] || s(e).closest("ul").find("a:eq(-1)");
break;
case 40:
i = s(e).parent().next().children("a")[0] || s(e).closest("ul").find("a:eq(0)")
}
null !== i && s(i).focus()
}
}))
}, 50), a.isLoaded = !0, t.publish("ready")
})
}, a.editProfileMenu = function(e) {
"replace" === e.action ? s(document.getElementById("ibm-signin-minimenu-container")).html(f(e.links)) : "prepend" === e.action ? s(document.getElementById("ibm-signin-minimenu-container")).prepend(f(e.links)) : "append" === e.action ? s(document.getElementById("ibm-signin-minimenu-container")).append(f(e.links)) : "replaceLinkUrl" === e.action && s(document.getElementById("ibm-signin-minimenu-container")).find("li[data-linktype='" + e.linktype + "'] a").attr("href", e.linkurl);
o.common.util.statshelper.fireEvent({
ibmEV: "editprofilemenu",
ibmEvAction: e.action || "n/a"
})
}, a.showNotificationCount = b, a.showProfileLinkAnonymous = function(e) {
v(), b(0), u.children("button").html(e.linkContents).attr("aria-label", e.linkAlt)
}, a.showProfileLinkContents = function() {
i.iconsonly.$el.addClass("hasinitials")
}, a.showProfileLinkSignedin = y, a.showProfileMenu = function() {
u.addClass("ibm-active")
}, a.hideProfileMenu = function() {
u.removeClass("ibm-active")
}, a.showMegamenu = T, a.showMegamenuSection = S, a.getMastheadData = function() {
return e
}, a.getMastheadLinklists = function() {
return i
}, a.setMastheadWidthUsed = E, o.common.translations.subscribe("dataReady", "mastheadv3", a.autoInit).runAsap(a.autoInit), a.subscribe("ready", "dyncss", function() {
o.common.util.addCssRule("#ibm-com.ibm-no-scroll #ibm-universal-nav .ibm-masthead-iconsonly", {
"margin-right": parseInt(s(document.getElementById("ibm-universal-nav")).find(".ibm-masthead-iconsonly").css("margin-right"), 10) + o.common.util.getScrollbarWidth() + "px"
})
})
}(jQuery, IBMCore),
function(e, t) {
var i = t.namespace(t, "common.module.masthead.stickyv3"),
n = {
sticky: "ibm-masthead-sticky",
stickyShowing: "ibm-masthead-sticky-showing",
enableTransition: "hastransition"
},
o = 0,
a = 120,
s = !1,
r = {
masthead: {},
body: {},
mhPlaceholder: {}
},
l = 0,
c = "";
function d(e) {
r.mhPlaceholder[e ? "removeClass" : "addClass"]("ibm-hide")
}
i.autoInit = function() {
t.common.module.mastheadv3.subscribe("megamenuready", "mastheadstickyv3", i.init).runAsap(i.init)
}, i.init = function() {
r.body = e(document.body), r.masthead = e(document.getElementById("ibm-masthead")), e(window).scroll(function() {
s = !0
}), setInterval(function() {
s ? (s = !1, function() {
0 === (o = e(this).scrollTop()) ? (r.masthead.removeClass(n.enableTransition), r.body.removeClass(n.sticky + " " + n.stickyShowing), d(!1)) : Math.abs(l - o) >= a && (l < o ? "down" !== c && (c = "down", r.body.addClass(n.sticky).removeClass(n.stickyShowing), d(!0), setTimeout(function() {
r.masthead.addClass(n.enableTransition)
}, 200)) : "up" !== c && (c = "up", r.masthead.addClass(n.enableTransition), r.body.addClass(n.sticky + " " + n.stickyShowing), d(!0)), l = o)
}()) : "down" === c && (l = e(this).scrollTop())
}, 100), document.getElementsByClassName("ibm-mhplaceholder")[0] || (r.mhPlaceholder = e('<div class="ibm-hide ibm-mhplaceholder"></div>').insertAfter("#ibm-masthead"))
}, i.autoInit()
}(jQuery, IBMCore),
function(n, i) {
var o, a = i.namespace(i, "common.module.mastheadsearchv3"),
e = i.common.util.eventCoordinator(a, "mastheadsearchv3", ["ready"]),
s = 50,
t = "default",
r = {
body: {},
inputField: {},
searchScope: {},
searchButton: {},
searchCloseButton: {},
searchForm: {},
searchModule: {},
typeaheadContainer: {},
typeaheadUl: {}
},
l = "",
c = !1,
d = 0,
u = !1;
function m() {
0 < r.typeaheadUl.length && r.typeaheadUl.empty()
}
function p() {
return t
}
function h(e) {
var t = r.inputField[0].value;
(t !== l || e) && ("" !== (l = t) ? !c && r.searchScope.find(":checkbox").prop("checked") && a.customTypeaheadFunction ? a.customTypeaheadFunction(t) : c && r.searchScope.find(":checkbox").prop("checked") ? a.makeTypeaheadRequest(function() {
n.ajax({
url: "https://www.ibm.com/marketplace/api/search/v3/combined_suggestions?locale=" + i.common.util.meta.getPageLc() + "-" + i.common.util.meta.getPageCc() + "&q=" + t,
dataType: "json",
searchString: t,
requestCount: ++d,
success: function(e) {
if (d === this.requestCount) {
var t = [],
i = 0,
n = e["phrase-suggestions"].options,
o = e["product-suggestions"].results.items;
if (0 < n.length)
for (i = 0; i < n.length; i++) t.push(n[i].text);
if (0 < o.length)
for (i = 0; i < o.length; i++) t.push(o[i].fields["doc.name"][0]);
a.createTypeahead(this.searchString, t)
}
},
error: function(e) {
window.console.error("Error calling typeahead service: ", e)
}
})
}) : a.makeTypeaheadRequest(function() {
n.ajax({
url: "https://www-api.ibm.com/search/typeahead/v1?lang=" + i.common.util.meta.getPageLc() + "&cc=" + i.common.util.meta.getPageCc() + "&query=" + t,
dataType: "jsonp",
searchString: t,
requestCount: ++d,
success: function(e) {
if (d === this.requestCount) {
for (var t = [], i = 0, n = e.response.length; i < n; i++) t.push(e.response[i][0]);
a.createTypeahead(this.searchString, t)
}
},
error: function(e) {
window.console.error("Error calling typeahead service: ", e)
}
})
}) : a.makeTypeaheadRequest(function() {
m(), b(!1)
}, s + 10))
}
function f() {
r.inputField.attr("aria-activedescendant", r.typeaheadUl.find("li.ibm-active").attr("id")), r.inputField.val(r.typeaheadUl.find("li.ibm-active").text())
}
function g(e) {
e ? "default" === p() && n(".ibm-masthead-categories, .ibm-mh-marketplace-link").addClass("ibm-fadein").removeClass("ibm-fadeout") : n(".ibm-masthead-categories, .ibm-mh-marketplace-link").addClass("ibm-fadeout").removeClass("ibm-fadein")
}
function v(e) {
"default" === e ? (n(document.body).removeClass("ibm-masthead-search-minimized ibm-masthead-search-maximized"), t = "default") : "minimized" === e ? (n(document.body).addClass("ibm-masthead-search-minimized").removeClass("ibm-masthead-search-maximized"), i.common.util.freezeScrollbars(!1), t = "minimized") : "maximized" === e && (n(document.body).removeClass("ibm-masthead-search-minimized").addClass("ibm-masthead-search-maximized"), i.common.util.freezeScrollbars(!0), t = "maximized")
}
function b(e) {
u = e ? (r.typeaheadContainer.add(r.searchScope).addClass("ibm-fadein").removeClass("ibm-fadeout").attr("aria-expanded", !0), r.inputField.attr("aria-expanded", !0), !0) : (r.typeaheadContainer.add(r.searchScope).addClass("ibm-fadeout").removeClass("ibm-fadein").attr("aria-expanded", !0), r.inputField.attr("aria-expanded", !1), !1)
}
a.isLoaded = !1, a.autoInit = function() {
i.common.util.config.isEnabled("masthead.search") ? (i.common.module.mastheadv3.subscribe("ready", "mastheadsearchv3", function() {
setTimeout(a.init, 100), i.common.module.mastheadv3.pauseSubscription("ready", "mastheadsearchv3")
}), i.common.util.config.isEnabled("masthead.search.typeahead") && a.subscribe("ready", "mastheadsearchtypeahead", function() {
! function() {
r.typeaheadContainer[0] ? r.typeaheadContainer.empty() : r.typeaheadContainer = n('<div id="ibm-search-typeahead-container" aria-expanded="false" class="ibm-search-typeahead-container"></div>').insertAfter(r.searchModule);
r.typeaheadUl = n('<ul class="ibm-plain-list ibm-padding-bottom-0" role="listbox" aria-live="polite" aria-label="' + (i.common.translations.data.v18main.misc.resultsNav || "Suggestions") + '"></ul>'), r.inputField.attr({
role: "combobox",
"aria-autocomplete": "list",
"aria-expanded": "false",
"aria-owns": "ibm-search-typeahead-container"
}), r.typeaheadUl.on("focusin", function() {}).on("click", function(e) {
n(e.target).closest(".typeahead-nooption")[0] || (e.preventDefault(), e.stopPropagation(), function(e) {
"li" !== e[0].nodeName.toLowerCase() && (e = e.parent());
if (e.hasClass("typeahead-nooption")) return;
r.typeaheadUl.find("li.ibm-active").removeClass("ibm-active"), e.addClass("ibm-active"), r.inputField.focus()
}(n(e.target)), f(), r.searchForm.submit())
}).on("mouseover", function(e) {
var t = n(e.target);
"li" !== t[0].nodeName.toLowerCase() && (t = t.parent()), t.hasClass("typeahead-nooption") || (r.typeaheadUl.find("li").removeClass("ibm-active"), t.addClass("ibm-active"))
}), r.inputField.on("input", function() {
h(), g(!1)
}).on("focus", function() {
"" !== r.inputField.val() && (g(!1), b(!0))
}).on("keydown", function(e) {
var t = e.keyCode;
37 !== t && 39 !== t && (9 === e.keyCode && e.shiftKey && "maximized" !== p() && (b(!1), g(!0)), 38 === t ? (e.preventDefault(), u ? (! function e() {
var t = r.typeaheadUl.find("li.ibm-active").prev("li");
r.typeaheadUl.find("li.ibm-active").removeClass("ibm-active");
t[0] ? t.addClass("ibm-active") : r.typeaheadUl.find("li:last").addClass("ibm-active");
r.typeaheadUl.find("li.ibm-active").hasClass("typeahead-nooption") && e()
}(), f()) : h()) : 40 === t && (e.preventDefault(), u ? (! function e() {
var t = r.typeaheadUl.find("li.ibm-active").next("li");
r.typeaheadUl.find("li.ibm-active").removeClass("ibm-active");
t[0] ? t.addClass("ibm-active") : r.typeaheadUl.find("li:first").addClass("ibm-active");
r.typeaheadUl.find("li.ibm-active").hasClass("typeahead-nooption") && e()
}(), f()) : h()))
}), e = !1, n(window).on("scroll", function() {
e = !0
}), setInterval(function() {
e && (e = !1, document.getElementsByClassName("ibm-masthead-search-maximized")[0] || (b(!1), g(!0)))
}, 100), r.body.on("click", function(e) {
"maximized" !== p() && (n(e.target).closest(".ibm-masthead-rightside")[0] || (b(!1), g(!0)))
}), r.searchButton.on("keydown", function(e) {
9 !== e.keyCode || e.shiftKey || "maximized" === p() || b(!1)
});
var e
}()
})) : n(function() {
n(document.getElementById("ibm-search-module")).addClass("ibm-hide")
})
}, a.init = function() {
r.body = n(document.body), r.inputField = n(document.getElementById("q")), r.searchButton = n(document.getElementById("ibm-search")), r.searchForm = n(document.getElementById("ibm-search-form")), r.searchModule = n(document.getElementById("ibm-search-module")), r.searchCloseButton = n('<div class="ibm-masthead-search-close"><p class="ibm-ind-link ibm-icononly ibm-padding-bottom-0"><a href="#" class="ibm-close-link ibm-nospacing">' + IBMCore.common.translations.data.v18main.misc.close + "</a></p></div>").insertBefore("#ibm-search-form").on("click", function(e) {
e.preventDefault(), v("minimized"), b(!1), r.searchButton.focus()
}).find("a"),
function() {
var t = r.searchModule.find("form:not('#ibm-search-form')"),
e = '<form class="ibm-hide" id="ibm-default-scope-form" action="https://www.ibm.com/search" method="get"><input name="lang" type="hidden" value="' + i.common.util.meta.getPageLc() + '"><input name="cc" type="hidden" value="' + i.common.util.meta.getPageCc() + '"><input name="tabType[0]" type="hidden" value="Products"><input name="q" type="text" value=""><input name="lnk" type="hidden" value="mhmpsrch"></form>';
t[0] || (n('<span class="ibm-search-scope"><input class="ibm-styled-checkbox" data-init="false" type="checkbox" name="sn" value="" id="ibm-mh-scopeoption"> <label for="ibm-mh-scopeoption">' + (i.common.translations.data.v18main.misc.withinMp || "In Marketplace") + "</span>").insertBefore("#ibm-search"), t = n(e).insertAfter("#ibm-search-form"), c = !0);
r.inputField.attr("autocomplete", "off").after('<input name="lnk" type="hidden" value="mhsrch">'), r.searchScope = r.searchModule.find(".ibm-search-scope"), r.searchScope[0] && r.searchModule.addClass("ibm-has-scope");
r.searchForm.submit(function(e) {
"" !== r.inputField.val() ? r.searchScope.find(":checkbox").prop("checked") && t[0] && (e.preventDefault(), t.find("input:text").val(r.inputField.val()), t.submit()) : e.preventDefault()
}), r.inputField.on("focus", function() {
"minimized" === p() && v("maximized")
}), r.searchButton.on("keydown", function(e) {
9 !== e.keyCode || e.shiftKey || ("maximized" === p() ? (e.preventDefault(), r.searchCloseButton.focus()) : g(!0))
}), r.searchCloseButton.on("keydown", function(e) {
9 === e.keyCode && e.shiftKey && (e.preventDefault(), r.searchButton.focus())
}), r.searchScope.find(":checkbox").on("change", function() {
h(!0)
})
}(), a.isLoaded = !0, e.publish("ready")
}, a.clearTypeahead = m, a.createTypeahead = function(e, t) {
var i = t,
o = "",
a = e;
i.sort(), n.each(i, function(e, t) {
var i = t,
n = new RegExp(a, "i");
i = i.replace(n, "<strong>" + a + "</strong>"), e < 6 && (o += '<li id="ibm-search-overlay-typeahead-res-' + e + '" role="option" tabindex="-1">' + i + "</li>")
}), "" === r.inputField.val() ? (m(), b(!1)) : (r.typeaheadContainer.find("ul")[0] || r.typeaheadContainer.html(r.typeaheadUl), r.typeaheadUl.html(o), b(!0))
}, a.getDisplayState = p, a.makeTypeaheadRequest = (o = 0, function(e, t) {
var i = t || s;
clearTimeout(o), o = setTimeout(e, i)
}), a.showAs = v, a.showTypeaheadResults = b, i.common.meta.subscribe("dataReady", "mastheadsearchv3", a.autoInit).runAsap(a.autoInit)
}(jQuery, IBMCore),
function(a, i) {
var n, o, s, r, l = i.namespace(i, "common.module.mobilemenuv3"),
c = i.common.util.eventCoordinator(l, "mobilemenuv3", ["ready"]),
e = !1,
d = {
menuScreen: {}
},
u = null;
function m() {
var e, t = document.getElementById("ibm-primary-tabs"),
i = document.getElementById("ibm-secondary-tabs"),
n = document.getElementById("ibm-primary-links"),
o = document.getElementById("ibm-secondary-navigation");
if (0 < a(t).find("li").length) e = a(t).find("ul").clone(!0), a("#ibm-primary-tabs[data-widget='dyntabs']")[0] && e.attr("data-type", "dyntabs"), 0 < a(i).find("li").length && e.find("a[aria-selected='true']").after(a(i).find("ul").clone());
else if (0 < a(i).find("li").length) e = a(i).find("ul").clone().removeAttr("id");
else {
if (!(0 < a(n).find("li").length)) return e;
(e = a(n).clone().removeAttr("id")).find(".ibm-show-hide.ibm-widget-processed").removeClass("ibm-widget-processed").find(".ibm-container-body").removeAttr("style"), 0 < a(o).find("li").length && (o = a(o).clone().attr("id", "ibm-mobile-menu-lnavrel-links").wrapInner('<div class="ibm-show-hide" data-type="panel" data-widget="showhide"></div>').find("ul").addClass("ibm-padding-top-0").wrap('<div class="ibm-container-body"><div>').end(), e = e.add(o))
}
return e.removeClass("ibm-tabs").find(".ibm-tabs").removeClass("ibm-tabs"), e.find("[id]").removeAttr("id"), e.find("a[aria-selected='true']:last").wrapInner("<span>").parent().addClass("ibm-mobilemenu-nav-selected"), a('<div class="ibm-mobilemenu-section ibm-mobilemenu-pagenav"></div>').html(e)
}
function p() {
var e;
if (document.getElementsByClassName("ibm-sitenav-menu-container")[0] && 0 !== a(".ibm-sitenav-menu-list > ul > li").length) return e = a(document.getElementsByClassName("ibm-sitenav-menu-list")[0]).children("ul").clone(), document.getElementsByClassName("ibm-sitenav-menu-name")[0] && e.prepend('<li class="ibm-mobile-section-heading ibm-mobile-sitename">' + a(document.getElementsByClassName("ibm-sitenav-menu-name")[0]).html() + "</li>"), document.getElementsByClassName("ibm-parent-site-name")[0] && e.prepend('<li class="ibm-mobile-section-heading ibm-mobile-sitename">' + a(document.getElementsByClassName("ibm-parent-site-name")[0]).html() + "</li>"), e.find("[data-altlabel]").each(function() {
a(this).text(a(this).attr("data-altlabel"))
}), e.find("a.ibm-highlight").removeClass("ibm-highlight").parent().addClass("ibm-highlight"), e.find(".ibm-highlight").addClass("ibm-mobilemenu-nav-selected").children("a").closest("li.ibm-haschildlist").attr("aria-expanded", "true"), e.find("li.ibm-haschildlist").wrapInner('<div class="ibm-show-hide" data-type="panel" data-widget="showhide"></div>').each(function() {
var e = a(this),
t = e.find("> div > button")[0] || e.find("> div > span")[0],
i = t.innerHTML;
a("<h2>" + i + "</h2>").replaceAll(a(t)).siblings("ul").addClass("ibm-padding-top-0").wrap('<div class="ibm-container-body"><div>')
}), e.find(".ibm-highlight").closest(".ibm-show-hide").children("h2").attr("data-open", "true"), a('<div class="ibm-mobilemenu-section ibm-mobilemenu-sitenavmenu"></div>').html(e)
}
function h() {
n.find(".ibm-mobilemenu-section li li a").wrapInner("<span>"), i.common.util.a11y.makeTreeAccessible({
el: n.find(".ibm-mobilemenu-pagenav > ul")
}), i.common.util.a11y.makeToolbarAccessible({
el: n.find(".ibm-mobilemenu-sitenavmenu > ul")
})
}
function f() {
n.find(".ibm-show-hide:not(.ibm-widget-processed)").showhide(), n.find(".ibm-mobilemenu-nav-selected .ibm-show-hide").parent().addClass("ibm-showing")
}
l.isLoaded = !1, l.autoInit = function() {
i.common.module.mastheadv3.subscribe("megamenuready", "mobilemenu", l.init).runAsap(l.init)
}, l.init = function() {
var e;
i.common.module.mastheadv3.getMastheadData(), u = i.common.module.mastheadv3.getMastheadLinklists(), a(document.getElementsByClassName("ibm-mobilemenu")[0]).remove(), d.menuScreen = a(document.getElementById("ibm-mobilemenu-screen")), d.menuScreen[0] || (d.menuScreen = a('<div id="ibm-mobilemenu-screen"></div>').appendTo(document.body)), o = m(), s = p(), e = '<div class="ibm-mobilemenu-section">' + u.mainLinks.burgerMenuHtml + "</div>", r = a(e).find(".ibm-masthead-categories").attr("class", "ibm-masthead-categories-mobilemenu").end();
var t = '<div class="ibm-mobilemenu-close"><p class="ibm-icononly ibm-fright ibm-ind-link ibm-nospacing"><a class="ibm-close-link" href="#">' + i.common.translations.data.v18main.misc.close + "</a></p></div>";
o || s || r.find(".ibm-show-hide > h2").attr("data-open", "true"), n = a('<div class="ibm-mobilemenu ibm-hide" id="ibm-burger-menu-container" aria-labelledby="ibm-burgermenu-a11y" role="dialog" tabindex="0"></div>').append('<p class="ibm-hide" id="ibm-burgermenu-a11y">' + (i.common.translations.data.v18main.misc.sitenav || "Site navigation") + "</p>").append(t).append(o).append(s).append(r).insertAfter("#ibm-masthead"), setTimeout(function() {
a(document.getElementsByClassName("ibm-mobilemenu-close")[0]).click(function(e) {
e.preventDefault(), l.hide(), a(document.getElementsByClassName("ibm-masthead-item-menu")[0]).find("button").focus()
}), n.find("a").each(function() {
var e = i.common.util.url.addParam({
url: this.getAttribute("href"),
paramName: "lnk",
paramValue: "hm" + (i.common.util.url.getParam("lnk", this.href) || "")
});
this.href = e
}), f(), h(), n.find(".ibm-show-hide h2 a").on("click", function() {
var e = a(this);
e.parent("h2.ibm-showing")[0] ? e.closest(".ibm-haschildlist").addClass("ibm-showing") : e.closest(".ibm-haschildlist").removeClass("ibm-showing")
}), n.find(".ibm-mobilemenu-mhlinks").each(function() {
i.common.util.a11y.makeToolbarAccessible({
el: this
})
}), n.find(".ibm-mobilemenu-section:last a").keydown(function(e) {
if (9 === e.keyCode && !e.shiftKey) {
if (a(this).hasClass("ibm-show-active")) return;
e.preventDefault(), n.find("a:first").focus()
}
}), n.find(".ibm-mobilemenu-close a").keydown(function(e) {
9 === e.keyCode && e.shiftKey && (e.preventDefault(), n.find("a:visible:last").focus())
}), d.menuScreen.on("click", function() {
i.common.module.mobilemenu.isShowing() && i.common.module.mobilemenu.hide()
})
}, 100), l.isLoaded = !0, c.publish("ready")
}, l.addSiteNavigation = function() {
o || s || (o = m(), s = p(), (o || s) && (r.find(".ibm-show-hide.ibm-widget-processed > h2 a.ibm-show-active").trigger("click"), n.find(".ibm-mobilemenu-section:first").prepend(s).prepend(o), f(), h()))
}, l.show = function() {
n.removeClass("ibm-hide"), setTimeout(function() {
a(document.body).addClass("ibm-show-mobilemenu-screen ibm-mobilemenu-show"), n.focus(), i.common.util.freezeScrollbars(!0), e = !0
}, 30)
}, l.hide = function() {
a(document.body).removeClass("ibm-mobilemenu-show"), setTimeout(function() {
a(document.body).removeClass("ibm-show-mobilemenu-screen"), i.common.util.freezeScrollbars(!1)
}, 150), setTimeout(function() {
n.addClass("ibm-hide"), e = !1
}, 400)
}, l.toggle = function() {
l.isShowing() ? l.hide() : l.show()
}, l.isShowing = function() {
return e
}, l.isOpen = l.isShowing, l.autoInit()
}(jQuery, IBMCore),
function(t, e) {
var i = e.namespace(e, "common.widget.manager");
i.dispatchEvent = function(e) {
var t, i = {};
e.evtDetail && (i.detail = e.evtDetail), "function" == typeof window.CustomEvent ? (t = new window.CustomEvent("ibm-" + e.evtName, i), e.evtEl.dispatchEvent(t)) : "function" == typeof document.createEvent && ((t = document.createEvent("Event")).initEvent("ibm-" + e.evtName, !1, !1), e.evtEl.dispatchEvent(t))
}, i.dispatchInitEvent = function(e) {
t(e).addClass("ibm-widget-processed"), i.dispatchEvent({
evtEl: e,
evtName: "init"
})
}
}(jQuery, IBMCore),
function(c, d) {
d.namespace(d, "common.widget.carousel");
var i = [];
function u(i, n) {
setTimeout(function() {
var e = n.slidecount ? "slidecount-" : n.dots ? "dots-" : "",
t = n.arrows ? "arrows" : "";
d.common.util.statshelper.fireEvent({
ibmEV: "widget",
ibmEvAction: i.evAction,
ibmEvGroup: "carousel",
ibmEvModule: e + t
})
}, 800)
}
function n(i) {
var n, o, a, s = this,
r = {
adaptiveheight: !1,
arrows: !0,
autoplay: !1,
autoplayspeed: 6e3,
customPaging: function(e, t) {
return c('<button type="button" data-role="none" role="button">').text(t + 1)
},
dots: !0,
easing: "swing",
infinite: !1,
prevArrow: '<button type="button" data-role="none" class="ibm-chevron-left-regular-link ibm-linkcolor-default ibm-carousel-prev" aria-label="previous">Previous</button>',
nextArrow: '<button type="button" data-role="none" class="ibm-chevron-right-regular-link ibm-linkcolor-default ibm-carousel-next" aria-label="next">Next</button>',
randomfirst: !1,
slidecount: !1,
speed: 275,
variablewidth: !1,
rtl: "rtl" === document.documentElement.getAttribute("dir")
},
l = {};
s.destroy = function() {
return n.replaceWith(l), l
}, s.init = function(e) {
n = c(e), l = n.clone(!0), n.data("widget", s);
try {
o = n,
function() {
-1 === o[0].className.indexOf("ibm-carousel__arrows--large") && (o.after('<div class="ibm-carousel-controls"><div class="ibm-cc-prev"></div><div class="ibm-cc-middle" aria-label="Carousel controls"></div><div class="ibm-cc-next"></div></div>'), r.appendDots = o.next().children("div:eq(1)"), r.appendArrows = o.next().children("div:eq(0)"));
(a = c.extend(!0, {}, r, o.data() || {}, i)).adaptiveHeight = a.adaptiveheight, a.autoplaySpeed = a.autoplayspeed, a.variableWidth = a.variablewidth, -1 !== o[0].className.indexOf("ibm-carousel__arrows--large") || a.dots || a.slidecount || (a.dots = !0)
}(), a.randomfirst && (t = Math.floor(Math.random() * o.children().length), o.children(":eq(" + t + ")").prependTo(o)), a.slidecount && o.on("init reInit afterChange", function(e, t, i, n) {
var o = (i || 0) + 1;
r.appendDots.addClass("ibm-h4").text(o + " / " + t.slideCount)
}), o.slick(a), u({
evAction: "init"
}, a), -1 === o[0].className.indexOf("ibm-carousel__arrows--large") ? (a.appendArrows.find(".ibm-carousel-next").appendTo(a.appendDots.next()), o.next().appendTo(o), o.find(".ibm-carousel-controls").on("click", "button", function() {
var e = c(this).text();
u({
evAction: e
}, a)
})) : (o.find(".slick-dots").on("click", "button", function() {
var e = c(this).text();
u({
evAction: e
}, a)
}), o.find(".slick-arrow").on("click", function() {
var e = c(this).text();
u({
evAction: e
}, a)
})), d.common.widget.manager.dispatchInitEvent(n[0])
} catch (e) {
throw e
}
var t
}
}
c.fn.carousel = function(t) {
return this.each(function() {
var e;
(e = new n(t), i.push(e), e).init(this)
})
}
}(jQuery, IBMCore),
function(l, c) {
function d(e) {
var t = e.parent().find(".dataTables_filter label input").clone(!0);
t[0] && e.parent().find(".dataTables_filter label").html((c.common.translations.data.v18main.misc.search || "Search") + ":").append(t[0])
}
c.namespace(c, "common.widget.datatable").init = function(e, t) {
var i, n, o = l(e),
a = {
classes: {
sFilterInput: "ibm-styled-input"
},
colReorder: !1,
info: !1,
ordering: !1,
paging: !1,
responsive: !0,
scrollCollapse: !0,
searching: !1
},
s = a,
r = o.clone(!0);
return o.data("widget", {
destroy: function() {
return n.destroy(), o.replaceWith(r), r
}
}), t = t || {}, (s = l.extend(!0, {}, a, o.data(), t)).scrollaxis && (-1 < s.scrollaxis.indexOf("x") && (s.scrollX = !0, s.responsive = !1), -1 < s.scrollaxis.indexOf("y") && (s.scrollY = s.height || 200, s.responsive = !1)), n = o.addClass("display").DataTable(s), s.language && s.language.search || "en" === c.common.util.meta.getPageLc() || c.common.translations.subscribe("dataready", "datatable", function() {
d(o)
}).runAsap(function() {
d(o)
}), s.scrollaxis && (-1 < s.scrollaxis.indexOf("x") || -1 < s.scrollaxis.indexOf("y")) && (i = o.parent(".dataTables_scrollBody").siblings(".dataTables_scrollHead").children("caption"))[0] && i.addClass("ibm-access").prependTo(o), c.common.widget.manager.dispatchInitEvent(o[0]), n
}
}(jQuery, IBMCore),
function(e, t) {
e.fn.hiresimageswap = function() {
return this
}
}(jQuery),
function(h, f) {
f.namespace(f, "common.widget.leavingibm");
var o = [],
g = {
title: "Leaving the IBM Web site",
text: "You are now leaving the IBM Web site. IBM makes no representations or warranties about any other Web site which you may access through this one.",
continueText: "Continue",
cancelText: "Cancel",
overlayId: "overlay-leaving-ibm"
};
function a(s) {
var r, l, c, d, u, m, p = this;
p.destroy = function() {
return r.remove(), l.replaceWith(c), c.off(".leavingibm").removeClass("ibm-widget-processed"), c
}, p.init = function(e) {
l = h(e), c = l.clone(!0), l.data("widget", p);
try {
h.extend(!0, g, {
title: f.common.translations.data.v18main.leaving.LEAVING001,
text: f.common.translations.data.v18main.leaving.LEAVING002,
continueText: f.common.translations.data.v18main.misc.continueText,
cancelText: f.common.translations.data.v18main.misc.cancelText
}), u = h.extend({}, g, l.data("options") || {}, s), (d = f.common.widget.overlay.createOverlay({
contentHtml: (a = u, '<h4 class="ibm-bold">' + a.title + "</h4><p>" + a.text + '</p><div class="ibm-rule"><hr /></div><div class="ibm-buttons-row ibm-center"><p class="ibm-btn-row"><button class="ibm-btn-sec">' + a.cancelText + '</button> <button class="ibm-btn-pri">' + a.continueText + "</button></p>"),
classes: "ibm-leaving-overlay ibm-overlay-alt"
})).init(), r = h(document.getElementById(d.getId())), p.overlay = d, o = l.attr("href"), t = o, i = t.indexOf("url="), n = t.indexOf("ibm.com/links"), -1 !== i && -1 !== n && n < i && (t = t.substr(i + 4)), m = decodeURIComponent(t), d.subscribe("show", "ibm-leaving", function() {
f.common.util.statshelper.fireEvent({
ibmEV: "overlay",
ibmEvAction: "show",
ibmEvTarget: m,
ibmEvGroup: "Leaving IBM",
ibmEvLinkTitle: l.text()
})
}), d.subscribe("hide", "ibm-leaving", function() {
f.common.util.statshelper.fireEvent({
ibmEV: "overlay",
ibmEvAction: "close",
ibmEvTarget: m,
ibmEvGroup: "Leaving IBM",
ibmEvLinkTitle: l.text()
})
}), r.on("click", ".ibm-btn-pri", function(e) {
e.preventDefault(), f.common.util.statshelper.fireEvent({
ibmEV: "external link",
ibmEvAction: "continue",
ibmEvTarget: m,
ibmEvGroup: "Leaving IBM",
ibmEvLinkTitle: l.text()
}), void 0 !== l.attr("target") ? (window.open(m, l.attr("target")), d.hide()) : location.href = m
}), r.on("click", ".ibm-btn-sec", function(e) {
e.preventDefault(), d.hide()
})
} catch (e) {
throw e
}
var t, i, n;
var o;
var a
}
}
h.fn.leavingibm = function(n) {
return this.each(function() {
var i = h(this);
i.clone(!0);
i.on("click.leavingibm", function(e) {
var t;
i.data("widget").overlay || (t = new a(n), o.push(t), t).init(this);
i.data("widget").overlay.show(), e.preventDefault()
}), i.data("widget", {
destroy: function() {
return i.off(".leavingibm"), i.removeClass("ibm-widget-processed")
}
}), f.common.widget.manager.dispatchInitEvent(this)
})
}
}(jQuery, IBMCore),
function($, _) {
var o, t = _.namespace(_, "common.widget.overlay"),
A = [],
M = null,
D = [],
i = _.common.util.url.getParam("showoverlay");
function n(e) {
var t = new a(e);
return A.push(t), t
}
function L(e, t) {
_.common.util.statshelper.fireEvent({
ibmEV: "widget",
ibmEvGroup: "Overlay",
ibmEvName: e,
ibmEvAction: t
})
}
function j() {
if (0 === D.length) o.hide(), _.common.util.freezeScrollbars(!1);
else {
var e, t, i = 0,
n = D.length;
for (e = 0; e < n; e++) t = D[e], i = Math.max(i, t.backdrop_opacity);
o.css("opacity", i), o.show(), _.common.util.freezeScrollbars(!0)
}
}
function a(e) {
var n, o, a, t, i = {
$overlay: null,
allowResize: !0,
arialabel: "Overlay content",
ariadescribedby: !0,
backdropopacity: .5,
backgroundcolor: null,
classes: "",
contentHtml: null,
fullwidth: !1,
hidexscroll: !1,
id: "ibm-overlaywidget-" + ($("[data-widget='overlay container']").length + 1),
name: "",
type: "modal"
},
s = e.$overlay ? e.$overlay.data() : {},
r = $.extend(!0, i, s, e),
l = this,
c = _.common.util.eventCoordinator(l, "Overlay", ["show", "hide", "pre-show", "background-change", "direction-change", "positioner-change", "resize"]),
d = r.$overlay,
u = "active",
m = r.backgroundcolor,
p = !0,
h = !0,
f = !1,
g = [],
v = [],
b = "ibm-common-overlay " + r.classes,
y = "prepped",
w = 0;
function k(e) {
return e = void 0 !== e ? e + "px" : "auto", o.css("width", e), l
}
function C(e) {
var t = _.common.util.color.createColor(e),
i = t.rgba();
return d.css({
backgroundColor: i
}), d.addClass("ibm-overlay-text-" + t.accessibleTextColor), m = i, l
}
function x() {
for (var e = -1, t = D.length; ++e < t && l.id !== D[e].getId(););
return e < t ? e : -1
}
function T() {
return t = document.activeElement, "" === o.innerHTML ? (window.console.warn("v18: Will not show an empty overlay"), !1) : E() ? (window.console.warn("v18: This overlay is already showing"), !1) : (M = l, D.push(l), w = 920 + x(), d.css("zIndex", w), j(), $.each(v, function() {
this.call(l, h)
}), c.publish("pre-show", h), d.addClass(y + " " + u), c.publish("show", h), L("show", l.id), f = !0, l)
}
function S(e) {
return E() && ("alert" !== r.type || e) && ($.each(g, function() {
this.call(l, p)
}), M = null, D.splice(x(), 1), j(), d.removeClass(u), setTimeout(function() {
d.removeClass(y)
}, 100), c.publish("hide", p), L("hide", l.id), f = p = !1, $(t).focus()), l
}
function E() {
return f
}
function I(e) {
return void 0 === e ? -1 < d[0].className.indexOf("seamless") : (d[!1 === e ? "removeClass" : "addClass"]("seamless"), l)
}
d && ("" !== d[0].id && (r.id = "ibm-overlaywidget-" + d[0].id), b = d[0].getAttribute("class")), l.backdrop_opacity = r.backdropopacity, l.id = r.id, l.destroy = function() {
return S(), a && d.replaceWith(a), $.each(A, function(e) {
this.id === l.id && A.splice(e, 1)
}), a
}, l.init = function() {
var e, t, i = $('<div class="" id="' + l.id + '" role="dialog" aria-describedby="' + l.id + '-content" aria-label="' + r.arialabel + '" data-widget="overlay container" data-name="' + r.name + '"><div class="ibm-overlay-heading-con"><p class="ibm-icononly"><a href="javascript:void(0);" class="ibm-close-link" role="button">Close</a></p></div><div id="' + l.id + '-content" class="content"></div></div>');
d && (a = d.clone(!0)), e = r.contentHtml ? $(r.contentHtml) : d.attr("class", ""), i.find(".content").append(e), d = i.addClass(b).appendTo(document.body).data("widget", l), n = d.find(".ibm-overlay-heading-con .ibm-close-link"), (o = d.find(".content [data-widget='overlay']"))[0] || (o = d.find(".content")), !1 === r.ariadescribedby && d.removeAttr("aria-describedby"), r.fullwidth && d.addClass("full-width"), "alert" === r.type && n.remove(), o.find(".ibm-common-overlay-close")[0] ? n.html(o.find(".ibm-common-overlay-close")[0].innerHTML) : _.common.translations.subscribe("dataReady", "Overlay", function() {
n.html(_.common.translations.data.v18main.misc.close)
}).runAsap(function() {
n.html(_.common.translations.data.v18main.misc.close)
}), r.seamless && I(!0), void 0 !== r.width && k(r.width), void 0 !== r.height && (t = void 0 !== (t = r.height) ? t + "px" : "auto", o.css("height", t)), m && C(m), r.hidexscroll && o.addClass("hidexscroll"), n.click(function(e) {
e.preventDefault(), S()
}), c.subscribe("show", "Overlay init", function() {
d.find(".content").attr("tabindex", 0).focus()
}), c.subscribe("hide", "Overlay init", function() {
d.find(".content").attr("tabindex", -1), d.find("[data-widget=videoplayer]").data("widget") && d.find("[data-widget=videoplayer]").data("widget").pauseVideo && d.find("[data-widget=videoplayer]").data("widget").pauseVideo()
}), d.on("keydown", function(e) {
var t = d.find(":focusable:last"),
i = d.find(":focusable:first");
9 === e.keyCode && !e.shiftKey && $(e.target).is(t) ? (e.preventDefault(), i.focus()) : 9 === e.keyCode && e.shiftKey && $(e.target).is(i) && (e.preventDefault(), t.focus())
}), d.find("[data-widget='overlay']")[0] && _.common.widget.manager.dispatchInitEvent(d.find("[data-widget='overlay']")[0])
}, l.getId = function() {
return l.id
}, l.setHtml = function(e) {
o.html(e), "" === e && S();
return l
}, l.setWidth = k, l.setBackground = C, l.setPosition = function() {
return l
}, l.getStackIndex = x, l.show = T, l.getZindex = function() {
return w
}, l.hide = S, l.toggle = function() {
E() ? S() : T();
return l
}, l.isShowing = E, l.isOpen = E, l.seamless = I
}
$.fn.overlay = function() {
return this.each(function() {
var e = n({
$overlay: $(this)
});
e.init(this), i && i === this.id && e.show()
})
}, t.consoleAll = function() {
$.each(A, function() {
window.console.log(this)
})
}, t.currentShowingOverlay = function() {
return M
}, t.destroy = function(e) {
return t.getWidget(e).destroy(), $(document.getElementById(e))
}, t.getWidget = function(e) {
return $(document.getElementById(e)).closest("[data-widget='overlay container']").data("widget")
}, t.hide = function(e, t) {
$(document.getElementById(e)).closest("[data-widget='overlay container']").data("widget").hide(t)
}, t.hideAllOverlays = function() {
$.each(A, function() {
this.hide()
})
}, t.show = function(e) {
$(document.getElementById(e)).closest("[data-widget='overlay container']").data("widget").show()
}, t.createOverlay = n, $(document).keydown(function(e) {
switch (e.keyCode || e.which) {
case 27:
0 < D.length && D[D.length - 1].hide()
}
}), $(function() {
(o = $('<div id="ibm-overlay-backdrop"></div>').appendTo(document.body)).show = function() {
$(document.body).addClass("ibm-overlay-backdrop-visible")
}, o.hide = function() {
$(document.body).removeClass("ibm-overlay-backdrop-visible")
}, o.click(t.hideAllOverlays)
})
}(jQuery, IBMCore),
function(l, c) {
c.namespace(c, "common.widget.parallaxscroll").init = function(e) {
var i = l(e),
t = i.css("background-position"),
n = i.data("scrollspeed") || 6,
o = i.css("backgroundPosition").split(" ")[0],
a = i.data("disablesmallgrid"),
s = Math.floor(999 * Math.random() + 1);
function r() {
var e = l(window),
t = o + " " + -Math.floor((Math.floor(e.scrollTop()) - Math.floor(i.offset().top)) / n) + "px";
a && -1 < document.documentElement.className.indexOf("ibm-grid-small") || i.css("background-position", t)
}
i.addClass("ibm-parallax-scroll"), i.data("widget", {
destroy: function() {
return l(window).off(".parallaxscroll." + s), i.removeClass("ibm-widget-processed").css("background-position", t), i
}
}), l(window).on("scroll.parallaxscroll." + s, r), r(), c.common.widget.manager.dispatchInitEvent(i[0])
}
}(jQuery, IBMCore),
function(t) {
"function" == typeof define && define.amd ? define(["jquery"], function(e) {
return t(e, window, document)
}) : "object" == typeof exports ? module.exports = t(require("jquery"), window, document) : t(jQuery, window, document)
}(function(n, a, u) {
"use strict";
var m, p, i, c, d, o, s, t, h, r, l, f, g, v, b, y, w, k;
l = {
paneClass: "nano-pane",
sliderClass: "nano-slider",
contentClass: "nano-content",
enabledClass: "has-scrollbar",
flashedClass: "flashed",
activeClass: "active",
iOSNativeScrolling: !1,
preventPageScrolling: !1,
disableResize: !1,
alwaysVisible: !1,
flashDelay: 1500,
sliderMinHeight: 20,
sliderMaxHeight: null,
documentContext: null,
windowContext: null
}, h = "scroll", d = "mouseenter", o = "mousewheel", t = "resize", i = "DOMMouseScroll", c = "down", m = "Microsoft Internet Explorer" === a.navigator.appName && /msie 7./i.test(a.navigator.appVersion) && a.ActiveXObject, p = null, b = a.requestAnimationFrame, r = a.cancelAnimationFrame, w = u.createElement("div").style, k = function() {
var e, t, i, n;
for (e = i = 0, n = (t = ["t", "webkitT", "MozT", "msT", "OT"]).length; i < n; e = ++i)
if (t[e], t[e] + "ransform" in w) return t[e].substr(0, t[e].length - 1);
return !1
}(), y = function(e) {
return !1 !== k && ("" === k ? e : k + e.charAt(0).toUpperCase() + e.substr(1))
}("transform"), g = !1 !== y, f = function() {
var e, t, i;
return (t = (e = u.createElement("div")).style).position = "absolute", t.width = "100px", t.height = "100px", t.overflow = h, t.top = "-9999px", u.body.appendChild(e), i = e.offsetWidth - e.clientWidth, u.body.removeChild(e), i
}, v = function() {
var e, t, i;
return t = a.navigator.userAgent, !!(e = /(?=.+Mac OS X)(?=.+Firefox)/.test(t)) && ((i = /Firefox\/\d{2}\./.exec(t)) && (i = i[0].replace(/\D+/g, "")), e && 23 < +i)
}, s = function() {
function e(e, t) {
this.el = e, this.options = t, p || (p = f()), this.$el = n(this.el), this.doc = n(this.options.documentContext || u), this.win = n(this.options.windowContext || a), this.body = this.doc.find("body"), this.$content = this.$el.children("." + this.options.contentClass), this.$content.attr("tabindex", this.options.tabIndex || 0), this.content = this.$content[0], this.previousPosition = 0, this.options.iOSNativeScrolling && null != this.el.style.WebkitOverflowScrolling ? this.nativeScrolling() : this.generate(), this.createEvents(), this.addEvents(), this.reset()
}
return e.prototype.preventScrolling = function(e, t) {
if (this.isActive)
if (e.type === i)(t === c && 0 < e.originalEvent.detail || "up" === t && e.originalEvent.detail < 0) && e.preventDefault();
else if (e.type === o) {
if (!e.originalEvent || !e.originalEvent.wheelDelta) return;
(t === c && e.originalEvent.wheelDelta < 0 || "up" === t && 0 < e.originalEvent.wheelDelta) && e.preventDefault()
}
}, e.prototype.nativeScrolling = function() {
this.$content.css({
WebkitOverflowScrolling: "touch"
}), this.iOSNativeScrolling = !0, this.isActive = !0
}, e.prototype.updateScrollValues = function() {
var e, t;
e = this.content, this.maxScrollTop = e.scrollHeight - e.clientHeight, this.prevScrollTop = this.contentScrollTop || 0, this.contentScrollTop = e.scrollTop, t = this.contentScrollTop > this.previousPosition ? "down" : this.contentScrollTop < this.previousPosition ? "up" : "same", this.previousPosition = this.contentScrollTop, "same" !== t && this.$el.trigger("update", {
position: this.contentScrollTop,
maximum: this.maxScrollTop,
direction: t
}), this.iOSNativeScrolling || (this.maxSliderTop = this.paneHeight - this.sliderHeight, this.sliderTop = 0 === this.maxScrollTop ? 0 : this.contentScrollTop * this.maxSliderTop / this.maxScrollTop)
}, e.prototype.setOnScrollStyles = function() {
var e, t;
g ? (e = {})[y] = "translate(0, " + this.sliderTop + "px)" : e = {
top: this.sliderTop
}, b ? (r && this.scrollRAF && r(this.scrollRAF), this.scrollRAF = b((t = this, function() {
return t.scrollRAF = null, t.slider.css(e)
}))) : this.slider.css(e)
}, e.prototype.createEvents = function() {
var i, n, t, o, a, s, r, l;
this.events = {
down: (l = this, function(e) {
return l.isBeingDragged = !0, l.offsetY = e.pageY - l.slider.offset().top, l.slider.is(e.target) || (l.offsetY = 0), l.pane.addClass(l.options.activeClass), l.doc.bind("mousemove", l.events.drag).bind("mouseup", l.events.up), l.body.bind(d, l.events.enter), !1
}),
drag: (r = this, function(e) {
return r.sliderY = e.pageY - r.$el.offset().top - r.paneTop - (r.offsetY || .5 * r.sliderHeight), r.scroll(), r.contentScrollTop >= r.maxScrollTop && r.prevScrollTop !== r.maxScrollTop ? r.$el.trigger("scrollend") : 0 === r.contentScrollTop && 0 !== r.prevScrollTop && r.$el.trigger("scrolltop"), !1
}),
up: (s = this, function(e) {
return s.isBeingDragged = !1, s.pane.removeClass(s.options.activeClass), s.doc.unbind("mousemove", s.events.drag).unbind("mouseup", s.events.up), s.body.unbind(d, s.events.enter), !1
}),
resize: (a = this, function(e) {
a.reset()
}),
panedown: (o = this, function(e) {
return o.sliderY = (e.offsetY || e.originalEvent.layerY) - .5 * o.sliderHeight, o.scroll(), o.events.down(e), !1
}),
scroll: (t = this, function(e) {
t.updateScrollValues(), t.isBeingDragged || (t.iOSNativeScrolling || (t.sliderY = t.sliderTop, t.setOnScrollStyles()), null != e && (t.contentScrollTop >= t.maxScrollTop ? (t.options.preventPageScrolling && t.preventScrolling(e, c), t.prevScrollTop !== t.maxScrollTop && t.$el.trigger("scrollend")) : 0 === t.contentScrollTop && (t.options.preventPageScrolling && t.preventScrolling(e, "up"), 0 !== t.prevScrollTop && t.$el.trigger("scrolltop"))))
}),
wheel: (n = this, function(e) {
var t;
if (null != e) return (t = e.delta || e.wheelDelta || e.originalEvent && e.originalEvent.wheelDelta || -e.detail || e.originalEvent && -e.originalEvent.detail) && (n.sliderY += -t / 3), n.scroll(), !1
}),
enter: (i = this, function(e) {
var t;
if (i.isBeingDragged) return 1 !== (e.buttons || e.which) ? (t = i.events).up.apply(t, arguments) : void 0
})
}
}, e.prototype.addEvents = function() {
var e;
this.removeEvents(), e = this.events, this.options.disableResize || this.win.bind(t, e[t]), this.iOSNativeScrolling || (this.slider.bind("mousedown", e.down), this.pane.bind("mousedown", e.panedown).bind(o + " " + i, e.wheel)), this.$content.bind(h + " " + o + " " + i + " touchmove", e[h])
}, e.prototype.removeEvents = function() {
var e;
e = this.events, this.win.unbind(t, e[t]), this.iOSNativeScrolling || (this.slider.unbind(), this.pane.unbind()), this.$content.unbind(h + " " + o + " " + i + " touchmove", e[h])
}, e.prototype.generate = function() {
var e, t, i, n, o;
return n = (t = this.options).paneClass, o = t.sliderClass, t.contentClass, (i = this.$el.children("." + n)).length || i.children("." + o).length || this.$el.append('<div class="' + n + '"><div class="' + o + '" /></div>'), this.pane = this.$el.children("." + n), this.slider = this.pane.find("." + o), 0 === p && v() ? e = "rtl" != u.dir ? {
right: -14,
paddingRight: +a.getComputedStyle(this.content, null).getPropertyValue("padding-right").replace(/[^0-9.]+/g, "") + 14
} : {
left: -14,
paddingLeft: +a.getComputedStyle(this.content, null).getPropertyValue("padding-left").replace(/[^0-9.]+/g, "") + 14
} : p && (e = "rtl" != u.dir ? {
right: -p
} : {
left: -p
}, this.$el.addClass(this.options.enabledClass)), null != e && this.$content.css(e), this
}, e.prototype.restore = function() {
this.stopped = !1, this.iOSNativeScrolling || this.pane.show(), this.addEvents()
}, e.prototype.reset = function() {
var e, t, i, n, o, a, s, r, l, c, d;
if (!this.iOSNativeScrolling) return this.$el.find("." + this.options.paneClass).length || this.generate().stop(), this.stopped && this.restore(), o = (n = (e = this.content).style).overflowY, m && this.$content.css({
height: this.$content.height()
}), t = e.scrollHeight + p, 0 < (l = parseInt(this.$el.css("max-height"), 10)) && (this.$el.height(""), this.$el.height(e.scrollHeight > l ? l : e.scrollHeight)), s = (a = this.pane.outerHeight(!1)) + (r = parseInt(this.pane.css("top"), 10)) + parseInt(this.pane.css("bottom"), 10), (d = Math.round(s / t * a)) < this.options.sliderMinHeight ? d = this.options.sliderMinHeight : null != this.options.sliderMaxHeight && d > this.options.sliderMaxHeight && (d = this.options.sliderMaxHeight), o === h && n.overflowX !== h && (d += p), this.maxSliderTop = s - d, this.contentHeight = t, this.paneHeight = a, this.paneOuterHeight = s, this.sliderHeight = d, this.paneTop = r, this.slider.height(d), this.events.scroll(), this.pane.show(), this.isActive = !0, e.scrollHeight === e.clientHeight || this.pane.outerHeight(!0) >= e.scrollHeight && o !== h ? (this.pane.hide(), this.isActive = !1) : this.el.clientHeight === e.scrollHeight && o === h ? this.slider.hide() : this.slider.show(), this.pane.css({
opacity: this.options.alwaysVisible ? 1 : "",
visibility: this.options.alwaysVisible ? "visible" : ""
}), "static" !== (i = this.$content.css("position")) && "relative" !== i || ("rtl" != u.dir ? (c = parseInt(this.$content.css("right"), 10)) && this.$content.css({
right: "",
marginRight: c
}) : (left = parseInt(this.$content.css("left"), 10), left && this.$content.css({
left: "",
marginLeft: left
}))), this;
this.contentHeight = this.content.scrollHeight
}, e.prototype.scroll = function() {
if (this.isActive) return this.sliderY = Math.max(0, this.sliderY), this.sliderY = Math.min(this.maxSliderTop, this.sliderY), this.$content.scrollTop(this.maxScrollTop * this.sliderY / this.maxSliderTop), this.iOSNativeScrolling || (this.updateScrollValues(), this.setOnScrollStyles()), this
}, e.prototype.scrollBottom = function(e) {
if (this.isActive) return this.$content.scrollTop(this.contentHeight - this.$content.height() - e).trigger(o), this.stop().restore(), this
}, e.prototype.scrollTop = function(e) {
if (this.isActive) return this.$content.scrollTop(+e).trigger(o), this.stop().restore(), this
}, e.prototype.scrollTo = function(e) {
if (this.isActive) return this.scrollTop(this.$el.find(e).get(0).offsetTop), this
}, e.prototype.stop = function() {
return r && this.scrollRAF && (r(this.scrollRAF), this.scrollRAF = null), this.stopped = !0, this.removeEvents(), this.iOSNativeScrolling || this.pane.hide(), this
}, e.prototype.destroy = function() {
return this.stopped || this.stop(), !this.iOSNativeScrolling && this.pane.length && this.pane.remove(), m && this.$content.height(""), this.$content.removeAttr("tabindex"), this.$el.hasClass(this.options.enabledClass) && (this.$el.removeClass(this.options.enabledClass), "rtl" != u.dir ? this.$content.css({
right: ""
}) : this.$content.css({
left: ""
})), this
}, e.prototype.flash = function() {
var e;
if (!this.iOSNativeScrolling && this.isActive) return this.reset(), this.pane.addClass(this.options.flashedClass), setTimeout((e = this, function() {
e.pane.removeClass(e.options.flashedClass)
}), this.options.flashDelay), this
}, e
}(), n.fn.nanoScroller = function(i) {
return this.each(function() {
var e, t;
if ((t = this.nanoscroller) || (e = n.extend({}, l, i), this.nanoscroller = t = new s(this, e)), i && "object" == typeof i) {
if (n.extend(t.options, i), null != i.scrollBottom) return t.scrollBottom(i.scrollBottom);
if (null != i.scrollTop) return t.scrollTop(i.scrollTop);
if (i.scrollTo) return t.scrollTo(i.scrollTo);
if ("bottom" === i.scroll) return t.scrollBottom(0);
if ("top" === i.scroll) return t.scrollTop(0);
if (i.scroll && i.scroll instanceof n) return t.scrollTo(i.scroll);
if (i.stop) return t.stop();
if (i.destroy) return t.destroy();
if (i.flash) return t.flash()
}
return t.reset()
})
}, n.fn.nanoScroller.Constructor = s
}),
function(r, l) {
l.namespace(l, "common.widget.rssdisplay");
var i = [];
function n(t) {
var o, i, n = this,
a = {},
s = {
feedurl: "",
limit: 5,
newwindow: !1,
externalicon: !1
};
n.destroy = function() {
return o.replaceWith(i), i
}, n.init = function(e) {
Math.floor(999999 * Math.random() + 1);
o = r(e), i = o.clone(!0), o.data("widget", n), r.extend(a, s, o.data() || {}, t), "" === a.feedurl && window.console.error("v18: RSS display widget is missing required feedurl parameter.");
r.ajax({
url: "https://api.www.s81c.com/web-platform/feedtojson/?url=" + encodeURIComponent(a.feedurl) + "&limit=" + a.limit,
dataType: "json",
success: function(e) {
! function(e) {
var t = "",
i = !0 === a.externalicon ? "ibm-external-link" : "ibm-forward-link",
n = !0 === a.newwindow ? ' target="_blank"' : "";
if (!e || !e.feedItems) return window.console.warn("v18: The service was unable to return data for the RSS url: " + a.feedurl, " It returned: ", e);
r.each(e.feedItems, function() {
t += '<li><a class="' + i + '" href="' + this.link + '"' + n + ">" + this.title + "</a></li>"
}), t = '<ul class="ibm-link-list">' + t + "</ul>", o.html(t), l.common.widget.manager.dispatchInitEvent(o[0])
}(e)
}
})
}
}
r.fn.rssdisplay = function(t) {
return this.each(function() {
var e;
(e = new n(t), i.push(e), e).init(this)
})
}
}(jQuery, IBMCore),
function(d, u) {
u.namespace(u, "common.widget.setsameheight");
var i = [];
function n(t) {
var a, s, i = this,
r = {},
n = {
always: !0,
alwaystallest: !1,
excludesmallgrid: !0
},
o = !1,
l = Math.floor(999 * Math.random() + 1);
function c(e) {
var i = 0,
t = a.find(r.items),
n = u.common.util.getCurrentGridSize(),
o = !(!e && !r.always);
(0 === n || s !== n || o) && (s = n, t.each(function() {
d(this).height("auto");
var e = d(this).height(),
t = !1;
d(this).find(".ibm-card__bottom").each(function() {
t = !0, e += d(this).height()
}), i < e && (i = e), 0 === n && t && d(this).height(e + "px")
}), (0 !== n || 0 === n && o && !r.excludesmallgrid) && t.height(i))
}
i.destroy = function() {
return clearInterval(a.data("widget").scrollInterval), a.find(r.items).height("auto"), d(window).off(".setsameheight." + l), a
}, i.init = function(e) {
(a = d(e)).data("widget", i), (r = d.extend({}, n, a.data() || {}, t)).alwaystallest && (r.always = !0, r.excludesmallgrid = !0);
d(window).on("orientationchange.setsameheight." + l, function() {
c(!0)
}), d(window).on("resize.setsameheight." + l, function() {
o = !0
}), i.scrollInterval = setInterval(function() {
o && (o = !1, c())
}, 50), c(!0), a.imagesLoaded(function() {
d.browser.safari ? setTimeout(function() {
c(!0)
}, 200) : setTimeout(function() {
c(!0)
}, 0), u.common.widget.manager.dispatchInitEvent(a[0]), a.addClass("ibm-sameheight-processed")
})
}, i.adjustHeights = c
}
d.fn.setsameheight = function(t) {
return this.each(function() {
var e;
(e = new n(t), i.push(e), e).init(this)
})
}
}(jQuery, IBMCore),
function(r, l) {
l.namespace(l, "common.widget.scrollable");
var i = [];
function n(t) {
var i, n, o, a = this,
s = {
alwaysVisible: !0
};
a.destroy = function() {
return i.nanoScroller({
destroy: !0
}), i.replaceWith(n), n
}, a.init = function(e) {
i = r(e), n = i.clone(!0), i.data("widget", a);
try {
i.css({
height: i.data("height") + "px"
}), o = r.extend({}, s, i.data() || {}, t), i.addClass("nano").wrapInner('<div class="nano-content"></div>'), i.nanoScroller(o), l.common.widget.manager.dispatchInitEvent(i[0])
} catch (e) {
throw e
}
}
}
r.fn.scrollable = function(t) {
return this.each(function() {
var e;
(e = new n(t), i.push(e), e).init(this)
})
}
}(jQuery, IBMCore),
function(i) {
"function" == typeof define && define.amd ? define(["jquery"], i) : "object" == typeof module && module.exports ? module.exports = function(e, t) {
return void 0 === t && (t = "undefined" != typeof window ? require("jquery") : require("jquery")(e)), i(t), t
} : i(jQuery)
}(function(i) {
var e = function() {
if (i && i.fn && i.fn.select2 && i.fn.select2.amd) var e = i.fn.select2.amd;
var t, o, c;
return e && e.requirejs || (e ? o = e : e = {}, function(m) {
var a, s, p, h, f = {},
g = {},
v = {},
b = {},
i = Object.prototype.hasOwnProperty,
n = [].slice,
y = /\.js$/;
function w(e, t) {
return i.call(e, t)
}
function r(e, t) {
var i, n, o, a, s, r, l, c, d, u, m, p = t && t.split("/"),
h = v.map,
f = h && h["*"] || {};
if (e && "." === e.charAt(0))
if (t) {
for (s = (e = e.split("/")).length - 1, v.nodeIdCompat && y.test(e[s]) && (e[s] = e[s].replace(y, "")), e = p.slice(0, p.length - 1).concat(e), d = 0; d < e.length; d += 1)
if ("." === (m = e[d])) e.splice(d, 1), d -= 1;
else if (".." === m) {
if (1 === d && (".." === e[2] || ".." === e[0])) break;
0 < d && (e.splice(d - 1, 2), d -= 2)
}
e = e.join("/")
} else 0 === e.indexOf("./") && (e = e.substring(2));
if ((p || f) && h) {
for (d = (i = e.split("/")).length; 0 < d; d -= 1) {
if (n = i.slice(0, d).join("/"), p)
for (u = p.length; 0 < u; u -= 1)
if ((o = h[p.slice(0, u).join("/")]) && (o = o[n])) {
a = o, r = d;
break
}
if (a) break;
!l && f && f[n] && (l = f[n], c = d)
}!a && l && (a = l, r = c), a && (i.splice(0, r, a), e = i.join("/"))
}
return e
}
function k(t, i) {
return function() {
var e = n.call(arguments, 0);
return "string" != typeof e[0] && 1 === e.length && e.push(null), s.apply(m, e.concat([t, i]))
}
}
function C(t) {
return function(e) {
f[t] = e
}
}
function x(e) {
if (w(g, e)) {
var t = g[e];
delete g[e], b[e] = !0, a.apply(m, t)
}
if (!w(f, e) && !w(b, e)) throw new Error("No " + e);
return f[e]
}
function l(e) {
var t, i = e ? e.indexOf("!") : -1;
return -1 < i && (t = e.substring(0, i), e = e.substring(i + 1, e.length)), [t, e]
}
p = function(e, t) {
var i, n, o = l(e),
a = o[0];
return e = o[1], a && (i = x(a = r(a, t))), a ? e = i && i.normalize ? i.normalize(e, (n = t, function(e) {
return r(e, n)
})) : r(e, t) : (a = (o = l(e = r(e, t)))[0], e = o[1], a && (i = x(a))), {
f: a ? a + "!" + e : e,
n: e,
pr: a,
p: i
}
}, h = {
require: function(e) {
return k(e)
},
exports: function(e) {
var t = f[e];
return void 0 !== t ? t : f[e] = {}
},
module: function(e) {
return {
id: e,
uri: "",
exports: f[e],
config: (t = e, function() {
return v && v.config && v.config[t] || {}
})
};
var t
}
}, a = function(e, t, i, n) {
var o, a, s, r, l, c, d = [],
u = typeof i;
if (n = n || e, "undefined" === u || "function" === u) {
for (t = !t.length && i.length ? ["require", "exports", "module"] : t, l = 0; l < t.length; l += 1)
if ("require" === (a = (r = p(t[l], n)).f)) d[l] = h.require(e);
else if ("exports" === a) d[l] = h.exports(e), c = !0;
else if ("module" === a) o = d[l] = h.module(e);
else if (w(f, a) || w(g, a) || w(b, a)) d[l] = x(a);
else {
if (!r.p) throw new Error(e + " missing " + a);
r.p.load(r.n, k(n, !0), C(a), {}), d[l] = f[a]
}
s = i ? i.apply(f[e], d) : void 0, e && (o && o.exports !== m && o.exports !== f[e] ? f[e] = o.exports : s === m && c || (f[e] = s))
} else e && (f[e] = i)
}, t = o = s = function(e, t, i, n, o) {
if ("string" == typeof e) return h[e] ? h[e](t) : x(p(e, t).f);
if (!e.splice) {
if ((v = e).deps && s(v.deps, v.callback), !t) return;
t.splice ? (e = t, t = i, i = null) : e = m
}
return t = t || function() {}, "function" == typeof i && (i = n, n = o), n ? a(m, e, t, i) : setTimeout(function() {
a(m, e, t, i)
}, 4), s
}, s.config = function(e) {
return s(e)
}, t._defined = f, (c = function(e, t, i) {
if ("string" != typeof e) throw new Error("See almond README: incorrect module build, no module name");
t.splice || (i = t, t = []), w(f, e) || w(g, e) || (g[e] = [e, t, i])
}).amd = {
jQuery: !0
}
}(), e.requirejs = t, e.require = o, e.define = c), e.define("almond", function() {}), e.define("jquery", [], function() {
var e = i || $;
return null == e && console && console.error && console.error("Select2: An instance of jQuery or a jQuery-compatible library was not found. Make sure that you are including jQuery before Select2 on your web page."), e
}), e.define("select2/utils", ["jquery"], function(a) {
var e = {};
function d(e) {
var t = e.prototype,
i = [];
for (var n in t) {
"function" == typeof t[n] && ("constructor" !== n && i.push(n))
}
return i
}
e.Extend = function(e, t) {
var i = {}.hasOwnProperty;
function n() {
this.constructor = e
}
for (var o in t) i.call(t, o) && (e[o] = t[o]);
return n.prototype = t.prototype, e.prototype = new n, e.__super__ = t.prototype, e
}, e.Decorate = function(n, o) {
var e = d(o),
t = d(n);
function a() {
var e = Array.prototype.unshift,
t = o.prototype.constructor.length,
i = n.prototype.constructor;
0 < t && (e.call(arguments, n.prototype.constructor), i = o.prototype.constructor), i.apply(this, arguments)
}
o.displayName = n.displayName, a.prototype = new function() {
this.constructor = a
};
for (var i = 0; i < t.length; i++) {
var s = t[i];
a.prototype[s] = n.prototype[s]
}
for (var r = function(e) {
var t = function() {};
e in a.prototype && (t = a.prototype[e]);
var i = o.prototype[e];
return function() {
return Array.prototype.unshift.call(arguments, t), i.apply(this, arguments)
}
}, l = 0; l < e.length; l++) {
var c = e[l];
a.prototype[c] = r(c)
}
return a
};
var t = function() {
this.listeners = {}
};
return t.prototype.on = function(e, t) {
this.listeners = this.listeners || {}, e in this.listeners ? this.listeners[e].push(t) : this.listeners[e] = [t]
}, t.prototype.trigger = function(e) {
var t = Array.prototype.slice,
i = t.call(arguments, 1);
this.listeners = this.listeners || {}, null == i && (i = []), 0 === i.length && i.push({}), (i[0]._type = e) in this.listeners && this.invoke(this.listeners[e], t.call(arguments, 1)), "*" in this.listeners && this.invoke(this.listeners["*"], arguments)
}, t.prototype.invoke = function(e, t) {
for (var i = 0, n = e.length; i < n; i++) e[i].apply(this, t)
}, e.Observable = t, e.generateChars = function(e) {
for (var t = "", i = 0; i < e; i++) {
t += Math.floor(36 * Math.random()).toString(36)
}
return t
}, e.bind = function(e, t) {
return function() {
e.apply(t, arguments)
}
}, e._convertData = function(e) {
for (var t in e) {
var i = t.split("-"),
n = e;
if (1 !== i.length) {
for (var o = 0; o < i.length; o++) {
var a = i[o];
(a = a.substring(0, 1).toLowerCase() + a.substring(1)) in n || (n[a] = {}), o == i.length - 1 && (n[a] = e[t]), n = n[a]
}
delete e[t]
}
}
return e
}, e.hasScroll = function(e, t) {
var i = a(t),
n = t.style.overflowX,
o = t.style.overflowY;
return (n !== o || "hidden" !== o && "visible" !== o) && ("scroll" === n || "scroll" === o || (i.innerHeight() < t.scrollHeight || i.innerWidth() < t.scrollWidth))
}, e.escapeMarkup = function(e) {
var t = {
"\\": "\",
"&": "&",
"<": "<",
">": ">",
'"': """,
"'": "'",
"/": "/"
};
return "string" != typeof e ? e : String(e).replace(/[&<>"'\/\\]/g, function(e) {
return t[e]
})
}, e.appendMany = function(e, t) {
if ("1.7" === a.fn.jquery.substr(0, 3)) {
var i = a();
a.map(t, function(e) {
i = i.add(e)
}), t = i
}
e.append(t)
}, e
}), e.define("select2/results", ["jquery", "./utils"], function(m, e) {
function n(e, t, i) {
this.$element = e, this.data = i, this.options = t, n.__super__.constructor.call(this)
}
return e.Extend(n, e.Observable), n.prototype.render = function() {
var e = m('<ul class="select2-results__options" role="tree"></ul>');
return this.options.get("multiple") && e.attr("aria-multiselectable", "true"), this.$results = e
}, n.prototype.clear = function() {
this.$results.empty()
}, n.prototype.displayMessage = function(e) {
var t = this.options.get("escapeMarkup");
this.clear(), this.hideLoading();
var i = m('<li role="treeitem" aria-live="assertive" class="select2-results__option"></li>'),
n = this.options.get("translations").get(e.message);
i.append(t(n(e.args))), i[0].className += " select2-results__message", this.$results.append(i)
}, n.prototype.hideMessages = function() {
this.$results.find(".select2-results__message").remove()
}, n.prototype.append = function(e) {
this.hideLoading();
var t = [];
if (null != e.results && 0 !== e.results.length) {
e.results = this.sort(e.results);
for (var i = 0; i < e.results.length; i++) {
var n = e.results[i],
o = this.option(n);
t.push(o)
}
this.$results.append(t)
} else 0 === this.$results.children().length && this.trigger("results:message", {
message: "noResults"
})
}, n.prototype.position = function(e, t) {
t.find(".select2-results").append(e)
}, n.prototype.sort = function(e) {
return this.options.get("sorter")(e)
}, n.prototype.highlightFirstItem = function() {
var e = this.$results.find(".select2-results__option[aria-selected]"),
t = e.filter("[aria-selected=true]");
0 < t.length ? t.first().trigger("mouseenter") : e.first().trigger("mouseenter"), this.ensureHighlightVisible()
}, n.prototype.setClasses = function() {
var t = this;
this.data.current(function(e) {
var n = m.map(e, function(e) {
return e.id.toString()
});
t.$results.find(".select2-results__option[aria-selected]").each(function() {
var e = m(this),
t = m.data(this, "data"),
i = "" + t.id;
null != t.element && t.element.selected || null == t.element && -1 < m.inArray(i, n) ? e.attr("aria-selected", "true") : e.attr("aria-selected", "false")
})
})
}, n.prototype.showLoading = function(e) {
this.hideLoading();
var t = {
disabled: !0,
loading: !0,
text: this.options.get("translations").get("searching")(e)
},
i = this.option(t);
i.className += " loading-results", this.$results.prepend(i)
}, n.prototype.hideLoading = function() {
this.$results.find(".loading-results").remove()
}, n.prototype.option = function(e) {
var t = document.createElement("li");
t.className = "select2-results__option";
var i = {
role: "treeitem",
"aria-selected": "false"
};
for (var n in e.disabled && (delete i["aria-selected"], i["aria-disabled"] = "true"), null == e.id && delete i["aria-selected"], null != e._resultId && (t.id = e._resultId), e.title && (t.title = e.title), e.children && (i.role = "group", i["aria-label"] = e.text, delete i["aria-selected"]), i) {
var o = i[n];
t.setAttribute(n, o)
}
if (e.children) {
var a = m(t),
s = document.createElement("strong");
s.className = "select2-results__group";
m(s);
this.template(e, s);
for (var r = [], l = 0; l < e.children.length; l++) {
var c = e.children[l],
d = this.option(c);
r.push(d)
}
var u = m("<ul></ul>", {
class: "select2-results__options select2-results__options--nested"
});
u.append(r), a.append(s), a.append(u)
} else this.template(e, t);
return m.data(t, "data", e), t
}, n.prototype.bind = function(t, e) {
var l = this,
i = t.id + "-results";
this.$results.attr("id", i), t.on("results:all", function(e) {
l.clear(), l.append(e.data), t.isOpen() && (l.setClasses(), l.highlightFirstItem())
}), t.on("results:append", function(e) {
l.append(e.data), t.isOpen() && l.setClasses()
}), t.on("query", function(e) {
l.hideMessages(), l.showLoading(e)
}), t.on("select", function() {
t.isOpen() && (l.setClasses(), l.highlightFirstItem())
}), t.on("unselect", function() {
t.isOpen() && (l.setClasses(), l.highlightFirstItem())
}), t.on("open", function() {
l.$results.attr("aria-expanded", "true"), l.$results.attr("aria-hidden", "false"), l.setClasses(), l.ensureHighlightVisible()
}), t.on("close", function() {
l.$results.attr("aria-expanded", "false"), l.$results.attr("aria-hidden", "true"), l.$results.removeAttr("aria-activedescendant")
}), t.on("results:toggle", function() {
var e = l.getHighlightedResults();
0 !== e.length && e.trigger("mouseup")
}), t.on("results:select", function() {
var e = l.getHighlightedResults();
if (0 !== e.length) {
var t = e.data("data");
"true" == e.attr("aria-selected") ? l.trigger("close", {}) : l.trigger("select", {
data: t
})
}
}), t.on("results:previous", function() {
var e = l.getHighlightedResults(),
t = l.$results.find("[aria-selected]"),
i = t.index(e);
if (0 !== i) {
var n = i - 1;
0 === e.length && (n = 0);
var o = t.eq(n);
o.trigger("mouseenter");
var a = l.$results.offset().top,
s = o.offset().top,
r = l.$results.scrollTop() + (s - a);
0 === n ? l.$results.scrollTop(0) : s - a < 0 && l.$results.scrollTop(r)
}
}), t.on("results:next", function() {
var e = l.getHighlightedResults(),
t = l.$results.find("[aria-selected]"),
i = t.index(e) + 1;
if (!(i >= t.length)) {
var n = t.eq(i);
n.trigger("mouseenter");
var o = l.$results.offset().top + l.$results.outerHeight(!1),
a = n.offset().top + n.outerHeight(!1),
s = l.$results.scrollTop() + a - o;
0 === i ? l.$results.scrollTop(0) : o < a && l.$results.scrollTop(s)
}
}), t.on("results:focus", function(e) {
e.element.addClass("select2-results__option--highlighted")
}), t.on("results:message", function(e) {
l.displayMessage(e)
}), m.fn.mousewheel && this.$results.on("mousewheel", function(e) {
var t = l.$results.scrollTop(),
i = l.$results.get(0).scrollHeight - t + e.deltaY,
n = 0 < e.deltaY && t - e.deltaY <= 0,
o = e.deltaY < 0 && i <= l.$results.height();
n ? (l.$results.scrollTop(0), e.preventDefault(), e.stopPropagation()) : o && (l.$results.scrollTop(l.$results.get(0).scrollHeight - l.$results.height()), e.preventDefault(), e.stopPropagation())
}), this.$results.on("mouseup", ".select2-results__option[aria-selected]", function(e) {
var t = m(this),
i = t.data("data");
"true" !== t.attr("aria-selected") ? l.trigger("select", {
originalEvent: e,
data: i
}) : l.options.get("multiple") ? l.trigger("unselect", {
originalEvent: e,
data: i
}) : l.trigger("close", {})
}), this.$results.on("mouseenter", ".select2-results__option[aria-selected]", function(e) {
var t = m(this).data("data");
l.getHighlightedResults().removeClass("select2-results__option--highlighted"), l.trigger("results:focus", {
data: t,
element: m(this)
})
})
}, n.prototype.getHighlightedResults = function() {
return this.$results.find(".select2-results__option--highlighted")
}, n.prototype.destroy = function() {
this.$results.remove()
}, n.prototype.ensureHighlightVisible = function() {
var e = this.getHighlightedResults();
if (0 !== e.length) {
var t = this.$results.find("[aria-selected]").index(e),
i = this.$results.offset().top,
n = e.offset().top,
o = this.$results.scrollTop() + (n - i),
a = n - i;
o -= 2 * e.outerHeight(!1), t <= 2 ? this.$results.scrollTop(0) : (a > this.$results.outerHeight() || a < 0) && this.$results.scrollTop(o)
}
}, n.prototype.template = function(e, t) {
var i = this.options.get("templateResult"),
n = this.options.get("escapeMarkup"),
o = i(e, t);
null == o ? t.style.display = "none" : "string" == typeof o ? t.innerHTML = n(o) : m(t).append(o)
}, n
}), e.define("select2/keys", [], function() {
return {
BACKSPACE: 8,
TAB: 9,
ENTER: 13,
SHIFT: 16,
CTRL: 17,
ALT: 18,
ESC: 27,
SPACE: 32,
PAGE_UP: 33,
PAGE_DOWN: 34,
END: 35,
HOME: 36,
LEFT: 37,
UP: 38,
RIGHT: 39,
DOWN: 40,
DELETE: 46
}
}), e.define("select2/selection/base", ["jquery", "../utils", "../keys"], function(i, e, o) {
function n(e, t) {
this.$element = e, this.options = t, n.__super__.constructor.call(this)
}
return e.Extend(n, e.Observable), n.prototype.render = function() {
var e = i('<span class="select2-selection" role="combobox" aria-haspopup="true" aria-expanded="false"></span>');
return this._tabindex = 0, null != this.$element.data("old-tabindex") ? this._tabindex = this.$element.data("old-tabindex") : null != this.$element.attr("tabindex") && (this._tabindex = this.$element.attr("tabindex")), e.attr("title", this.$element.attr("title")), e.attr("tabindex", this._tabindex), this.$selection = e
}, n.prototype.bind = function(e, t) {
var i = this,
n = (e.id, e.id + "-results");
this.container = e, this.$selection.on("focus", function(e) {
i.trigger("focus", e)
}), this.$selection.on("blur", function(e) {
i._handleBlur(e)
}), this.$selection.on("keydown", function(e) {
i.trigger("keypress", e), e.which === o.SPACE && e.preventDefault()
}), e.on("results:focus", function(e) {
i.$selection.attr("aria-activedescendant", e.data._resultId)
}), e.on("selection:update", function(e) {
i.update(e.data)
}), e.on("open", function() {
i.$selection.attr("aria-expanded", "true"), i.$selection.attr("aria-owns", n), i._attachCloseHandler(e)
}), e.on("close", function() {
i.$selection.attr("aria-expanded", "false"), i.$selection.removeAttr("aria-activedescendant"), i.$selection.removeAttr("aria-owns"), i.$selection.focus(), i._detachCloseHandler(e)
}), e.on("enable", function() {
i.$selection.attr("tabindex", i._tabindex)
}), e.on("disable", function() {
i.$selection.attr("tabindex", "-1")
})
}, n.prototype._handleBlur = function(e) {
var t = this;
window.setTimeout(function() {
document.activeElement == t.$selection[0] || i.contains(t.$selection[0], document.activeElement) || t.trigger("blur", e)
}, 1)
}, n.prototype._attachCloseHandler = function(e) {
i(document.body).on("mousedown.select2." + e.id, function(e) {
var t = i(e.target).closest(".select2");
i(".select2.select2-container--open").each(function() {
var e = i(this);
this != t[0] && e.data("element").select2("close")
})
})
}, n.prototype._detachCloseHandler = function(e) {
i(document.body).off("mousedown.select2." + e.id)
}, n.prototype.position = function(e, t) {
t.find(".selection").append(e)
}, n.prototype.destroy = function() {
this._detachCloseHandler(this.container)
}, n.prototype.update = function(e) {
throw new Error("The `update` method must be defined in child classes.")
}, n
}), e.define("select2/selection/single", ["jquery", "./base", "../utils", "../keys"], function(e, t, i, n) {
function o() {
o.__super__.constructor.apply(this, arguments)
}
return i.Extend(o, t), o.prototype.render = function() {
var e = o.__super__.render.call(this);
return e.addClass("select2-selection--single"), e.html('<span class="select2-selection__rendered"></span><span class="select2-selection__arrow" role="presentation"><b role="presentation"></b></span>'), e
}, o.prototype.bind = function(t, e) {
var i = this;
o.__super__.bind.apply(this, arguments);
var n = t.id + "-container";
this.$selection.find(".select2-selection__rendered").attr("id", n), this.$selection.attr("aria-labelledby", n), this.$selection.on("mousedown", function(e) {
1 === e.which && i.trigger("toggle", {
originalEvent: e
})
}), this.$selection.on("focus", function(e) {}), this.$selection.on("blur", function(e) {}), t.on("focus", function(e) {
t.isOpen() || i.$selection.focus()
}), t.on("selection:update", function(e) {
i.update(e.data)
})
}, o.prototype.clear = function() {
this.$selection.find(".select2-selection__rendered").empty()
}, o.prototype.display = function(e, t) {
var i = this.options.get("templateSelection");
return this.options.get("escapeMarkup")(i(e, t))
}, o.prototype.selectionContainer = function() {
return e("<span></span>")
}, o.prototype.update = function(e) {
if (0 !== e.length) {
var t = e[0],
i = this.$selection.find(".select2-selection__rendered"),
n = this.display(t, i);
i.empty().append(n), i.prop("title", t.title || t.text)
} else this.clear()
}, o
}), e.define("select2/selection/multiple", ["jquery", "./base", "../utils"], function(n, e, r) {
function o(e, t) {
o.__super__.constructor.apply(this, arguments)
}
return r.Extend(o, e), o.prototype.render = function() {
var e = o.__super__.render.call(this);
return e.addClass("select2-selection--multiple"), e.html('<ul class="select2-selection__rendered"></ul>'), e
}, o.prototype.bind = function(e, t) {
var i = this;
o.__super__.bind.apply(this, arguments), this.$selection.on("click", function(e) {
i.trigger("toggle", {
originalEvent: e
})
}), this.$selection.on("click", ".select2-selection__choice__remove", function(e) {
if (!i.options.get("disabled")) {
var t = n(this).parent().data("data");
i.trigger("unselect", {
originalEvent: e,
data: t
})
}
})
}, o.prototype.clear = function() {
this.$selection.find(".select2-selection__rendered").empty()
}, o.prototype.display = function(e, t) {
var i = this.options.get("templateSelection");
return this.options.get("escapeMarkup")(i(e, t))
}, o.prototype.selectionContainer = function() {
return n('<li class="select2-selection__choice"><span class="select2-selection__choice__remove" role="presentation">×</span></li>')
}, o.prototype.update = function(e) {
if (this.clear(), 0 !== e.length) {
for (var t = [], i = 0; i < e.length; i++) {
var n = e[i],
o = this.selectionContainer(),
a = this.display(n, o);
o.append(a), o.prop("title", n.title || n.text), o.data("data", n), t.push(o)
}
var s = this.$selection.find(".select2-selection__rendered");
r.appendMany(s, t)
}
}, o
}), e.define("select2/selection/placeholder", ["../utils"], function(e) {
function t(e, t, i) {
this.placeholder = this.normalizePlaceholder(i.get("placeholder")), e.call(this, t, i)
}
return t.prototype.normalizePlaceholder = function(e, t) {
return "string" == typeof t && (t = {
id: "",
text: t
}), t
}, t.prototype.createPlaceholder = function(e, t) {
var i = this.selectionContainer();
return i.html(this.display(t)), i.addClass("select2-selection__placeholder").removeClass("select2-selection__choice"), i
}, t.prototype.update = function(e, t) {
var i = 1 == t.length && t[0].id != this.placeholder.id;
if (1 < t.length || i) return e.call(this, t);
this.clear();
var n = this.createPlaceholder(this.placeholder);
this.$selection.find(".select2-selection__rendered").append(n)
}, t
}), e.define("select2/selection/allowClear", ["jquery", "../keys"], function(n, o) {
function e() {}
return e.prototype.bind = function(e, t, i) {
var n = this;
e.call(this, t, i), null == this.placeholder && this.options.get("debug") && window.console && console.error && console.error("Select2: The `allowClear` option should be used in combination with the `placeholder` option."), this.$selection.on("mousedown", ".select2-selection__clear", function(e) {
n._handleClear(e)
}), t.on("keypress", function(e) {
n._handleKeyboardClear(e, t)
})
}, e.prototype._handleClear = function(e, t) {
if (!this.options.get("disabled")) {
var i = this.$selection.find(".select2-selection__clear");
if (0 !== i.length) {
t.stopPropagation();
for (var n = i.data("data"), o = 0; o < n.length; o++) {
var a = {
data: n[o]
};
if (this.trigger("unselect", a), a.prevented) return
}
this.$element.val(this.placeholder.id).trigger("change"), this.trigger("toggle", {})
}
}
}, e.prototype._handleKeyboardClear = function(e, t, i) {
i.isOpen() || t.which != o.DELETE && t.which != o.BACKSPACE || this._handleClear(t)
}, e.prototype.update = function(e, t) {
if (e.call(this, t), !(0 < this.$selection.find(".select2-selection__placeholder").length || 0 === t.length)) {
var i = n('<span class="select2-selection__clear">×</span>');
i.data("data", t), this.$selection.find(".select2-selection__rendered").prepend(i)
}
}, e
}), e.define("select2/selection/search", ["jquery", "../utils", "../keys"], function(n, e, s) {
function t(e, t, i) {
e.call(this, t, i)
}
return t.prototype.render = function(e) {
var t = n('<li class="select2-search select2-search--inline"><input class="select2-search__field" type="search" tabindex="-1" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" role="textbox" aria-autocomplete="list" /></li>');
this.$searchContainer = t, this.$search = t.find("input");
var i = e.call(this);
return this._transferTabIndex(), i
}, t.prototype.bind = function(e, t, i) {
var n = this;
e.call(this, t, i), t.on("open", function() {
n.$search.trigger("focus")
}), t.on("close", function() {
n.$search.val(""), n.$search.removeAttr("aria-activedescendant"), n.$search.trigger("focus")
}), t.on("enable", function() {
n.$search.prop("disabled", !1), n._transferTabIndex()
}), t.on("disable", function() {
n.$search.prop("disabled", !0)
}), t.on("focus", function(e) {
n.$search.trigger("focus")
}), t.on("results:focus", function(e) {
n.$search.attr("aria-activedescendant", e.id)
}), this.$selection.on("focusin", ".select2-search--inline", function(e) {
n.trigger("focus", e)
}), this.$selection.on("focusout", ".select2-search--inline", function(e) {
n._handleBlur(e)
}), this.$selection.on("keydown", ".select2-search--inline", function(e) {
if (e.stopPropagation(), n.trigger("keypress", e), n._keyUpPrevented = e.isDefaultPrevented(), e.which === s.BACKSPACE && "" === n.$search.val()) {
var t = n.$searchContainer.prev(".select2-selection__choice");
if (0 < t.length) {
var i = t.data("data");
n.searchRemoveChoice(i), e.preventDefault()
}
}
});
var o = document.documentMode,
a = o && o <= 11;
this.$selection.on("input.searchcheck", ".select2-search--inline", function(e) {
a ? n.$selection.off("input.search input.searchcheck") : n.$selection.off("keyup.search")
}), this.$selection.on("keyup.search input.search", ".select2-search--inline", function(e) {
if (a && "input" === e.type) n.$selection.off("input.search input.searchcheck");
else {
var t = e.which;
t != s.SHIFT && t != s.CTRL && t != s.ALT && t != s.TAB && n.handleSearch(e)
}
})
}, t.prototype._transferTabIndex = function(e) {
this.$search.attr("tabindex", this.$selection.attr("tabindex")), this.$selection.attr("tabindex", "-1")
}, t.prototype.createPlaceholder = function(e, t) {
this.$search.attr("placeholder", t.text)
}, t.prototype.update = function(e, t) {
var i = this.$search[0] == document.activeElement;
this.$search.attr("placeholder", ""), e.call(this, t), this.$selection.find(".select2-selection__rendered").append(this.$searchContainer), this.resizeSearch(), i && this.$search.focus()
}, t.prototype.handleSearch = function() {
if (this.resizeSearch(), !this._keyUpPrevented) {
var e = this.$search.val();
this.trigger("query", {
term: e
})
}
this._keyUpPrevented = !1
}, t.prototype.searchRemoveChoice = function(e, t) {
this.trigger("unselect", {
data: t
}), this.$search.val(t.text), this.handleSearch()
}, t.prototype.resizeSearch = function() {
this.$search.css("width", "25px");
var e = "";
"" !== this.$search.attr("placeholder") ? e = this.$selection.find(".select2-selection__rendered").innerWidth() : e = .75 * (this.$search.val().length + 1) + "em";
this.$search.css("width", e)
}, t
}), e.define("select2/selection/eventRelay", ["jquery"], function(s) {
function e() {}
return e.prototype.bind = function(e, t, i) {
var n = this,
o = ["open", "opening", "close", "closing", "select", "selecting", "unselect", "unselecting"],
a = ["opening", "closing", "selecting", "unselecting"];
e.call(this, t, i), t.on("*", function(e, t) {
if (-1 !== s.inArray(e, o)) {
t = t || {};
var i = s.Event("select2:" + e, {
params: t
});
n.$element.trigger(i), -1 !== s.inArray(e, a) && (t.prevented = i.isDefaultPrevented())
}
})
}, e
}), e.define("select2/translation", ["jquery", "require"], function(t, i) {
function n(e) {
this.dict = e || {}
}
return n.prototype.all = function() {
return this.dict
}, n.prototype.get = function(e) {
return this.dict[e]
}, n.prototype.extend = function(e) {
this.dict = t.extend({}, e.all(), this.dict)
}, n._cache = {}, n.loadPath = function(e) {
if (!(e in n._cache)) {
var t = i(e);
n._cache[e] = t
}
return new n(n._cache[e])
}, n
}), e.define("select2/diacritics", [], function() {
return {
"â’¶": "A",
"A": "A",
"À": "A",
"Ã": "A",
"Â": "A",
"Ầ": "A",
"Ấ": "A",
"Ẫ": "A",
"Ẩ": "A",
"Ã": "A",
"Ä€": "A",
"Ä‚": "A",
"Ằ": "A",
"Ắ": "A",
"Ẵ": "A",
"Ẳ": "A",
"Ȧ": "A",
"Ç ": "A",
"Ä": "A",
"Çž": "A",
"Ả": "A",
"Ã…": "A",
"Ǻ": "A",
"Ç": "A",
"È€": "A",
"È‚": "A",
"Ạ": "A",
"Ậ": "A",
"Ặ": "A",
"Ḁ": "A",
"Ä„": "A",
"Ⱥ": "A",
"Ɐ": "A",
"Ꜳ": "AA",
"Æ": "AE",
"Ǽ": "AE",
"Ç¢": "AE",
"Ꜵ": "AO",
"Ꜷ": "AU",
"Ꜹ": "AV",
"Ꜻ": "AV",
"Ꜽ": "AY",
"â’·": "B",
"ï¼¢": "B",
"Ḃ": "B",
"Ḅ": "B",
"Ḇ": "B",
"Ƀ": "B",
"Æ‚": "B",
"Æ": "B",
"â’¸": "C",
"ï¼£": "C",
"Ć": "C",
"Ĉ": "C",
"ÄŠ": "C",
"Č": "C",
"Ç": "C",
"Ḉ": "C",
"Ƈ": "C",
"È»": "C",
"Ꜿ": "C",
"â’¹": "D",
"D": "D",
"Ḋ": "D",
"ÄŽ": "D",
"Ḍ": "D",
"á¸": "D",
"Ḓ": "D",
"Ḏ": "D",
"Ä": "D",
"Æ‹": "D",
"ÆŠ": "D",
"Ɖ": "D",
"ê¹": "D",
"DZ": "DZ",
"Ç„": "DZ",
"Dz": "Dz",
"Ç…": "Dz",
"â’º": "E",
"ï¼¥": "E",
"È": "E",
"É": "E",
"Ê": "E",
"Ề": "E",
"Ế": "E",
"Ễ": "E",
"Ể": "E",
"Ẽ": "E",
"Ä’": "E",
"Ḕ": "E",
"Ḗ": "E",
"Ä”": "E",
"Ä–": "E",
"Ë": "E",
"Ẻ": "E",
"Äš": "E",
"È„": "E",
"Ȇ": "E",
"Ẹ": "E",
"Ệ": "E",
"Ȩ": "E",
"Ḝ": "E",
"Ę": "E",
"Ḙ": "E",
"Ḛ": "E",
"Æ": "E",
"ÆŽ": "E",
"â’»": "F",
"F": "F",
"Ḟ": "F",
"Æ‘": "F",
"ê»": "F",
"â’¼": "G",
"G": "G",
"Ç´": "G",
"Ĝ": "G",
"Ḡ": "G",
"Äž": "G",
"Ä ": "G",
"Ǧ": "G",
"Ä¢": "G",
"Ǥ": "G",
"Æ“": "G",
"êž ": "G",
"ê½": "G",
"ê¾": "G",
"â’½": "H",
"H": "H",
"Ĥ": "H",
"Ḣ": "H",
"Ḧ": "H",
"Èž": "H",
"Ḥ": "H",
"Ḩ": "H",
"Ḫ": "H",
"Ħ": "H",
"Ⱨ": "H",
"â±µ": "H",
"êž": "H",
"â’¾": "I",
"I": "I",
"Ì": "I",
"Ã": "I",
"ÃŽ": "I",
"Ĩ": "I",
"Ī": "I",
"Ĭ": "I",
"Ä°": "I",
"Ã": "I",
"Ḯ": "I",
"Ỉ": "I",
"Ç": "I",
"Ȉ": "I",
"ÈŠ": "I",
"Ị": "I",
"Ä®": "I",
"Ḭ": "I",
"Æ—": "I",
"â’¿": "J",
"J": "J",
"Ä´": "J",
"Ɉ": "J",
"â“€": "K",
"K": "K",
"Ḱ": "K",
"Ǩ": "K",
"Ḳ": "K",
"Ķ": "K",
"Ḵ": "K",
"Ƙ": "K",
"Ⱪ": "K",
"ê€": "K",
"ê‚": "K",
"ê„": "K",
"Ꞣ": "K",
"â“": "L",
"L": "L",
"Ä¿": "L",
"Ĺ": "L",
"Ľ": "L",
"Ḷ": "L",
"Ḹ": "L",
"Ä»": "L",
"Ḽ": "L",
"Ḻ": "L",
"Å": "L",
"Ƚ": "L",
"â±¢": "L",
"â± ": "L",
"êˆ": "L",
"ê†": "L",
"Ꞁ": "L",
"LJ": "LJ",
"Lj": "Lj",
"â“‚": "M",
"ï¼": "M",
"Ḿ": "M",
"á¹€": "M",
"Ṃ": "M",
"â±®": "M",
"Ɯ": "M",
"Ⓝ": "N",
"ï¼®": "N",
"Ǹ": "N",
"Ń": "N",
"Ñ": "N",
"Ṅ": "N",
"Ň": "N",
"Ṇ": "N",
"Å…": "N",
"Ṋ": "N",
"Ṉ": "N",
"È ": "N",
"Æ": "N",
"êž": "N",
"Ꞥ": "N",
"ÇŠ": "NJ",
"Ç‹": "Nj",
"â“„": "O",
"O": "O",
"Ã’": "O",
"Ó": "O",
"Ô": "O",
"á»’": "O",
"á»": "O",
"á»–": "O",
"á»”": "O",
"Õ": "O",
"Ṍ": "O",
"Ȭ": "O",
"Ṏ": "O",
"Ō": "O",
"á¹": "O",
"á¹’": "O",
"ÅŽ": "O",
"È®": "O",
"È°": "O",
"Ö": "O",
"Ȫ": "O",
"Ỏ": "O",
"Å": "O",
"Ç‘": "O",
"Ȍ": "O",
"ÈŽ": "O",
"Æ ": "O",
"Ờ": "O",
"Ớ": "O",
"á» ": "O",
"Ở": "O",
"Ợ": "O",
"Ọ": "O",
"Ộ": "O",
"Ǫ": "O",
"Ǭ": "O",
"Ø": "O",
"Ǿ": "O",
"Ɔ": "O",
"ÆŸ": "O",
"êŠ": "O",
"êŒ": "O",
"Æ¢": "OI",
"êŽ": "OO",
"È¢": "OU",
"â“…": "P",
"ï¼°": "P",
"á¹”": "P",
"á¹–": "P",
"Ƥ": "P",
"â±£": "P",
"ê": "P",
"ê’": "P",
"ê”": "P",
"Ⓠ": "Q",
"ï¼±": "Q",
"ê–": "Q",
"ê˜": "Q",
"ÉŠ": "Q",
"Ⓡ": "R",
"ï¼²": "R",
"Å”": "R",
"Ṙ": "R",
"Ř": "R",
"È": "R",
"È’": "R",
"Ṛ": "R",
"Ṝ": "R",
"Å–": "R",
"Ṟ": "R",
"Ɍ": "R",
"Ɽ": "R",
"êš": "R",
"Ꞧ": "R",
"êž‚": "R",
"Ⓢ": "S",
"ï¼³": "S",
"ẞ": "S",
"Åš": "S",
"Ṥ": "S",
"Ŝ": "S",
"á¹ ": "S",
"Å ": "S",
"Ṧ": "S",
"á¹¢": "S",
"Ṩ": "S",
"Ș": "S",
"Åž": "S",
"â±¾": "S",
"Ꞩ": "S",
"êž„": "S",
"Ⓣ": "T",
"ï¼´": "T",
"Ṫ": "T",
"Ť": "T",
"Ṭ": "T",
"Èš": "T",
"Å¢": "T",
"á¹°": "T",
"á¹®": "T",
"Ŧ": "T",
"Ƭ": "T",
"Æ®": "T",
"Ⱦ": "T",
"Ꞇ": "T",
"Ꜩ": "TZ",
"â“Š": "U",
"ï¼µ": "U",
"Ù": "U",
"Ú": "U",
"Û": "U",
"Ũ": "U",
"Ṹ": "U",
"Ū": "U",
"Ṻ": "U",
"Ŭ": "U",
"Ü": "U",
"Ç›": "U",
"Ç—": "U",
"Ç•": "U",
"Ç™": "U",
"Ủ": "U",
"Å®": "U",
"Å°": "U",
"Ç“": "U",
"È”": "U",
"È–": "U",
"Ư": "U",
"Ừ": "U",
"Ứ": "U",
"á»®": "U",
"Ử": "U",
"á»°": "U",
"Ụ": "U",
"á¹²": "U",
"Ų": "U",
"Ṷ": "U",
"á¹´": "U",
"É„": "U",
"â“‹": "V",
"V": "V",
"á¹¼": "V",
"á¹¾": "V",
"Ʋ": "V",
"êž": "V",
"É…": "V",
"ê ": "VY",
"Ⓦ": "W",
"ï¼·": "W",
"Ẁ": "W",
"Ẃ": "W",
"Å´": "W",
"Ẇ": "W",
"Ẅ": "W",
"Ẉ": "W",
"â±²": "W",
"â“": "X",
"X": "X",
"Ẋ": "X",
"Ẍ": "X",
"â“Ž": "Y",
"ï¼¹": "Y",
"Ỳ": "Y",
"Ã": "Y",
"Ŷ": "Y",
"Ỹ": "Y",
"Ȳ": "Y",
"Ẏ": "Y",
"Ÿ": "Y",
"Ỷ": "Y",
"á»´": "Y",
"Ƴ": "Y",
"ÉŽ": "Y",
"Ỿ": "Y",
"â“": "Z",
"Z": "Z",
"Ź": "Z",
"áº": "Z",
"Å»": "Z",
"Ž": "Z",
"Ẓ": "Z",
"Ẕ": "Z",
"Ƶ": "Z",
"Ȥ": "Z",
"Ɀ": "Z",
"Ⱬ": "Z",
"ê¢": "Z",
"â“": "a",
"ï½": "a",
"ẚ": "a",
"Ã ": "a",
"á": "a",
"â": "a",
"ầ": "a",
"ấ": "a",
"ẫ": "a",
"ẩ": "a",
"ã": "a",
"Ä": "a",
"ă": "a",
"ằ": "a",
"ắ": "a",
"ẵ": "a",
"ẳ": "a",
"ȧ": "a",
"Ç¡": "a",
"ä": "a",
"ÇŸ": "a",
"ả": "a",
"Ã¥": "a",
"Ç»": "a",
"ÇŽ": "a",
"È": "a",
"ȃ": "a",
"ạ": "a",
"áº": "a",
"ặ": "a",
"á¸": "a",
"Ä…": "a",
"â±¥": "a",
"É": "a",
"ꜳ": "aa",
"æ": "ae",
"ǽ": "ae",
"Ç£": "ae",
"ꜵ": "ao",
"ꜷ": "au",
"ꜹ": "av",
"ꜻ": "av",
"ꜽ": "ay",
"â“‘": "b",
"b": "b",
"ḃ": "b",
"ḅ": "b",
"ḇ": "b",
"Æ€": "b",
"ƃ": "b",
"É“": "b",
"â“’": "c",
"c": "c",
"ć": "c",
"ĉ": "c",
"Ä‹": "c",
"Ä": "c",
"ç": "c",
"ḉ": "c",
"ƈ": "c",
"ȼ": "c",
"ꜿ": "c",
"ↄ": "c",
"â““": "d",
"d": "d",
"ḋ": "d",
"Ä": "d",
"á¸": "d",
"ḑ": "d",
"ḓ": "d",
"á¸": "d",
"Ä‘": "d",
"ƌ": "d",
"É–": "d",
"É—": "d",
"êº": "d",
"dz": "dz",
"dž": "dz",
"â“”": "e",
"ï½…": "e",
"è": "e",
"é": "e",
"ê": "e",
"á»": "e",
"ế": "e",
"á»…": "e",
"ể": "e",
"ẽ": "e",
"Ä“": "e",
"ḕ": "e",
"ḗ": "e",
"Ä•": "e",
"Ä—": "e",
"ë": "e",
"ẻ": "e",
"Ä›": "e",
"È…": "e",
"ȇ": "e",
"ẹ": "e",
"ệ": "e",
"È©": "e",
"á¸": "e",
"Ä™": "e",
"ḙ": "e",
"ḛ": "e",
"ɇ": "e",
"É›": "e",
"Ç": "e",
"â“•": "f",
"f": "f",
"ḟ": "f",
"Æ’": "f",
"ê¼": "f",
"â“–": "g",
"g": "g",
"ǵ": "g",
"Ä": "g",
"ḡ": "g",
"ÄŸ": "g",
"Ä¡": "g",
"ǧ": "g",
"Ä£": "g",
"Ç¥": "g",
"É ": "g",
"êž¡": "g",
"áµ¹": "g",
"ê¿": "g",
"â“—": "h",
"h": "h",
"Ä¥": "h",
"ḣ": "h",
"ḧ": "h",
"ÈŸ": "h",
"ḥ": "h",
"ḩ": "h",
"ḫ": "h",
"ẖ": "h",
"ħ": "h",
"ⱨ": "h",
"ⱶ": "h",
"É¥": "h",
"Æ•": "hv",
"ⓘ": "i",
"i": "i",
"ì": "i",
"Ã": "i",
"î": "i",
"Ä©": "i",
"Ä«": "i",
"Ä": "i",
"ï": "i",
"ḯ": "i",
"ỉ": "i",
"Ç": "i",
"ȉ": "i",
"È‹": "i",
"ị": "i",
"į": "i",
"á¸": "i",
"ɨ": "i",
"ı": "i",
"â“™": "j",
"j": "j",
"ĵ": "j",
"Ç°": "j",
"ɉ": "j",
"â“š": "k",
"k": "k",
"ḱ": "k",
"Ç©": "k",
"ḳ": "k",
"Ä·": "k",
"ḵ": "k",
"Æ™": "k",
"ⱪ": "k",
"ê": "k",
"êƒ": "k",
"ê…": "k",
"ꞣ": "k",
"â“›": "l",
"l": "l",
"Å€": "l",
"ĺ": "l",
"ľ": "l",
"ḷ": "l",
"ḹ": "l",
"ļ": "l",
"ḽ": "l",
"ḻ": "l",
"Å¿": "l",
"Å‚": "l",
"Æš": "l",
"É«": "l",
"ⱡ": "l",
"ê‰": "l",
"êž": "l",
"ê‡": "l",
"lj": "lj",
"ⓜ": "m",
"ï½": "m",
"ḿ": "m",
"á¹": "m",
"ṃ": "m",
"ɱ": "m",
"ɯ": "m",
"â“": "n",
"n": "n",
"ǹ": "n",
"Å„": "n",
"ñ": "n",
"á¹…": "n",
"ň": "n",
"ṇ": "n",
"ņ": "n",
"ṋ": "n",
"ṉ": "n",
"Æž": "n",
"ɲ": "n",
"ʼn": "n",
"êž‘": "n",
"ꞥ": "n",
"nj": "nj",
"â“ž": "o",
"ï½": "o",
"ò": "o",
"ó": "o",
"ô": "o",
"ồ": "o",
"ố": "o",
"á»—": "o",
"ổ": "o",
"õ": "o",
"á¹": "o",
"È": "o",
"á¹": "o",
"Å": "o",
"ṑ": "o",
"ṓ": "o",
"Å": "o",
"ȯ": "o",
"ȱ": "o",
"ö": "o",
"È«": "o",
"á»": "o",
"Å‘": "o",
"Ç’": "o",
"È": "o",
"È": "o",
"Æ¡": "o",
"á»": "o",
"á»›": "o",
"ỡ": "o",
"ở": "o",
"ợ": "o",
"á»": "o",
"á»™": "o",
"Ç«": "o",
"Ç": "o",
"ø": "o",
"Ç¿": "o",
"É”": "o",
"ê‹": "o",
"ê": "o",
"ɵ": "o",
"Æ£": "oi",
"È£": "ou",
"ê": "oo",
"â“Ÿ": "p",
"ï½": "p",
"ṕ": "p",
"á¹—": "p",
"Æ¥": "p",
"áµ½": "p",
"ê‘": "p",
"ê“": "p",
"ê•": "p",
"â“ ": "q",
"q": "q",
"É‹": "q",
"ê—": "q",
"ê™": "q",
"â“¡": "r",
"ï½’": "r",
"Å•": "r",
"á¹™": "r",
"Å™": "r",
"È‘": "r",
"È“": "r",
"á¹›": "r",
"á¹": "r",
"Å—": "r",
"ṟ": "r",
"É": "r",
"ɽ": "r",
"ê›": "r",
"ꞧ": "r",
"ꞃ": "r",
"â“¢": "s",
"s": "s",
"ß": "s",
"Å›": "s",
"á¹¥": "s",
"Å": "s",
"ṡ": "s",
"Å¡": "s",
"ṧ": "s",
"á¹£": "s",
"ṩ": "s",
"È™": "s",
"ÅŸ": "s",
"È¿": "s",
"êž©": "s",
"êž…": "s",
"ẛ": "s",
"â“£": "t",
"ï½”": "t",
"ṫ": "t",
"ẗ": "t",
"Å¥": "t",
"á¹": "t",
"È›": "t",
"Å£": "t",
"á¹±": "t",
"ṯ": "t",
"ŧ": "t",
"Æ": "t",
"ʈ": "t",
"ⱦ": "t",
"ꞇ": "t",
"ꜩ": "tz",
"ⓤ": "u",
"u": "u",
"ù": "u",
"ú": "u",
"û": "u",
"Å©": "u",
"á¹¹": "u",
"Å«": "u",
"á¹»": "u",
"Å": "u",
"ü": "u",
"ǜ": "u",
"ǘ": "u",
"Ç–": "u",
"Çš": "u",
"ủ": "u",
"ů": "u",
"ű": "u",
"Ç”": "u",
"È•": "u",
"È—": "u",
"Æ°": "u",
"ừ": "u",
"ứ": "u",
"ữ": "u",
"á»": "u",
"á»±": "u",
"ụ": "u",
"á¹³": "u",
"ų": "u",
"á¹·": "u",
"á¹µ": "u",
"ʉ": "u",
"â“¥": "v",
"ï½–": "v",
"á¹½": "v",
"ṿ": "v",
"Ê‹": "v",
"êŸ": "v",
"ʌ": "v",
"ê¡": "vy",
"ⓦ": "w",
"ï½—": "w",
"áº": "w",
"ẃ": "w",
"ŵ": "w",
"ẇ": "w",
"ẅ": "w",
"ẘ": "w",
"ẉ": "w",
"â±³": "w",
"ⓧ": "x",
"x": "x",
"ẋ": "x",
"áº": "x",
"ⓨ": "y",
"ï½™": "y",
"ỳ": "y",
"ý": "y",
"Å·": "y",
"ỹ": "y",
"ȳ": "y",
"áº": "y",
"ÿ": "y",
"á»·": "y",
"ẙ": "y",
"ỵ": "y",
"Æ´": "y",
"É": "y",
"ỿ": "y",
"â“©": "z",
"z": "z",
"ź": "z",
"ẑ": "z",
"ż": "z",
"ž": "z",
"ẓ": "z",
"ẕ": "z",
"ƶ": "z",
"È¥": "z",
"É€": "z",
"ⱬ": "z",
"ê£": "z",
"Ά": "Α",
"Έ": "Ε",
"Ή": "Η",
"Ί": "Ι",
"Ϊ": "Ι",
"Ό": "Ο",
"ÎŽ": "Î¥",
"Ϋ": "Υ",
"Î": "Ω",
"ά": "α",
"Î": "ε",
"ή": "η",
"ί": "ι",
"ϊ": "ι",
"Î": "ι",
"ό": "ο",
"Ï": "Ï…",
"Ï‹": "Ï…",
"ΰ": "υ",
"ω": "ω",
"ς": "σ"
}
}), e.define("select2/data/base", ["../utils"], function(n) {
function i(e, t) {
i.__super__.constructor.call(this)
}
return n.Extend(i, n.Observable), i.prototype.current = function(e) {
throw new Error("The `current` method must be defined in child classes.")
}, i.prototype.query = function(e, t) {
throw new Error("The `query` method must be defined in child classes.")
}, i.prototype.bind = function(e, t) {}, i.prototype.destroy = function() {}, i.prototype.generateResultId = function(e, t) {
var i = e.id + "-result-";
return i += n.generateChars(4), null != t.id ? i += "-" + t.id.toString() : i += "-" + n.generateChars(4), i
}, i
}), e.define("select2/data/select", ["./base", "../utils", "jquery"], function(e, t, r) {
function i(e, t) {
this.$element = e, this.options = t, i.__super__.constructor.call(this)
}
return t.Extend(i, e), i.prototype.current = function(e) {
var i = [],
n = this;
this.$element.find(":selected").each(function() {
var e = r(this),
t = n.item(e);
i.push(t)
}), e(i)
}, i.prototype.select = function(o) {
var a = this;
if (o.selected = !0, r(o.element).is("option")) return o.element.selected = !0, void this.$element.trigger("change");
if (this.$element.prop("multiple")) this.current(function(e) {
var t = [];
(o = [o]).push.apply(o, e);
for (var i = 0; i < o.length; i++) {
var n = o[i].id; - 1 === r.inArray(n, t) && t.push(n)
}
a.$element.val(t), a.$element.trigger("change")
});
else {
var e = o.id;
this.$element.val(e), this.$element.trigger("change")
}
}, i.prototype.unselect = function(o) {
var a = this;
if (this.$element.prop("multiple")) {
if (o.selected = !1, r(o.element).is("option")) return o.element.selected = !1, void this.$element.trigger("change");
this.current(function(e) {
for (var t = [], i = 0; i < e.length; i++) {
var n = e[i].id;
n !== o.id && -1 === r.inArray(n, t) && t.push(n)
}
a.$element.val(t), a.$element.trigger("change")
})
}
}, i.prototype.bind = function(e, t) {
var i = this;
(this.container = e).on("select", function(e) {
i.select(e.data)
}), e.on("unselect", function(e) {
i.unselect(e.data)
})
}, i.prototype.destroy = function() {
this.$element.find("*").each(function() {
r.removeData(this, "data")
})
}, i.prototype.query = function(n, e) {
var o = [],
a = this;
this.$element.children().each(function() {
var e = r(this);
if (e.is("option") || e.is("optgroup")) {
var t = a.item(e),
i = a.matches(n, t);
null !== i && o.push(i)
}
}), e({
results: o
})
}, i.prototype.addOptions = function(e) {
t.appendMany(this.$element, e)
}, i.prototype.option = function(e) {
var t;
e.children ? (t = document.createElement("optgroup")).label = e.text : void 0 !== (t = document.createElement("option")).textContent ? t.textContent = e.text : t.innerText = e.text, void 0 !== e.id && (t.value = e.id), e.disabled && (t.disabled = !0), e.selected && (t.selected = !0), e.title && (t.title = e.title);
var i = r(t),
n = this._normalizeItem(e);
return n.element = t, r.data(t, "data", n), i
}, i.prototype.item = function(e) {
var t = {};
if (null != (t = r.data(e[0], "data"))) return t;
if (e.is("option")) t = {
id: e.val(),
text: e.text(),
disabled: e.prop("disabled"),
selected: e.prop("selected"),
title: e.prop("title")
};
else if (e.is("optgroup")) {
t = {
text: e.prop("label"),
children: [],
title: e.prop("title")
};
for (var i = e.children("option"), n = [], o = 0; o < i.length; o++) {
var a = r(i[o]),
s = this.item(a);
n.push(s)
}
t.children = n
}
return (t = this._normalizeItem(t)).element = e[0], r.data(e[0], "data", t), t
}, i.prototype._normalizeItem = function(e) {
r.isPlainObject(e) || (e = {
id: e,
text: e
});
return null != (e = r.extend({}, {
text: ""
}, e)).id && (e.id = e.id.toString()), null != e.text && (e.text = e.text.toString()), null == e._resultId && e.id && null != this.container && (e._resultId = this.generateResultId(this.container, e)), r.extend({}, {
selected: !1,
disabled: !1
}, e)
}, i.prototype.matches = function(e, t) {
return this.options.get("matcher")(e, t)
}, i
}), e.define("select2/data/array", ["./select", "../utils", "jquery"], function(e, h, f) {
function n(e, t) {
var i = t.get("data") || [];
n.__super__.constructor.call(this, e, t), this.addOptions(this.convertToOptions(i))
}
return h.Extend(n, e), n.prototype.select = function(i) {
var e = this.$element.find("option").filter(function(e, t) {
return t.value == i.id.toString()
});
0 === e.length && (e = this.option(i), this.addOptions(e)), n.__super__.select.call(this, i)
}, n.prototype.convertToOptions = function(e) {
var t = this,
i = this.$element.find("option"),
n = i.map(function() {
return t.item(f(this)).id
}).get(),
o = [];
function a(e) {
return function() {
return f(this).val() == e.id
}
}
for (var s = 0; s < e.length; s++) {
var r = this._normalizeItem(e[s]);
if (0 <= f.inArray(r.id, n)) {
var l = i.filter(a(r)),
c = this.item(l),
d = f.extend(!0, {}, r, c),
u = this.option(d);
l.replaceWith(u)
} else {
var m = this.option(r);
if (r.children) {
var p = this.convertToOptions(r.children);
h.appendMany(m, p)
}
o.push(m)
}
}
return o
}, n
}), e.define("select2/data/ajax", ["./array", "../utils", "jquery"], function(e, t, a) {
function i(e, t) {
this.ajaxOptions = this._applyDefaults(t.get("ajax")), null != this.ajaxOptions.processResults && (this.processResults = this.ajaxOptions.processResults), i.__super__.constructor.call(this, e, t)
}
return t.Extend(i, e), i.prototype._applyDefaults = function(e) {
var t = {
data: function(e) {
return a.extend({}, e, {
q: e.term
})
},
transport: function(e, t, i) {
var n = a.ajax(e);
return n.then(t), n.fail(i), n
}
};
return a.extend({}, t, e, !0)
}, i.prototype.processResults = function(e) {
return e
}, i.prototype.query = function(i, n) {
var o = this;
null != this._request && (a.isFunction(this._request.abort) && this._request.abort(), this._request = null);
var t = a.extend({
type: "GET"
}, this.ajaxOptions);
function e() {
var e = t.transport(t, function(e) {
var t = o.processResults(e, i);
o.options.get("debug") && window.console && console.error && (t && t.results && a.isArray(t.results) || console.error("Select2: The AJAX results did not return an array in the `results` key of the response.")), n(t)
}, function() {
e.status && "0" === e.status || o.trigger("results:message", {
message: "errorLoading"
})
});
o._request = e
}
"function" == typeof t.url && (t.url = t.url.call(this.$element, i)), "function" == typeof t.data && (t.data = t.data.call(this.$element, i)), this.ajaxOptions.delay && null != i.term ? (this._queryTimeout && window.clearTimeout(this._queryTimeout), this._queryTimeout = window.setTimeout(e, this.ajaxOptions.delay)) : e()
}, i
}), e.define("select2/data/tags", ["jquery"], function(d) {
function e(e, t, i) {
var n = i.get("tags"),
o = i.get("createTag");
void 0 !== o && (this.createTag = o);
var a = i.get("insertTag");
if (void 0 !== a && (this.insertTag = a), e.call(this, t, i), d.isArray(n))
for (var s = 0; s < n.length; s++) {
var r = n[s],
l = this._normalizeItem(r),
c = this.option(l);
this.$element.append(c)
}
}
return e.prototype.query = function(e, c, d) {
var u = this;
this._removeOldTags(), null != c.term && null == c.page ? e.call(this, c, function e(t, i) {
for (var n = t.results, o = 0; o < n.length; o++) {
var a = n[o],
s = null != a.children && !e({
results: a.children
}, !0);
if ((a.text || "").toUpperCase() === (c.term || "").toUpperCase() || s) return !i && (t.data = n, void d(t))
}
if (i) return !0;
var r = u.createTag(c);
if (null != r) {
var l = u.option(r);
l.attr("data-select2-tag", !0), u.addOptions([l]), u.insertTag(n, r)
}
t.results = n, d(t)
}) : e.call(this, c, d)
}, e.prototype.createTag = function(e, t) {
var i = d.trim(t.term);
return "" === i ? null : {
id: i,
text: i
}
}, e.prototype.insertTag = function(e, t, i) {
t.unshift(i)
}, e.prototype._removeOldTags = function(e) {
this._lastTag;
this.$element.find("option[data-select2-tag]").each(function() {
this.selected || d(this).remove()
})
}, e
}), e.define("select2/data/tokenizer", ["jquery"], function(u) {
function e(e, t, i) {
var n = i.get("tokenizer");
void 0 !== n && (this.tokenizer = n), e.call(this, t, i)
}
return e.prototype.bind = function(e, t, i) {
e.call(this, t, i), this.$search = t.dropdown.$search || t.selection.$search || i.find(".select2-search__field")
}, e.prototype.query = function(e, t, i) {
var o = this;
t.term = t.term || "";
var n = this.tokenizer(t, this.options, function(e) {
var t, i = o._normalizeItem(e);
if (!o.$element.find("option").filter(function() {
return u(this).val() === i.id
}).length) {
var n = o.option(i);
n.attr("data-select2-tag", !0), o._removeOldTags(), o.addOptions([n])
}
t = i, o.trigger("select", {
data: t
})
});
n.term !== t.term && (this.$search.length && (this.$search.val(n.term), this.$search.focus()), t.term = n.term), e.call(this, t, i)
}, e.prototype.tokenizer = function(e, t, i, n) {
for (var o = i.get("tokenSeparators") || [], a = t.term, s = 0, r = this.createTag || function(e) {
return {
id: e.term,
text: e.term
}
}; s < a.length;) {
var l = a[s];
if (-1 !== u.inArray(l, o)) {
var c = a.substr(0, s),
d = r(u.extend({}, t, {
term: c
}));
null != d ? (n(d), a = a.substr(s + 1) || "", s = 0) : s++
} else s++
}
return {
term: a
}
}, e
}), e.define("select2/data/minimumInputLength", [], function() {
function e(e, t, i) {
this.minimumInputLength = i.get("minimumInputLength"), e.call(this, t, i)
}
return e.prototype.query = function(e, t, i) {
t.term = t.term || "", t.term.length < this.minimumInputLength ? this.trigger("results:message", {
message: "inputTooShort",
args: {
minimum: this.minimumInputLength,
input: t.term,
params: t
}
}) : e.call(this, t, i)
}, e
}), e.define("select2/data/maximumInputLength", [], function() {
function e(e, t, i) {
this.maximumInputLength = i.get("maximumInputLength"), e.call(this, t, i)
}
return e.prototype.query = function(e, t, i) {
t.term = t.term || "", 0 < this.maximumInputLength && t.term.length > this.maximumInputLength ? this.trigger("results:message", {
message: "inputTooLong",
args: {
maximum: this.maximumInputLength,
input: t.term,
params: t
}
}) : e.call(this, t, i)
}, e
}), e.define("select2/data/maximumSelectionLength", [], function() {
function e(e, t, i) {
this.maximumSelectionLength = i.get("maximumSelectionLength"), e.call(this, t, i)
}
return e.prototype.query = function(i, n, o) {
var a = this;
this.current(function(e) {
var t = null != e ? e.length : 0;
0 < a.maximumSelectionLength && t >= a.maximumSelectionLength ? a.trigger("results:message", {
message: "maximumSelected",
args: {
maximum: a.maximumSelectionLength
}
}) : i.call(a, n, o)
})
}, e
}), e.define("select2/dropdown", ["jquery", "./utils"], function(t, e) {
function i(e, t) {
this.$element = e, this.options = t, i.__super__.constructor.call(this)
}
return e.Extend(i, e.Observable), i.prototype.render = function() {
var e = t('<span class="select2-dropdown"><span class="select2-results"></span></span>');
return e.attr("dir", this.options.get("dir")), this.$dropdown = e
}, i.prototype.bind = function() {}, i.prototype.position = function(e, t) {}, i.prototype.destroy = function() {
this.$dropdown.remove()
}, i
}), e.define("select2/dropdown/search", ["jquery", "../utils"], function(o, e) {
function t() {}
return t.prototype.render = function(e) {
var t = e.call(this),
i = o('<span class="select2-search select2-search--dropdown"><input class="select2-search__field" type="search" tabindex="-1" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" role="textbox" /></span>');
return this.$searchContainer = i, this.$search = i.find("input"), t.prepend(i), t
}, t.prototype.bind = function(e, t, i) {
var n = this;
e.call(this, t, i), this.$search.on("keydown", function(e) {
n.trigger("keypress", e), n._keyUpPrevented = e.isDefaultPrevented()
}), this.$search.on("input", function(e) {
o(this).off("keyup")
}), this.$search.on("keyup input", function(e) {
n.handleSearch(e)
}), t.on("open", function() {
n.$search.attr("tabindex", 0), n.$search.focus(), window.setTimeout(function() {
n.$search.focus()
}, 0)
}), t.on("close", function() {
n.$search.attr("tabindex", -1), n.$search.val("")
}), t.on("focus", function() {
t.isOpen() && n.$search.focus()
}), t.on("results:all", function(e) {
null != e.query.term && "" !== e.query.term || (n.showSearch(e) ? n.$searchContainer.removeClass("select2-search--hide") : n.$searchContainer.addClass("select2-search--hide"))
})
}, t.prototype.handleSearch = function(e) {
if (!this._keyUpPrevented) {
var t = this.$search.val();
this.trigger("query", {
term: t
})
}
this._keyUpPrevented = !1
}, t.prototype.showSearch = function(e, t) {
return !0
}, t
}), e.define("select2/dropdown/hidePlaceholder", [], function() {
function e(e, t, i, n) {
this.placeholder = this.normalizePlaceholder(i.get("placeholder")), e.call(this, t, i, n)
}
return e.prototype.append = function(e, t) {
t.results = this.removePlaceholder(t.results), e.call(this, t)
}, e.prototype.normalizePlaceholder = function(e, t) {
return "string" == typeof t && (t = {
id: "",
text: t
}), t
}, e.prototype.removePlaceholder = function(e, t) {
for (var i = t.slice(0), n = t.length - 1; 0 <= n; n--) {
var o = t[n];
this.placeholder.id === o.id && i.splice(n, 1)
}
return i
}, e
}), e.define("select2/dropdown/infiniteScroll", ["jquery"], function(o) {
function e(e, t, i, n) {
this.lastParams = {}, e.call(this, t, i, n), this.$loadingMore = this.createLoadingMore(), this.loading = !1
}
return e.prototype.append = function(e, t) {
this.$loadingMore.remove(), this.loading = !1, e.call(this, t), this.showLoadingMore(t) && this.$results.append(this.$loadingMore)
}, e.prototype.bind = function(e, t, i) {
var n = this;
e.call(this, t, i), t.on("query", function(e) {
n.lastParams = e, n.loading = !0
}), t.on("query:append", function(e) {
n.lastParams = e, n.loading = !0
}), this.$results.on("scroll", function() {
var e = o.contains(document.documentElement, n.$loadingMore[0]);
if (!n.loading && e) {
var t = n.$results.offset().top + n.$results.outerHeight(!1);
n.$loadingMore.offset().top + n.$loadingMore.outerHeight(!1) <= t + 50 && n.loadMore()
}
})
}, e.prototype.loadMore = function() {
this.loading = !0;
var e = o.extend({}, {
page: 1
}, this.lastParams);
e.page++, this.trigger("query:append", e)
}, e.prototype.showLoadingMore = function(e, t) {
return t.pagination && t.pagination.more
}, e.prototype.createLoadingMore = function() {
var e = o('<li class="select2-results__option select2-results__option--load-more"role="treeitem" aria-disabled="true"></li>'),
t = this.options.get("translations").get("loadingMore");
return e.html(t(this.lastParams)), e
}, e
}), e.define("select2/dropdown/attachBody", ["jquery", "../utils"], function(h, r) {
function e(e, t, i) {
this.$dropdownParent = i.get("dropdownParent") || h(document.body), e.call(this, t, i)
}
return e.prototype.bind = function(e, t, i) {
var n = this,
o = !1;
e.call(this, t, i), t.on("open", function() {
n._showDropdown(), n._attachPositioningHandler(t), o || (o = !0, t.on("results:all", function() {
n._positionDropdown(), n._resizeDropdown()
}), t.on("results:append", function() {
n._positionDropdown(), n._resizeDropdown()
}))
}), t.on("close", function() {
n._hideDropdown(), n._detachPositioningHandler(t)
}), this.$dropdownContainer.on("mousedown", function(e) {
e.stopPropagation()
})
}, e.prototype.destroy = function(e) {
e.call(this), this.$dropdownContainer.remove()
}, e.prototype.position = function(e, t, i) {
t.attr("class", i.attr("class")), t.removeClass("select2"), t.addClass("select2-container--open"), t.css({
position: "absolute",
top: -999999
}), this.$container = i
}, e.prototype.render = function(e) {
var t = h("<span></span>"),
i = e.call(this);
return t.append(i), this.$dropdownContainer = t
}, e.prototype._hideDropdown = function(e) {
this.$dropdownContainer.detach()
}, e.prototype._attachPositioningHandler = function(e, t) {
var i = this,
n = "scroll.select2." + t.id,
o = "resize.select2." + t.id,
a = "orientationchange.select2." + t.id,
s = this.$container.parents().filter(r.hasScroll);
s.each(function() {
h(this).data("select2-scroll-position", {
x: h(this).scrollLeft(),
y: h(this).scrollTop()
})
}), s.on(n, function(e) {
var t = h(this).data("select2-scroll-position");
h(this).scrollTop(t.y)
}), h(window).on(n + " " + o + " " + a, function(e) {
i._positionDropdown(), i._resizeDropdown()
})
}, e.prototype._detachPositioningHandler = function(e, t) {
var i = "scroll.select2." + t.id,
n = "resize.select2." + t.id,
o = "orientationchange.select2." + t.id;
this.$container.parents().filter(r.hasScroll).off(i), h(window).off(i + " " + n + " " + o)
}, e.prototype._positionDropdown = function() {
var e = h(window),
t = this.$dropdown.hasClass("select2-dropdown--above"),
i = this.$dropdown.hasClass("select2-dropdown--below"),
n = null,
o = this.$container.offset();
o.bottom = o.top + this.$container.outerHeight(!1);
var a = {
height: this.$container.outerHeight(!1)
};
a.top = o.top, a.bottom = o.top + a.height;
var s = this.$dropdown.outerHeight(!1),
r = e.scrollTop(),
l = e.scrollTop() + e.height(),
c = r < o.top - s,
d = l > o.bottom + s,
u = {
left: o.left,
top: a.bottom
},
m = this.$dropdownParent;
"static" === m.css("position") && (m = m.offsetParent());
var p = m.offset();
u.top -= p.top, u.left -= p.left, t || i || (n = "below"), d || !c || t ? !c && d && t && (n = "below") : n = "above", ("above" == n || t && "below" !== n) && (u.top = a.top - p.top - s), null != n && (this.$dropdown.removeClass("select2-dropdown--below select2-dropdown--above").addClass("select2-dropdown--" + n), this.$container.removeClass("select2-container--below select2-container--above").addClass("select2-container--" + n)), this.$dropdownContainer.css(u)
}, e.prototype._resizeDropdown = function() {
var e = {
width: this.$container.outerWidth(!1) + "px"
};
this.options.get("dropdownAutoWidth") && (e.minWidth = e.width, e.position = "relative", e.width = "auto"), this.$dropdown.css(e)
}, e.prototype._showDropdown = function(e) {
this.$dropdownContainer.appendTo(this.$dropdownParent), this._positionDropdown(), this._resizeDropdown()
}, e
}), e.define("select2/dropdown/minimumResultsForSearch", [], function() {
function e(e, t, i, n) {
this.minimumResultsForSearch = i.get("minimumResultsForSearch"), this.minimumResultsForSearch < 0 && (this.minimumResultsForSearch = 1 / 0), e.call(this, t, i, n)
}
return e.prototype.showSearch = function(e, t) {
return !(function e(t) {
for (var i = 0, n = 0; n < t.length; n++) {
var o = t[n];
o.children ? i += e(o.children) : i++
}
return i
}(t.data.results) < this.minimumResultsForSearch) && e.call(this, t)
}, e
}), e.define("select2/dropdown/selectOnClose", [], function() {
function e() {}
return e.prototype.bind = function(e, t, i) {
var n = this;
e.call(this, t, i), t.on("close", function(e) {
n._handleSelectOnClose(e)
})
}, e.prototype._handleSelectOnClose = function(e, t) {
if (t && null != t.originalSelect2Event) {
var i = t.originalSelect2Event;
if ("select" === i._type || "unselect" === i._type) return
}
var n = this.getHighlightedResults();
if (!(n.length < 1)) {
var o = n.data("data");
null != o.element && o.element.selected || null == o.element && o.selected || this.trigger("select", {
data: o
})
}
}, e
}), e.define("select2/dropdown/closeOnSelect", [], function() {
function e() {}
return e.prototype.bind = function(e, t, i) {
var n = this;
e.call(this, t, i), t.on("select", function(e) {
n._selectTriggered(e)
}), t.on("unselect", function(e) {
n._selectTriggered(e)
})
}, e.prototype._selectTriggered = function(e, t) {
var i = t.originalEvent;
i && i.ctrlKey || this.trigger("close", {
originalEvent: i,
originalSelect2Event: t
})
}, e
}), e.define("select2/i18n/en", [], function() {
return {
errorLoading: function() {
return "The results could not be loaded."
},
inputTooLong: function(e) {
var t = e.input.length - e.maximum,
i = "Please delete " + t + " character";
return 1 != t && (i += "s"), i
},
inputTooShort: function(e) {
return "Please enter " + (e.minimum - e.input.length) + " or more characters"
},
loadingMore: function() {
return "Loading more results…"
},
maximumSelected: function(e) {
var t = "You can only select " + e.maximum + " item";
return 1 != e.maximum && (t += "s"), t
},
noResults: function() {
return "No results found"
},
searching: function() {
return "Searching…"
}
}
}), e.define("select2/defaults", ["jquery", "require", "./results", "./selection/single", "./selection/multiple", "./selection/placeholder", "./selection/allowClear", "./selection/search", "./selection/eventRelay", "./utils", "./translation", "./diacritics", "./data/select", "./data/array", "./data/ajax", "./data/tags", "./data/tokenizer", "./data/minimumInputLength", "./data/maximumInputLength", "./data/maximumSelectionLength", "./dropdown", "./dropdown/search", "./dropdown/hidePlaceholder", "./dropdown/infiniteScroll", "./dropdown/attachBody", "./dropdown/minimumResultsForSearch", "./dropdown/selectOnClose", "./dropdown/closeOnSelect", "./i18n/en"], function(h, f, g, v, b, y, w, k, C, x, T, t, S, E, I, $, _, A, M, D, L, j, B, O, P, N, R, q, e) {
function i() {
this.reset()
}
return i.prototype.apply = function(t) {
if (null == (t = h.extend(!0, {}, this.defaults, t)).dataAdapter) {
if (null != t.ajax ? t.dataAdapter = I : null != t.data ? t.dataAdapter = E : t.dataAdapter = S, 0 < t.minimumInputLength && (t.dataAdapter = x.Decorate(t.dataAdapter, A)), 0 < t.maximumInputLength && (t.dataAdapter = x.Decorate(t.dataAdapter, M)), 0 < t.maximumSelectionLength && (t.dataAdapter = x.Decorate(t.dataAdapter, D)), t.tags && (t.dataAdapter = x.Decorate(t.dataAdapter, $)), null == t.tokenSeparators && null == t.tokenizer || (t.dataAdapter = x.Decorate(t.dataAdapter, _)), null != t.query) {
var e = f(t.amdBase + "compat/query");
t.dataAdapter = x.Decorate(t.dataAdapter, e)
}
if (null != t.initSelection) {
var i = f(t.amdBase + "compat/initSelection");
t.dataAdapter = x.Decorate(t.dataAdapter, i)
}
}
if (null == t.resultsAdapter && (t.resultsAdapter = g, null != t.ajax && (t.resultsAdapter = x.Decorate(t.resultsAdapter, O)), null != t.placeholder && (t.resultsAdapter = x.Decorate(t.resultsAdapter, B)), t.selectOnClose && (t.resultsAdapter = x.Decorate(t.resultsAdapter, R))), null == t.dropdownAdapter) {
if (t.multiple) t.dropdownAdapter = L;
else {
var n = x.Decorate(L, j);
t.dropdownAdapter = n
}
if (0 !== t.minimumResultsForSearch && (t.dropdownAdapter = x.Decorate(t.dropdownAdapter, N)), t.closeOnSelect && (t.dropdownAdapter = x.Decorate(t.dropdownAdapter, q)), null != t.dropdownCssClass || null != t.dropdownCss || null != t.adaptDropdownCssClass) {
var o = f(t.amdBase + "compat/dropdownCss");
t.dropdownAdapter = x.Decorate(t.dropdownAdapter, o)
}
t.dropdownAdapter = x.Decorate(t.dropdownAdapter, P)
}
if (null == t.selectionAdapter) {
if (t.multiple ? t.selectionAdapter = b : t.selectionAdapter = v, null != t.placeholder && (t.selectionAdapter = x.Decorate(t.selectionAdapter, y)), t.allowClear && (t.selectionAdapter = x.Decorate(t.selectionAdapter, w)), t.multiple && (t.selectionAdapter = x.Decorate(t.selectionAdapter, k)), null != t.containerCssClass || null != t.containerCss || null != t.adaptContainerCssClass) {
var a = f(t.amdBase + "compat/containerCss");
t.selectionAdapter = x.Decorate(t.selectionAdapter, a)
}
t.selectionAdapter = x.Decorate(t.selectionAdapter, C)
}
if ("string" == typeof t.language)
if (0 < t.language.indexOf("-")) {
var s = t.language.split("-")[0];
t.language = [t.language, s]
} else t.language = [t.language];
if (h.isArray(t.language)) {
var r = new T;
t.language.push("en");
for (var l = t.language, c = 0; c < l.length; c++) {
var d = l[c],
u = {};
try {
u = T.loadPath(d)
} catch (e) {
try {
d = this.defaults.amdLanguageBase + d, u = T.loadPath(d)
} catch (e) {
t.debug && window.console && console.warn && console.warn('Select2: The language file for "' + d + '" could not be automatically loaded. A fallback will be used instead.');
continue
}
}
r.extend(u)
}
t.translations = r
} else {
var m = T.loadPath(this.defaults.amdLanguageBase + "en"),
p = new T(t.language);
p.extend(m), t.translations = p
}
return t
}, i.prototype.reset = function() {
function r(e) {
return e.replace(/[^\u0000-\u007E]/g, function(e) {
return t[e] || e
})
}
this.defaults = {
amdBase: "./",
amdLanguageBase: "./i18n/",
closeOnSelect: !0,
debug: !1,
dropdownAutoWidth: !1,
escapeMarkup: x.escapeMarkup,
language: e,
matcher: function e(t, i) {
if ("" === h.trim(t.term)) return i;
if (i.children && 0 < i.children.length) {
for (var n = h.extend(!0, {}, i), o = i.children.length - 1; 0 <= o; o--) null == e(t, i.children[o]) && n.children.splice(o, 1);
return 0 < n.children.length ? n : e(t, n)
}
var a = r(i.text).toUpperCase(),
s = r(t.term).toUpperCase();
return -1 < a.indexOf(s) ? i : null
},
minimumInputLength: 0,
maximumInputLength: 0,
maximumSelectionLength: 0,
minimumResultsForSearch: 0,
selectOnClose: !1,
sorter: function(e) {
return e
},
templateResult: function(e) {
return e.text
},
templateSelection: function(e) {
return e.text
},
theme: "default",
width: "resolve"
}
}, i.prototype.set = function(e, t) {
var i = {};
i[h.camelCase(e)] = t;
var n = x._convertData(i);
h.extend(this.defaults, n)
}, new i
}), e.define("select2/options", ["require", "jquery", "./defaults", "./utils"], function(n, a, o, s) {
function e(e, t) {
if (this.options = e, null != t && this.fromElement(t), this.options = o.apply(this.options), t && t.is("input")) {
var i = n(this.get("amdBase") + "compat/inputData");
this.options.dataAdapter = s.Decorate(this.options.dataAdapter, i)
}
}
return e.prototype.fromElement = function(e) {
var t = ["select2"];
null == this.options.multiple && (this.options.multiple = e.prop("multiple")), null == this.options.disabled && (this.options.disabled = e.prop("disabled")), null == this.options.language && (e.prop("lang") ? this.options.language = e.prop("lang").toLowerCase() : e.closest("[lang]").prop("lang") && (this.options.language = e.closest("[lang]").prop("lang"))), null == this.options.dir && (e.prop("dir") ? this.options.dir = e.prop("dir") : e.closest("[dir]").prop("dir") ? this.options.dir = e.closest("[dir]").prop("dir") : this.options.dir = "ltr"), e.prop("disabled", this.options.disabled), e.prop("multiple", this.options.multiple), e.data("select2Tags") && (this.options.debug && window.console && console.warn && console.warn('Select2: The `data-select2-tags` attribute has been changed to use the `data-data` and `data-tags="true"` attributes and will be removed in future versions of Select2.'), e.data("data", e.data("select2Tags")), e.data("tags", !0)), e.data("ajaxUrl") && (this.options.debug && window.console && console.warn && console.warn("Select2: The `data-ajax-url` attribute has been changed to `data-ajax--url` and support for the old attribute will be removed in future versions of Select2."), e.attr("ajax--url", e.data("ajaxUrl")), e.data("ajax--url", e.data("ajaxUrl")));
var i = {};
i = a.fn.jquery && "1." == a.fn.jquery.substr(0, 2) && e[0].dataset ? a.extend(!0, {}, e[0].dataset, e.data()) : e.data();
var n = a.extend(!0, {}, i);
for (var o in n = s._convertData(n)) - 1 < a.inArray(o, t) || (a.isPlainObject(this.options[o]) ? a.extend(this.options[o], n[o]) : this.options[o] = n[o]);
return this
}, e.prototype.get = function(e) {
return this.options[e]
}, e.prototype.set = function(e, t) {
this.options[e] = t
}, e
}), e.define("select2/core", ["jquery", "./options", "./utils", "./keys"], function(o, c, i, n) {
var d = function(e, t) {
null != e.data("select2") && e.data("select2").destroy(), this.$element = e, this.id = this._generateId(e), t = t || {}, this.options = new c(t, e), d.__super__.constructor.call(this);
var i = e.attr("tabindex") || 0;
e.data("old-tabindex", i), e.attr("tabindex", "-1");
var n = this.options.get("dataAdapter");
this.dataAdapter = new n(e, this.options);
var o = this.render();
this._placeContainer(o);
var a = this.options.get("selectionAdapter");
this.selection = new a(e, this.options), this.$selection = this.selection.render(), this.selection.position(this.$selection, o);
var s = this.options.get("dropdownAdapter");
this.dropdown = new s(e, this.options), this.$dropdown = this.dropdown.render(), this.dropdown.position(this.$dropdown, o);
var r = this.options.get("resultsAdapter");
this.results = new r(e, this.options, this.dataAdapter), this.$results = this.results.render(), this.results.position(this.$results, this.$dropdown);
var l = this;
this._bindAdapters(), this._registerDomEvents(), this._registerDataEvents(), this._registerSelectionEvents(), this._registerDropdownEvents(), this._registerResultsEvents(), this._registerEvents(), this.dataAdapter.current(function(e) {
l.trigger("selection:update", {
data: e
})
}), e.addClass("select2-hidden-accessible"), e.attr("aria-hidden", "true"), this._syncAttributes(), e.data("select2", this)
};
return i.Extend(d, i.Observable), d.prototype._generateId = function(e) {
return "select2-" + (null != e.attr("id") ? e.attr("id") : null != e.attr("name") ? e.attr("name") + "-" + i.generateChars(2) : i.generateChars(4)).replace(/(:|\.|\[|\]|,)/g, "")
}, d.prototype._placeContainer = function(e) {
e.insertAfter(this.$element);
var t = this._resolveWidth(this.$element, this.options.get("width"));
null != t && e.css("width", t)
}, d.prototype._resolveWidth = function(e, t) {
var i = /^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;
if ("resolve" == t) {
var n = this._resolveWidth(e, "style");
return null != n ? n : this._resolveWidth(e, "element")
}
if ("element" == t) {
var o = e.outerWidth(!1);
return o <= 0 ? "auto" : o + "px"
}
if ("style" != t) return t;
var a = e.attr("style");
if ("string" != typeof a) return null;
for (var s = a.split(";"), r = 0, l = s.length; r < l; r += 1) {
var c = s[r].replace(/\s/g, "").match(i);
if (null !== c && 1 <= c.length) return c[1]
}
return null
}, d.prototype._bindAdapters = function() {
this.dataAdapter.bind(this, this.$container), this.selection.bind(this, this.$container), this.dropdown.bind(this, this.$container), this.results.bind(this, this.$container)
}, d.prototype._registerDomEvents = function() {
var t = this;
this.$element.on("change.select2", function() {
t.dataAdapter.current(function(e) {
t.trigger("selection:update", {
data: e
})
})
}), this.$element.on("focus.select2", function(e) {
t.trigger("focus", e)
}), this._syncA = i.bind(this._syncAttributes, this), this._syncS = i.bind(this._syncSubtree, this), this.$element[0].attachEvent && this.$element[0].attachEvent("onpropertychange", this._syncA);
var e = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver;
null != e ? (this._observer = new e(function(e) {
o.each(e, t._syncA), o.each(e, t._syncS)
}), this._observer.observe(this.$element[0], {
attributes: !0,
childList: !0,
subtree: !1
})) : this.$element[0].addEventListener && (this.$element[0].addEventListener("DOMAttrModified", t._syncA, !1), this.$element[0].addEventListener("DOMNodeInserted", t._syncS, !1), this.$element[0].addEventListener("DOMNodeRemoved", t._syncS, !1))
}, d.prototype._registerDataEvents = function() {
var i = this;
this.dataAdapter.on("*", function(e, t) {
i.trigger(e, t)
})
}, d.prototype._registerSelectionEvents = function() {
var i = this,
n = ["toggle", "focus"];
this.selection.on("toggle", function() {
i.toggleDropdown()
}), this.selection.on("focus", function(e) {
i.focus(e)
}), this.selection.on("*", function(e, t) {
-1 === o.inArray(e, n) && i.trigger(e, t)
})
}, d.prototype._registerDropdownEvents = function() {
var i = this;
this.dropdown.on("*", function(e, t) {
i.trigger(e, t)
})
}, d.prototype._registerResultsEvents = function() {
var i = this;
this.results.on("*", function(e, t) {
i.trigger(e, t)
})
}, d.prototype._registerEvents = function() {
var i = this;
this.on("open", function() {
i.$container.addClass("select2-container--open")
}), this.on("close", function() {
i.$container.removeClass("select2-container--open")
}), this.on("enable", function() {
i.$container.removeClass("select2-container--disabled")
}), this.on("disable", function() {
i.$container.addClass("select2-container--disabled")
}), this.on("blur", function() {
i.$container.removeClass("select2-container--focus")
}), this.on("query", function(t) {
i.isOpen() || i.trigger("open", {}), this.dataAdapter.query(t, function(e) {
i.trigger("results:all", {
data: e,
query: t
})
})
}), this.on("query:append", function(t) {
this.dataAdapter.query(t, function(e) {
i.trigger("results:append", {
data: e,
query: t
})
})
}), this.on("keypress", function(e) {
var t = e.which;
i.isOpen() ? t === n.ESC || t === n.TAB || t === n.UP && e.altKey ? (i.close(), e.preventDefault()) : t === n.ENTER ? (i.trigger("results:select", {}), e.preventDefault()) : t === n.SPACE && e.ctrlKey ? (i.trigger("results:toggle", {}), e.preventDefault()) : t === n.UP ? (i.trigger("results:previous", {}), e.preventDefault()) : t === n.DOWN && (i.trigger("results:next", {}), e.preventDefault()) : (t === n.ENTER || t === n.SPACE || t === n.DOWN && e.altKey) && (i.open(), e.preventDefault())
})
}, d.prototype._syncAttributes = function() {
this.options.set("disabled", this.$element.prop("disabled")), this.options.get("disabled") ? (this.isOpen() && this.close(), this.trigger("disable", {})) : this.trigger("enable", {})
}, d.prototype._syncSubtree = function(e, t) {
var i = !1,
n = this;
if (!e || !e.target || "OPTION" === e.target.nodeName || "OPTGROUP" === e.target.nodeName) {
if (t)
if (t.addedNodes && 0 < t.addedNodes.length)
for (var o = 0; o < t.addedNodes.length; o++) {
t.addedNodes[o].selected && (i = !0)
} else t.removedNodes && 0 < t.removedNodes.length && (i = !0);
else i = !0;
i && this.dataAdapter.current(function(e) {
n.trigger("selection:update", {
data: e
})
})
}
}, d.prototype.trigger = function(e, t) {
var i = d.__super__.trigger,
n = {
open: "opening",
close: "closing",
select: "selecting",
unselect: "unselecting"
};
if (void 0 === t && (t = {}), e in n) {
var o = n[e],
a = {
prevented: !1,
name: e,
args: t
};
if (i.call(this, o, a), a.prevented) return void(t.prevented = !0)
}
i.call(this, e, t)
}, d.prototype.toggleDropdown = function() {
this.options.get("disabled") || (this.isOpen() ? this.close() : this.open())
}, d.prototype.open = function() {
this.isOpen() || this.options.get("disabled") || this.trigger("query", {})
}, d.prototype.close = function() {
this.isOpen() && this.trigger("close", {})
}, d.prototype.isOpen = function() {
return this.$container.hasClass("select2-container--open")
}, d.prototype.hasFocus = function() {
return this.$container.hasClass("select2-container--focus")
}, d.prototype.focus = function(e) {
this.hasFocus() || (this.$container.addClass("select2-container--focus"), this.trigger("focus", {}))
}, d.prototype.enable = function(e) {
this.options.get("debug") && window.console && console.warn && console.warn('Select2: The `select2("enable")` method has been deprecated and will be removed in later Select2 versions. Use $element.prop("disabled") instead.'), null != e && 0 !== e.length || (e = [!0]);
var t = !e[0];
this.$element.prop("disabled", t)
}, d.prototype.data = function() {
this.options.get("debug") && 0 < arguments.length && window.console && console.warn && console.warn('Select2: Data can no longer be set using `select2("data")`. You should consider setting the value instead using `$element.val()`.');
var t = [];
return this.dataAdapter.current(function(e) {
t = e
}), t
}, d.prototype.val = function(e) {
if (this.options.get("debug") && window.console && console.warn && console.warn('Select2: The `select2("val")` method has been deprecated and will be removed in later Select2 versions. Use $element.val() instead.'), null == e || 0 === e.length) return this.$element.val();
var t = e[0];
o.isArray(t) && (t = o.map(t, function(e) {
return e.toString()
})), this.$element.val(t).trigger("change")
}, d.prototype.destroy = function() {
this.$container.remove(), this.$element[0].detachEvent && this.$element[0].detachEvent("onpropertychange", this._syncA), null != this._observer ? (this._observer.disconnect(), this._observer = null) : this.$element[0].removeEventListener && (this.$element[0].removeEventListener("DOMAttrModified", this._syncA, !1), this.$element[0].removeEventListener("DOMNodeInserted", this._syncS, !1), this.$element[0].removeEventListener("DOMNodeRemoved", this._syncS, !1)), this._syncA = null, this._syncS = null, this.$element.off(".select2"), this.$element.attr("tabindex", this.$element.data("old-tabindex")), this.$element.removeClass("select2-hidden-accessible"), this.$element.attr("aria-hidden", "false"), this.$element.removeData("select2"), this.dataAdapter.destroy(), this.selection.destroy(), this.dropdown.destroy(), this.results.destroy(), this.dataAdapter = null, this.selection = null, this.dropdown = null, this.results = null
}, d.prototype.render = function() {
var e = o('<span class="select2 select2-container"><span class="selection"></span><span class="dropdown-wrapper" aria-hidden="true"></span></span>');
return e.attr("dir", this.options.get("dir")), this.$container = e, this.$container.addClass("select2-container--" + this.options.get("theme")), e.data("element", this.$element), e
}, d
}), e.define("jquery-mousewheel", ["jquery"], function(e) {
return e
}), e.define("jquery.select2", ["jquery", "jquery-mousewheel", "./select2/core", "./select2/defaults"], function(o, e, a, t) {
if (null == o.fn.select2) {
var s = ["open", "close", "destroy"];
o.fn.select2 = function(t) {
if ("object" == typeof(t = t || {})) return this.each(function() {
var e = o.extend(!0, {}, t);
new a(o(this), e)
}), this;
if ("string" != typeof t) throw new Error("Invalid arguments for Select2: " + t);
var i, n = Array.prototype.slice.call(arguments, 1);
return this.each(function() {
var e = o(this).data("select2");
null == e && window.console && console.error && console.error("The select2('" + t + "') method was called on an element that is not using Select2."), i = e[t].apply(e, n)
}), -1 < o.inArray(t, s) ? this : i
}
}
return null == o.fn.select2.defaults && (o.fn.select2.defaults = t), a
}), {
define: e.define,
require: e.require
}
}(),
t = e.require("jquery.select2");
return i.fn.select2.amd = e, t
}),
function(s, r) {
var e = r.namespace(r, "common.widget.selectlist");
s.fn.select2 && (s.fn.select2.defaults.set("minimumResultsForSearch", 8), s.fn.select2.defaults.set("width", "resolve")), e.init = function(e, t) {
var i = s(e),
n = {
language: {
noResults: function() {
return r.common.translations.data.v18main.misc.noresults || "No results found"
}
}
},
o = {};
if (s.fn.select2 && !(-1 < i[0].className.indexOf("ibm-widget-processed"))) {
if (s(document.getElementsByClassName("ibm-common-overlay")).find("select:not([data-init=false]):not(.ibm-widget-processed):not(.ibm-selectlist-overlay)").addClass("ibm-selectlist-overlay"), !1 === (o = s.extend(!0, n, i.data() || {}, t)).searchenabled && (o.minimumResultsForSearch = -1), -1 === i[0].className.indexOf("ibm-selectlist-overlay")) i.css("width", i.outerWidth(!0) + 20), i.select2(o);
else {
var a = i.closest(".ibm-common-overlay").removeClass("ibm-common-overlay");
i.css("width", i.outerWidth(!0) + 20), i.select2(o), a.addClass("ibm-common-overlay")
}
i.data("widget", {
destroy: function() {
return i.removeClass("ibm-widget-processed").select2("destroy"), i
}
}), r.common.widget.manager.dispatchInitEvent(i[0])
}
}
}(jQuery, IBMCore),
function(a, s) {
s.namespace(s, "common.widget.selectlistnav");
var i = [];
function n(e) {
var t, i, n, o = this;
o.destroy = function() {
return n.off("change.selectlistnav").select2("destroy"), t.replaceWith(i), i
}, o.init = function(e) {
t = a(e), i = t.clone(!0), t.data("widget", o);
try {
if (0 === (n = t.find("select")).length) throw "The selectlistnav form must contain a selectlist element. Please add one.";
t.find("input.ibm-btn-go").remove(), n.on("change.selectlistnav", function() {
"" !== this.value && (window.location.href = this.value)
}), s.common.widget.manager.dispatchInitEvent(t[0])
} catch (e) {
throw e
}
}
}
a.fn.selectlistnav = function(t) {
return this.each(function() {
var e;
(e = new n(t), i.push(e), e).init(this)
})
}
}(jQuery, IBMCore),
function(h, f) {
f.namespace(f, "common.widget.showhide");
var i = [];
function g(e, t) {
f.common.util.statshelper.fireEvent({
ibmEV: "widget",
ibmEvGroup: "Showhide",
ibmEvName: e,
ibmEvAction: t
})
}
function n(t) {
var i, o, a, s, r = this,
l = {
type: "simple"
},
c = "fast",
d = "fast";
function u(e) {
var t = a.index(e) || 0;
e || (e = a), p(e, !1), o.eq(t).slideUp(c)
}
function m(e) {
var t = a.index(e) || 0;
e || (e = a), p(a.filter(".ibm-show-active"), !1), o.filter(":visible").slideUp(c), p(e, !0), o.eq(t).slideDown(d)
}
function p(e, t) {
t ? e.addClass("ibm-show-active").parent().addClass("ibm-showing") : e.removeClass("ibm-show-active").parent().removeClass("ibm-showing")
}
r.destroy = function() {
return o.css({
display: "block"
}), a.each(function() {
h(this).parent().html(h(this).html())
}), i.removeClass("ibm-show-hide ibm-widget-processed"), i
}, r.init = function(e) {
(i = h(e)).data("widget", r), "panel" === (s = h.extend({}, l, i.data() || {}, t)).type ? (o = i.find("div.ibm-container-body"), i.find(" > h2").not(":has('>a')").wrapInner('<a href="javascript:void();"></a>').children("a"), (a = i.find(" > h2 > a")).parent(":not([data-open='true'])").next(".ibm-container-body").css("display", "none"), p(a.parent("[data-open='true']").children(), !0), a.click(function(e) {
var t, i;
e.preventDefault(), -1 < this.className.indexOf("ibm-show-active") ? (u(h(this)), g("hide", h(this).text())) : (m(h(this)), t = h(this), i = a.index(t), o.eq(i).find(".ibm-widget-processed[data-widget='setsameheight']")[0] && o.eq(i).find(".ibm-widget-processed[data-widget='setsameheight']").each(function() {
h(this).data("widget").adjustHeights(!0)
}), g("show", h(this).text()))
})) : "simple" === s.type && (n = i.find(".ibm-hideable").css("display", "none"), i.find("p.ibm-show-hide-controls").on("click", "a", function(e) {
var t = h(this),
i = t.attr("href");
e.preventDefault(), h(e.delegateTarget).find(".ibm-active").removeClass("ibm-active"), t.addClass("ibm-active"), "#show" === i ? (n.slideDown(d), g("show descriptions", "descriptions widget")) : "#hide" === i && (n.slideUp(c), g("hide descriptions", "descriptions widget"))
}));
var n;
f.common.widget.manager.dispatchInitEvent(i[0])
}, r.hide = u, r.show = m
}
h.fn.showhide = function(t) {
return this.each(function() {
var e;
(e = new n(t), i.push(e), e).init(this)
})
}
}(jQuery, IBMCore),
function(h, f) {
f.namespace(f, "common.widget.stepindicator");
var i = [];
function n(t) {
var i, n, o, a, s, r, l, c = "ibm-step-container",
d = "ibm-active-completed",
u = "ibm-active-current",
m = "ibm-disabled",
p = this;
p.destroy = function() {
return i.next().replaceWith(o), i.replaceWith(n), n
}, p.init = function(e) {
i = h(e), n = i.clone(!0), i.data("widget", p), r = {
future_clickable: !1,
disable_previous: !0 === i.data("disableprevious"),
content: i.next(),
focus_index: -1
}, a = h("." + c, r.content), o = r.content.clone(!0), t = t || {}, l = i.find("li"), h.extend(!0, r, t), i.find("h2.ibm-access")[0] && i.find("h2.ibm-access").remove(), a.each(function() {
h(this).find("[data-step=next]").on("click", function() {
p.next()
}), h(this).find("[data-step=prev]").on("click", function() {
p.prev()
})
}), -1 === (s = p.getCurrentStep()) && (s = 0), p.goToStep(s), f.common.util.a11y.makeTabsAccessible({
el: i.children("ul")
}), l.each(function(i, e) {
h(e).find("a:eq(0)").click(function(e) {
var t = p.getCurrentStep() < i;
(!t || t && r.future_clickable) && !r.disable_previous && p.goToStep(i), e.preventDefault()
})
}), r.content.addClass("ibm-widget-processed"), f.common.widget.manager.dispatchInitEvent(i[0])
}, p.getCurrentStep = function() {
var i = -1;
return l.each(function(e, t) {
0 < h(t).find("." + u).length && (i = e)
}), i
}, p.totalSteps = function() {
return l.length
}, p.isOnFirst = function() {
return 0 === p.getCurrentStep()
}, p.isOnLast = function() {
return p.getCurrentStep() === p.totalSteps() - 1
}, p.goToStep = function(i) {
var n;
l.each(function(e, t) {
n = h(t).find("a:eq(0)"), r.disable_previous ? (n[e !== i ? "addClass" : "removeClass"](m), n[e === i ? "addClass" : "removeClass"](u)) : (n[e < i ? "addClass" : "removeClass"](d), n[e === i ? "addClass" : "removeClass"](u), n[i < e ? "addClass" : "removeClass"](m)), n[0].tabIndex = e === i ? (n.attr("aria-selected", !0), 0) : (n.attr("aria-selected", !1), -1)
}), a.each(function(e, t) {
h(t).css("display", e === i ? "block" : "none")
}), r.focus_index = i
}, p.next = function() {
p.isOnLast() || p.goToStep(p.getCurrentStep() + 1)
}, p.prev = function() {
p.isOnFirst() || p.goToStep(p.getCurrentStep() - 1)
}
}
h.fn.stepindicator = function(t) {
return this.each(function() {
var e;
(e = new n(t), i.push(e), e).init(this)
})
}
}(jQuery, IBMCore),
function(c, d) {
d.namespace(d, "common.widget.stickytabs");
var i = [];
function n(e) {
var t, i, n = this,
o = !1,
a = 0,
s = !1,
r = 0;
function l() {
a = c(window).scrollTop(), s || (r = t.offset().top), document.getElementsByClassName("ibm-masthead-sticky-showing")[0] && (a += 50), r < a ? s || (c(document.body).addClass("ibm-sticky-tabs"), s = !0) : s && (c(document.body).removeClass("ibm-sticky-tabs"), s = !1)
}
n.destroy = function() {
return clearInterval(t.data("widget").scrollInterval), c(window).off(".stickytabs"), i.remove(), c(document.body).removeClass("ibm-sticky-tabs"), t
}, n.init = function(e) {
(t = c(e)).data("widget", n), i = c('<div id="ibm-pritabs-ph"></div>').insertBefore(t), a = c(window).scrollTop(), r = t.offset().top, document.getElementById("ibm-pritabs-ph") || t.before('<div id="ibm-pritabs-ph"></div>'), c(window).on("scroll.stickytabs", function() {
o = !0
}), n.scrollInterval = setInterval(function() {
o && (o = !1, l())
}, 20), l(), d.common.widget.manager.dispatchInitEvent(t[0])
}
}
c.fn.stickytabs = function(t) {
return this.each(function() {
var e;
(e = new n(t), i.push(e), e).init(this)
})
}
}(jQuery, IBMCore),
function(a, e) {
e.namespace(e, "common.widget.syntaxhighlighter");
a.fn.syntaxhighlighter = function() {
return this.each(function() {
! function(e) {
var t = a(e),
i = t.clone(!0),
n = t.wrap('<div class="ibm-syntax-container"></div>').parent(),
o = t.data("maxheight");
window.SyntaxHighlighter.defaults.toolbar = !1, window.SyntaxHighlighter.defaults["auto-links"] = !1, window.SyntaxHighlighter.defaults.gutter = !1, n.data("widget", {
destroy: function() {
return n.replaceWith(i), i
}
}), "" !== e.id && (n[0].id = e.id);
t.attr("class") || t.attr("class", "brush: js; html-script: true");
t.html(t.html().replace(/</g, "<")), window.SyntaxHighlighter.highlight(window.SyntaxHighlighter.defaults, e), n.find("table").attr("role", "none"), o && n.find(".syntaxhighlighter").css({
"max-height": o,
"overflow-y": "auto"
})
}(this)
})
}
}(jQuery, IBMCore),
function(e) {
"function" == typeof define && define.amd ? define(["jquery"], e) : "object" == typeof exports ? module.exports = e(require("jquery")) : e(jQuery)
}(function(d) {
function o(e, t) {
this.element = e, this.$element = d(this.element), this.doc = d(document), this.win = d(window), this.settings = d.extend({}, l, t), "object" == typeof this.$element.data("tipso") && d.extend(this.settings, this.$element.data("tipso"));
for (var i = Object.keys(this.$element.data()), n = {}, o = 0; o < i.length; o++) {
var a = i[o].replace(r, "");
if ("" !== a)
for (var s in n[a = a.charAt(0).toLowerCase() + a.slice(1)] = this.$element.data(i[o]), this.settings) s.toLowerCase() == a && (this.settings[s] = n[a])
}
this._defaults = l, this._name = r, this._title = this.$element.attr("title"), this.mode = "hide", this.ieFade = !c, this.settings.preferedPosition = this.settings.position, this.init()
}
function u(e) {
var t = e.clone();
t.css("visibility", "hidden"), d("body").append(t);
var i = t.outerHeight(),
n = t.outerWidth();
return t.remove(), {
width: n,
height: i
}
}
function m(e) {
e.removeClass("top_right_corner bottom_right_corner top_left_corner bottom_left_corner"), e.find(".tipso_title").removeClass("top_right_corner bottom_right_corner top_left_corner bottom_left_corner")
}
function p(e) {
var t, i, n, o = e.tooltip(),
a = e.$element,
s = e,
r = d(window),
l = s.settings.background,
c = s.titleContent();
switch (void 0 !== c && "" !== c && (l = s.settings.titleBackground), a.parent().outerWidth() > r.outerWidth() && (r = a.parent()), s.settings.position) {
case "top-right":
i = a.offset().left + a.outerWidth(), t = a.offset().top - u(o).height - 10, o.find(".tipso_arrow").css({
marginLeft: -s.settings.arrowWidth,
marginTop: ""
}), t < r.scrollTop() ? (t = a.offset().top + a.outerHeight() + 10, o.find(".tipso_arrow").css({
"border-bottom-color": l,
"border-top-color": "transparent",
"border-left-color": "transparent",
"border-right-color": "transparent"
}), m(o), o.addClass("bottom_right_corner"), o.find(".tipso_title").addClass("bottom_right_corner"), o.find(".tipso_arrow").css({
"border-left-color": l
}), o.removeClass("top-right top bottom left right"), o.addClass("bottom")) : (o.find(".tipso_arrow").css({
"border-top-color": s.settings.background,
"border-bottom-color": "transparent ",
"border-left-color": "transparent",
"border-right-color": "transparent"
}), m(o), o.addClass("top_right_corner"), o.find(".tipso_arrow").css({
"border-left-color": s.settings.background
}), o.removeClass("top bottom left right"), o.addClass("top"));
break;
case "top-left":
i = a.offset().left - u(o).width, t = a.offset().top - u(o).height - 10, o.find(".tipso_arrow").css({
marginLeft: -s.settings.arrowWidth,
marginTop: ""
}), t < r.scrollTop() ? (t = a.offset().top + a.outerHeight() + 10, o.find(".tipso_arrow").css({
"border-bottom-color": l,
"border-top-color": "transparent",
"border-left-color": "transparent",
"border-right-color": "transparent"
}), m(o), o.addClass("bottom_left_corner"), o.find(".tipso_title").addClass("bottom_left_corner"), o.find(".tipso_arrow").css({
"border-right-color": l
}), o.removeClass("top-right top bottom left right"), o.addClass("bottom")) : (o.find(".tipso_arrow").css({
"border-top-color": s.settings.background,
"border-bottom-color": "transparent ",
"border-left-color": "transparent",
"border-right-color": "transparent"
}), m(o), o.addClass("top_left_corner"), o.find(".tipso_arrow").css({
"border-right-color": s.settings.background
}), o.removeClass("top bottom left right"), o.addClass("top"));
break;
case "bottom-right":
i = a.offset().left + a.outerWidth(), t = a.offset().top + a.outerHeight() + 10, o.find(".tipso_arrow").css({
marginLeft: -s.settings.arrowWidth,
marginTop: ""
}), t + u(o).height > r.scrollTop() + r.outerHeight() ? (t = a.offset().top - u(o).height - 10, o.find(".tipso_arrow").css({
"border-bottom-color": "transparent",
"border-top-color": s.settings.background,
"border-left-color": "transparent",
"border-right-color": "transparent"
}), m(o), o.addClass("top_right_corner"), o.find(".tipso_title").addClass("top_left_corner"), o.find(".tipso_arrow").css({
"border-left-color": s.settings.background
}), o.removeClass("top-right top bottom left right"), o.addClass("top")) : (o.find(".tipso_arrow").css({
"border-top-color": "transparent",
"border-bottom-color": l,
"border-left-color": "transparent",
"border-right-color": "transparent"
}), m(o), o.addClass("bottom_right_corner"), o.find(".tipso_title").addClass("bottom_right_corner"), o.find(".tipso_arrow").css({
"border-left-color": l
}), o.removeClass("top bottom left right"), o.addClass("bottom"));
break;
case "bottom-left":
i = a.offset().left - u(o).width, t = a.offset().top + a.outerHeight() + 10, o.find(".tipso_arrow").css({
marginLeft: -s.settings.arrowWidth,
marginTop: ""
}), t + u(o).height > r.scrollTop() + r.outerHeight() ? (t = a.offset().top - u(o).height - 10, o.find(".tipso_arrow").css({
"border-bottom-color": "transparent",
"border-top-color": s.settings.background,
"border-left-color": "transparent",
"border-right-color": "transparent"
}), m(o), o.addClass("top_left_corner"), o.find(".tipso_title").addClass("top_left_corner"), o.find(".tipso_arrow").css({
"border-right-color": s.settings.background
}), o.removeClass("top-right top bottom left right"), o.addClass("top")) : (o.find(".tipso_arrow").css({
"border-top-color": "transparent",
"border-bottom-color": l,
"border-left-color": "transparent",
"border-right-color": "transparent"
}), m(o), o.addClass("bottom_left_corner"), o.find(".tipso_title").addClass("bottom_left_corner"), o.find(".tipso_arrow").css({
"border-right-color": l
}), o.removeClass("top bottom left right"), o.addClass("bottom"));
break;
case "top":
i = a.offset().left + a.outerWidth() / 2 - u(o).width / 2, t = a.offset().top - u(o).height - 10, o.find(".tipso_arrow").css({
marginLeft: -s.settings.arrowWidth,
marginTop: ""
}), t < r.scrollTop() ? (t = a.offset().top + a.outerHeight() + 10, o.find(".tipso_arrow").css({
"border-bottom-color": l,
"border-top-color": "transparent",
"border-left-color": "transparent",
"border-right-color": "transparent"
}), o.removeClass("top bottom left right"), o.addClass("bottom")) : (o.find(".tipso_arrow").css({
"border-top-color": s.settings.background,
"border-bottom-color": "transparent",
"border-left-color": "transparent",
"border-right-color": "transparent"
}), o.removeClass("top bottom left right"), o.addClass("top"));
break;
case "bottom":
i = a.offset().left + a.outerWidth() / 2 - u(o).width / 2, t = a.offset().top + a.outerHeight() + 10, o.find(".tipso_arrow").css({
marginLeft: -s.settings.arrowWidth,
marginTop: ""
}), t + u(o).height > r.scrollTop() + r.outerHeight() ? (t = a.offset().top - u(o).height - 10, o.find(".tipso_arrow").css({
"border-top-color": s.settings.background,
"border-bottom-color": "transparent",
"border-left-color": "transparent",
"border-right-color": "transparent"
}), o.removeClass("top bottom left right"), o.addClass("top")) : (o.find(".tipso_arrow").css({
"border-bottom-color": l,
"border-top-color": "transparent",
"border-left-color": "transparent",
"border-right-color": "transparent"
}), o.removeClass("top bottom left right"), o.addClass(s.settings.position));
break;
case "left":
i = a.offset().left - u(o).width - 10, t = a.offset().top + a.outerHeight() / 2 - u(o).height / 2, o.find(".tipso_arrow").css({
marginTop: -s.settings.arrowWidth,
marginLeft: ""
}), i < r.scrollLeft() ? (i = a.offset().left + a.outerWidth() + 10, o.find(".tipso_arrow").css({
"border-right-color": s.settings.background,
"border-left-color": "transparent",
"border-top-color": "transparent",
"border-bottom-color": "transparent"
}), o.removeClass("top bottom left right"), o.addClass("right")) : (o.find(".tipso_arrow").css({
"border-left-color": s.settings.background,
"border-right-color": "transparent",
"border-top-color": "transparent",
"border-bottom-color": "transparent"
}), o.removeClass("top bottom left right"), o.addClass(s.settings.position));
break;
case "right":
i = a.offset().left + a.outerWidth() + 10, t = a.offset().top + a.outerHeight() / 2 - u(o).height / 2, o.find(".tipso_arrow").css({
marginTop: -s.settings.arrowWidth,
marginLeft: ""
}), i + 10 + s.settings.width > r.scrollLeft() + r.outerWidth() ? (i = a.offset().left - u(o).width - 10, o.find(".tipso_arrow").css({
"border-left-color": s.settings.background,
"border-right-color": "transparent",
"border-top-color": "transparent",
"border-bottom-color": "transparent"
}), o.removeClass("top bottom left right"), o.addClass("left")) : (o.find(".tipso_arrow").css({
"border-right-color": s.settings.background,
"border-left-color": "transparent",
"border-top-color": "transparent",
"border-bottom-color": "transparent"
}), o.removeClass("top bottom left right"), o.addClass(s.settings.position))
}("top-right" === s.settings.position && o.find(".tipso_arrow").css({
"margin-left": -s.settings.width / 2
}), "top-left" === s.settings.position) && o.find(".tipso_arrow").eq(0).css({
"margin-left": s.settings.width / 2 - 2 * s.settings.arrowWidth
});
"bottom-right" === s.settings.position && o.find(".tipso_arrow").eq(0).css({
"margin-left": -s.settings.width / 2,
"margin-top": ""
});
"bottom-left" === s.settings.position && o.find(".tipso_arrow").eq(0).css({
"margin-left": s.settings.width / 2 - 2 * s.settings.arrowWidth,
"margin-top": ""
});
i < r.scrollLeft() && ("bottom" === s.settings.position || "top" === s.settings.position) && (o.find(".tipso_arrow").css({
marginLeft: i - s.settings.arrowWidth
}), i = 0), i + s.settings.width > r.outerWidth() && ("bottom" === s.settings.position || "top" === s.settings.position) && (n = r.outerWidth() - (i + s.settings.width), o.find(".tipso_arrow").css({
marginLeft: -n - s.settings.arrowWidth,
marginTop: ""
}), i += n), i < r.scrollLeft() && ("left" === s.settings.position || "right" === s.settings.position || "top-right" === s.settings.position || "top-left" === s.settings.position || "bottom-right" === s.settings.position || "bottom-left" === s.settings.position) && (i = a.offset().left + a.outerWidth() / 2 - u(o).width / 2, o.find(".tipso_arrow").css({
marginLeft: -s.settings.arrowWidth,
marginTop: ""
}), (t = a.offset().top - u(o).height - 10) < r.scrollTop() ? (t = a.offset().top + a.outerHeight() + 10, o.find(".tipso_arrow").css({
"border-bottom-color": l,
"border-top-color": "transparent",
"border-left-color": "transparent",
"border-right-color": "transparent"
}), o.removeClass("top bottom left right"), m(o), o.addClass("bottom")) : (o.find(".tipso_arrow").css({
"border-top-color": s.settings.background,
"border-bottom-color": "transparent",
"border-left-color": "transparent",
"border-right-color": "transparent"
}), o.removeClass("top bottom left right"), m(o), o.addClass("top")), i + s.settings.width > r.outerWidth() && (n = r.outerWidth() - (i + s.settings.width), o.find(".tipso_arrow").css({
marginLeft: -n - s.settings.arrowWidth,
marginTop: ""
}), i += n), i < r.scrollLeft() && (o.find(".tipso_arrow").css({
marginLeft: i - s.settings.arrowWidth
}), i = 0)), i + s.settings.width > r.outerWidth() && ("left" === s.settings.position || "right" === s.settings.position || "top-right" === s.settings.position || "top-left" === s.settings.position || "bottom-right" === s.settings.position || "bottom-right" === s.settings.position) && (i = a.offset().left + a.outerWidth() / 2 - u(o).width / 2, o.find(".tipso_arrow").css({
marginLeft: -s.settings.arrowWidth,
marginTop: ""
}), (t = a.offset().top - u(o).height - 10) < r.scrollTop() ? (t = a.offset().top + a.outerHeight() + 10, o.find(".tipso_arrow").css({
"border-bottom-color": l,
"border-top-color": "transparent",
"border-left-color": "transparent",
"border-right-color": "transparent"
}), m(o), o.removeClass("top bottom left right"), o.addClass("bottom")) : (o.find(".tipso_arrow").css({
"border-top-color": s.settings.background,
"border-bottom-color": "transparent",
"border-left-color": "transparent",
"border-right-color": "transparent"
}), m(o), o.removeClass("top bottom left right"), o.addClass("top")), i + s.settings.width > r.outerWidth() && (n = r.outerWidth() - (i + s.settings.width), o.find(".tipso_arrow").css({
marginLeft: -n - s.settings.arrowWidth,
marginTop: ""
}), i += n), i < r.scrollLeft() && (o.find(".tipso_arrow").css({
marginLeft: i - s.settings.arrowWidth
}), i = 0)), o.css({
left: i + s.settings.offsetX,
top: t + s.settings.offsetY
}), t < r.scrollTop() && ("right" === s.settings.position || "left" === s.settings.position) && (a.tipso("update", "position", "bottom"), p(s)), t + u(o).height > r.scrollTop() + r.outerHeight() && ("right" === s.settings.position || "left" === s.settings.position) && (a.tipso("update", "position", "top"), p(s))
}
var r = "tipso",
l = {
speed: 400,
background: "#55b555",
titleBackground: "#333333",
color: "#ffffff",
titleColor: "#ffffff",
titleContent: "",
showArrow: !0,
position: "top",
width: 200,
maxWidth: "",
delay: 200,
hideDelay: 0,
animationIn: "",
animationOut: "",
offsetX: 0,
offsetY: 0,
arrowWidth: 8,
tooltipHover: !1,
content: null,
ajaxContentUrl: null,
ajaxContentBuffer: 0,
contentElementId: null,
useTitle: !1,
templateEngineFunc: null,
onBeforeShow: null,
onShow: null,
onHide: null
};
d.extend(o.prototype, {
init: function() {
var e = this,
t = this.$element;
if (this.doc, t.addClass("tipso_style").removeAttr("title"), e.settings.tooltipHover) {
var i = null,
n = null;
t.on("mouseover." + r, function() {
clearTimeout(i), clearTimeout(n), n = setTimeout(function() {
e.show()
}, 150)
}), t.on("mouseout." + r, function() {
clearTimeout(i), clearTimeout(n), i = setTimeout(function() {
e.hide()
}, 200), e.tooltip().on("mouseover." + r, function() {
e.mode = "tooltipHover"
}).on("mouseout." + r, function() {
e.mode = "show", clearTimeout(i), i = setTimeout(function() {
e.hide()
}, 200)
})
})
} else t.on("mouseover." + r, function() {
e.show()
}), t.on("mouseout." + r, function() {
e.hide()
});
e.settings.ajaxContentUrl && (e.ajaxContent = null)
},
tooltip: function() {
return this.tipso_bubble || (this.tipso_bubble = d('<div class="tipso_bubble"><div class="tipso_title"></div><div class="tipso_content"></div><div class="tipso_arrow"></div></div>')), this.tipso_bubble
},
show: function() {
var e = this.tooltip(),
t = this,
i = this.win;
!1 === t.settings.showArrow ? e.find(".tipso_arrow").hide() : e.find(".tipso_arrow").show(), "hide" === t.mode && (d.isFunction(t.settings.onBeforeShow) && t.settings.onBeforeShow(t.$element, t.element, t), t.settings.size && e.addClass(t.settings.size), t.settings.width ? e.css({
background: t.settings.background,
color: t.settings.color,
width: t.settings.width
}).hide() : t.settings.maxWidth ? e.css({
background: t.settings.background,
color: t.settings.color,
maxWidth: t.settings.maxWidth
}).hide() : e.css({
background: t.settings.background,
color: t.settings.color,
width: 200
}).hide(), e.find(".tipso_title").css({
background: t.settings.titleBackground,
color: t.settings.titleColor
}), e.find(".tipso_content").html(t.content()), e.find(".tipso_title").html(t.titleContent()), p(t), i.on("resize." + r, function() {
t.settings.position = t.settings.preferedPosition, p(t)
}), window.clearTimeout(t.timeout), t.timeout = null, t.timeout = window.setTimeout(function() {
t.ieFade || "" === t.settings.animationIn || "" === t.settings.animationOut ? e.appendTo("body").stop(!0, !0).fadeIn(t.settings.speed, function() {
t.mode = "show", d.isFunction(t.settings.onShow) && t.settings.onShow(t.$element, t.element, t)
}) : e.remove().appendTo("body").stop(!0, !0).removeClass("animated " + t.settings.animationOut).addClass("noAnimation").removeClass("noAnimation").addClass("animated " + t.settings.animationIn).fadeIn(t.settings.speed, function() {
d(this).one("webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend", function() {
d(this).removeClass("animated " + t.settings.animationIn)
}), t.mode = "show", d.isFunction(t.settings.onShow) && t.settings.onShow(t.$element, t.element, t), i.off("resize." + r, null, "tipsoResizeHandler")
})
}, t.settings.delay))
},
hide: function(e) {
var t = this,
i = this.win,
n = this.tooltip(),
o = t.settings.hideDelay;
e && (o = 0, t.mode = "show"), window.clearTimeout(t.timeout), t.timeout = null, t.timeout = window.setTimeout(function() {
"tooltipHover" !== t.mode && (t.ieFade || "" === t.settings.animationIn || "" === t.settings.animationOut ? n.stop(!0, !0).fadeOut(t.settings.speed, function() {
d(this).remove(), d.isFunction(t.settings.onHide) && "show" === t.mode && t.settings.onHide(t.$element, t.element, t), t.mode = "hide", i.off("resize." + r, null, "tipsoResizeHandler")
}) : n.stop(!0, !0).removeClass("animated " + t.settings.animationIn).addClass("noAnimation").removeClass("noAnimation").addClass("animated " + t.settings.animationOut).one("webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend", function() {
d(this).removeClass("animated " + t.settings.animationOut).remove(), d.isFunction(t.settings.onHide) && "show" === t.mode && t.settings.onHide(t.$element, t.element, t), t.mode = "hide", i.off("resize." + r, null, "tipsoResizeHandler")
}))
}, o)
},
close: function() {
this.hide(!0)
},
destroy: function() {
var e = this.$element,
t = this.win;
this.doc, e.off("." + r), t.off("resize." + r, null, "tipsoResizeHandler"), e.removeData(r), e.removeClass("tipso_style").attr("title", this._title)
},
titleContent: function() {
var e = this.$element;
return this.settings.titleContent ? this.settings.titleContent : e.data("tipso-title")
},
content: function() {
var e, t = this.$element,
i = this,
n = this._title;
return i.settings.ajaxContentUrl ? i._ajaxContent ? e = i._ajaxContent : (i._ajaxContent = e = d.ajax({
type: "GET",
url: i.settings.ajaxContentUrl,
async: !1
}).responseText, 0 < i.settings.ajaxContentBuffer ? setTimeout(function() {
i._ajaxContent = null
}, i.settings.ajaxContentBuffer) : i._ajaxContent = null) : i.settings.contentElementId ? e = d("#" + i.settings.contentElementId).text() : i.settings.content ? e = i.settings.content : !0 === i.settings.useTitle ? e = n : "string" == typeof t.data("tipso") && (e = t.data("tipso")), null !== i.settings.templateEngineFunc && (e = i.settings.templateEngineFunc(e)), e
},
update: function(e, t) {
return t ? void(this.settings[e] = t) : this.settings[e]
}
});
var c = function() {
var e = document.createElement("p").style,
t = ["ms", "O", "Moz", "Webkit"];
if ("" === e.transition) return !0;
for (; t.length;)
if (t.pop() + "Transition" in e) return !0;
return !1
}();
d[r] = d.fn[r] = function(t) {
var i, n = arguments;
return void 0 === t || "object" == typeof t ? (this instanceof d || d.extend(l, t), this.each(function() {
d.data(this, "plugin_" + r) || d.data(this, "plugin_" + r, new o(this, t))
})) : "string" == typeof t && "_" !== t[0] && "init" !== t ? (this.each(function() {
var e = d.data(this, "plugin_" + r);
e || (e = d.data(this, "plugin_" + r, new o(this, t))), e instanceof o && "function" == typeof e[t] && (i = e[t].apply(e, Array.prototype.slice.call(n, 1))), "destroy" === t && d.data(this, "plugin_" + r, null)
}), void 0 !== i ? i : this) : void 0
}
}),
function(s, r) {
r.namespace(r, "common.widget.tooltip");
var i = [],
e = "Tooltip";
function n(t) {
var i, n, o = this,
a = {
background: "#ececec",
color: "#323232",
contentid: "",
speed: 200,
useTitle: !0,
width: null,
maxWidth: 300
};
r.common.util.eventCoordinator(o, e, ["ready"]);
o.destroy = function() {
return i.removeClass("ibm-widget-processed").tipso("destroy"), i
}, o.init = function(e) {
(i = s(e)).data("widget", o), "" !== (n = s.extend({}, a, i.data() || {}, t)).contentid && (n.useTitle = !1, n.tooltipHover = !0, n.content = s(document.getElementById(n.contentid)).html()), i.tipso(n), i.on("click", function() {
i.tipso("hide")
}), r.common.widget.manager.dispatchInitEvent(i[0])
}
}
s.fn.tooltip = function(t) {
return this.each(function() {
var e;
(e = new n(t), i.push(e), e).init(this)
})
}
}(jQuery, IBMCore),
function(r, l) {
l.namespace(l, "common.widget.twisty");
var i = [];
function c(e, t) {
l.common.util.statshelper.fireEvent({
ibmEV: "widget",
ibmEvGroup: "Twisty",
ibmEvName: e,
ibmEvAction: t
})
}
function n(t) {
var i, n, o = this,
a = {};
function s(e, t) {
e.find("> a.ibm-twisty-trigger").text();
t ? e.addClass("ibm-active").find("> div.ibm-twisty-body").removeClass("ibm-hide") : e.removeClass("ibm-active").find("> div.ibm-twisty-body").addClass("ibm-hide")
}
o.destroy = function() {
return i.replaceWith(n), n
}, o.init = function(e) {
i = r(e), n = i.clone(!0), i.data("widget", o), r.extend({}, a, i.data() || {}, t), i.find("li").each(function() {
var e = r(this);
0 === e.find(" > a.ibm-twisty-trigger").length && 1 === e.find(" > .ibm-twisty-head").length && e.find(" > .ibm-twisty-head").replaceWith('<a class="ibm-twisty-trigger" href="javascript:void();">' + e.find(" > .ibm-twisty-head").html() + "</a>"), e.data("open") ? s(e, !0) : s(e, !1)
}), i.on("click.twisty", ".ibm-twisty-trigger, .ibm-twisty-head", function(e) {
var t, i;
e.preventDefault(), t = r(this).closest("li"), i = t.find("> a.ibm-twisty-trigger").text(), -1 < t[0].className.indexOf("ibm-active") ? (s(t, !1), c("collapse", i)) : (s(t, !0), c("expand", i))
}), l.common.widget.manager.dispatchInitEvent(i[0])
}, o.openTwisty = s
}
r.fn.twisty = function(t) {
return this.each(function() {
var e;
(e = new n(t), i.push(e), e).init(this)
})
}
}(jQuery, IBMCore),
function(r, l) {
l.namespace(l, "common.widget.videolooper");
var i = [];
function n(t) {
var i, n, o = this,
a = {
playtimes: 1
},
s = 1;
o.destroy = function() {
return i.removeClass("ibm-widget-processed").off(".videolooper"), i
}, o.init = function(e) {
(i = r(e)).data("widget", o), n = r.extend({}, a, i.data() || {}, t), s = n.playtimes, i.on("ended.videolooper", function() {
0 !== (s -= 1) && this.play()
}), l.common.widget.manager.dispatchInitEvent(i[0])
}
}
r.fn.videolooper = function(t) {
return this.each(function() {
var e;
(e = new n(t), i.push(e), e).init(this)
})
}
}(jQuery, IBMCore),
function(s, i) {
var r = i.namespace(i, "common.widget.videoplayer");
r.videos = [], r.object_name = "Videoplayer", s.fn.videoplayer = function(t) {
return this.each(function() {
var e = function(e, t) {
var i = {
videotype: "direct",
width: s(e).width()
},
n = s.extend(!0, i, s(e).data(), t, {
origEl: e
}),
o = {
appliedSettings: n,
init: function() {
window.console.warn("v18: Video player type is not valid on this element: ", n.origEl)
},
status: "Video player type is not valid."
};
switch (n.videotype) {
case "youtube":
o = new r.youtube.Player(n);
break;
case "kaltura":
o = new r.kaltura.Player(n);
break;
case "ustream":
o = new r.ustream.Player(n)
}
return o
}(this, t);
r.videos.push(e), s(this).data("widget", e), e.init()
})
}, r.columnsToClass = function(e) {
var t = "";
switch (e) {
case 6:
t = "ibm-col-6-1";
break;
case 5:
t = "ibm-col-5-1";
break;
case 3:
t = "ibm-col-6-2";
break;
case 4:
t = "ibm-col-4-1";
break;
case 2:
t = "ibm-col-6-3";
break;
case 1:
t = "ibm-col-1-1"
}
return t
}, r.createOverlay = function(e) {
var t = i.common.widget.overlay.createOverlay({
allowResize: !1,
backgroundcolor: "#000000",
classes: e.overlayclasses + " ibm-video-overlay",
contentHtml: " ",
fullwidth: e.theatermode,
hidexscroll: !0,
seamless: !0
});
return t.init(), t
}, r.createVideoCarousel = function(e, i) {
var t, n = e.split(","),
o = [];
function a(e) {
var t = "";
return s.each(e, function() {
t += '<div class="' + r.columnsToClass(i.carouselcolumns) + '"><div data-videoid="' + this + '"></div></div>'
}), t
}
for (; n.length >= i.carouselcolumns;) t = n.splice(0, i.carouselcolumns), o.push('<div class="ibm-columns">' + a(t) + "</div>");
0 < n.length && o.push('<div class="ibm-columns">' + a(n) + "</div>"), i.$origEl.html('<div data-widget="carousel">' + o.join(" ") + "</div>"), i.$origEl.find("[data-videoid]").each(function() {
var e = s(this);
s.extend(!0, e.data(), i.$origEl.data(), {
videotype: i.videotype,
videodisplay: "carousel-overlay" === i.videodisplay ? "overlayandtrigger" : "inline",
videoid: e.data().videoid
}), e.videoplayer(e.data())
}), i.$origEl.find("[data-widget='carousel']").carousel({
dots: !0,
arrows: !0
})
}, r.fireVideoEvent = function(e) {
var t, i = "n/a",
n = e.playerState,
o = Math.floor(e.currentTime),
a = Math.floor(e.duration),
s = Math.floor(o / a * 100);
switch (e.playerState) {
case 0:
i = "launched";
break;
case 1:
i = "paused";
break;
case 2:
i = "played";
break;
case 3:
i = "ended";
break;
case 99:
i = "error"
}
0 === o && (o = "start", s = "0"), (a <= o || 3 === e.playerState) && (o = "end", s = "100"), "end" === o && 1 === e.playerState || (t = {
type: "video",
primaryCategory: "VIDEO",
eventName: e.title,
eventCategoryGroup: e.playerType,
executionPath: e.videoId,
execPathReturnCode: i,
eventVidStatus: n,
eventVidTimeStamp: o,
eventVidLength: a,
eventVidPlayed: s + "%"
}, window.ibmStats.event(t))
}
}(jQuery, IBMCore),
function(k, C) {
var x = C.namespace(C, "common.widget.videoplayer.kaltura"),
T = {
dev: {
partnerId: 1511271,
uiConfId: {
title_sharing: 27801331
}
},
prod: {
partnerId: 1773841,
uiConfId: {
title_sharing: 27941801
}
},
embedVideo: {
dynamic: "https://cdnapisec.kaltura.com/p/{partnerId}/sp/{partnerId}00/embedIframeJs/uiconf_id/{uiConfId}/partner_id/{partnerId}"
},
images: {
video: "https://cfvod.kaltura.com/p/{partnerId}/sp/{partnerId}00/thumbnail/entry_id/{videoId}/version/100011/acv/191/width/{width}"
}
};
function S(e) {
return e.url.replace(/\{partnerId\}/g, T.prod.partnerId).replace(/\{uiConfId\}/g, E()).replace(/\{videoId\}/g, e.videoId).replace(/\{width\}/g, e.width).replace(/\{height\}/g, e.height)
}
function E() {
return T.prod.uiConfId.title_sharing
}
x.apiStatus = "", x.loadApi = function() {
if ("" === x.apiStatus) {
x.apiStatus = "loading";
var e = S({
url: T.embedVideo.dynamic
}),
t = document.createElement("script"),
i = document.getElementsByTagName("script")[0];
t.src = e, i.parentNode.insertBefore(t, i)
}
}, x.Player = function(t) {
var o = this,
i = C.common.util.eventCoordinator(o, "videoplayer", ["videoDataReady"]),
n = C.common.widget.videoplayer,
a = {},
s = {},
e = {
settings: {
carouselcolumns: 6,
customplaceholder: !1,
maxnumvideos: 20,
overlayclasses: "ibm-common-overlay ibm-overlay-alt",
overlayplayerwidth: 564,
overlayplayersize: "medium",
placeholderalttext: "",
showimageplaybutton: !0,
showvideodescription: !1,
showvideoduration: !0,
showvideotitle: !0,
theatermode: !1,
titledisplaytype: "below",
videodisplay: "inline",
videodurationcolor: "default",
videoid: "",
videoplaylistid: "",
videoratio: "16/9",
videotitleoverride: "",
videotype: "kaltura"
}
},
r = "ibm-video-placeholder",
l = {
dataPrefix: "playervar_",
defaults: {
autoplay: 1,
showinfo: 1
}
},
c = {};
function d(e) {
var t = Math.round(o.player.evaluate("{video.player.currentTime}"));
2 === e && 0 === t && (e = 0);
var i = {
playerType: "kaltura",
title: o.player.evaluate("{mediaProxy.entry.name}"),
currentTime: t,
duration: o.player.evaluate("{mediaProxy.entry.duration}"),
playerState: e,
videoId: s.videoid
};
i.customMetricsData = C.common.util.statshelper.getCustomEventParams(s.$origEl), n.fireVideoEvent(i)
}
function u() {
"large" === s.overlayplayersize ? (s.overlayplayerwidth = 745, s.overlayclasses = "ibm-common-overlay ibm-overlay-alt-two") : "xlarge" === s.overlayplayersize ? (s.overlayplayerwidth = 975, s.overlayclasses = "ibm-common-overlay ibm-overlay-alt-three") : (s.overlayplayerwidth = e.settings.overlayplayerwidth, s.overlayclasses = e.settings.overlayclasses)
}
function m(e, t) {
var i = "" !== s.videotitleoverride ? s.videotitleoverride : c.name,
n = t && "" !== t ? t : i;
e.attr("aria-label", "MediaCenter - " + n)
}
function p() {
i.subscribe("videoDataReady", "videoplayer", function() {
var e = "",
t = "",
i = "" !== s.videotitleoverride ? s.videotitleoverride : c.name,
n = "" !== s.placeholderalttext ? s.placeholderalttext : i;
c && (s.showvideoduration && (t = '<div class="ibm-video-duration"><p class="ibm-padding-bottom-0">' + c.formattedTime + "</p></div>"), s.showvideotitle && (e += '<div class="ibm-video-title ibm-bold"><p class="ibm-padding-bottom-0">' + i + "</p></div>"), s.showvideodescription && (e += '<p class="ibm-padding-bottom-0">' + c.description + "</p>"), "overlay" === s.titledisplaytype && "" !== t && "" !== e ? o.$trigger.append('<div class="ibm-video-info">' + t + e + "</div>") : ("" !== t && o.$trigger.append('<div class="ibm-video-info">' + t + "</div>"), s.$origEl.children("div").after(e)), o.$trigger.children("img").attr("alt", n))
})
}
function h(e) {
var t = s.videoratio.split("/");
return e / (t[0] / t[1])
}
function f(e) {
var t = o.overlay ? s.width : s.$origEl.width(),
i = S({
url: T.images.video,
videoId: e,
width: t
}),
n = k('<a href="#"></a>').html('<img src="' + i + '" width="100%" height="100%" alt="" />');
o.$trigger = s.customplaceholder ? s.$origEl.find("a") : n, o.$trigger.addClass(r), s.showimageplaybutton && g(o.$trigger)
}
function g(e) {
e.find("img").before('<span class="ibm-play-link"></span>').parent()
}
function v(e, t) {
var i = o.overlay ? h(s.width) : h(s.$origEl.width()),
n = E();
k(document.getElementById(e)).css("height", i), kWidget.embed({
targetId: e,
wid: "_" + T.prod.partnerId,
uiconf_id: n,
entry_id: t,
flashvars: {
autoPlay: a.autoplay,
"titleLabel.plugin": a.showtitle,
"share.plugin": a.showshare
},
params: {
wmode: "transparent"
},
readyCallback: function(e) {
o.player = k(document.getElementById(e)).get(0), o.player.addJsListener("playerPaused", function() {
o.player, d(1)
}), o.player.addJsListener("playerPlayed", function() {
o.player, d(2)
}), o.player.addJsListener("playerPlayEnd", function() {
o.player, d(3)
})
}
})
}
function b(e, t) {
new kWidget.api({
wid: "_" + T.prod.partnerId
}).doRequest({
service: "media",
action: "get",
entryId: e
}, function(e) {
e.formattedTime = C.common.util.convertSecondsToHMS(e.duration), c = e, i.publish("videoDataReady")
})
}
function y() {
o.overlay.show(), k(document.getElementById(s.playerContainerId)).children("iframe")[0] ? setTimeout(function() {
o.player.sendNotification("play")
}, 600) : v(s.playerContainerId, s.videoid)
}
function w() {
var e = s.videodisplay;
switch (0 === e.indexOf("carousel-") && (e = "carousel"), s.$origEl.addClass("ibm-video-player-con"), e) {
case "inline":
b(s.videoid), f(s.videoid), k('<div id="' + s.playerContainerId + '"></div>').appendTo(s.$origEl.empty()).html(o.$trigger), p(), i.subscribe("videoDataReady", "videoplayer", function() {
m(o.$trigger)
}).runAsap(function() {
m(o.$trigger)
}), o.$trigger.click(function(e) {
var t, i;
e.preventDefault(), t = s.playerContainerId, i = s.videoid, v(t, i), k(window).on("resize", function() {
var e = k(document.getElementById(s.playerContainerId)),
t = {
height: h(e.width()) + "px"
};
e.css(t).children("iframe").css(t)
}), C.common.widget.manager.dispatchInitEvent(s.$origEl[0])
});
break;
case "overlay":
b(s.videoid), u(), s.showvideoduration && i.subscribe("videoDataReady", "videoplayer", function() {
"none" !== s.videodurationcolor ? s.$origEl.append(' <span class="ibm-item-note">(' + c.formattedTime + ")</span>") : s.$origEl.append(" (" + c.formattedTime + ")")
}), o.overlay = n.createOverlay(s), o.overlay.setHtml('<div id="' + s.playerContainerId + '" style="margin:auto;width:100%;"></div>'), o.overlay.subscribe("hide", "Videoplayer", function() {
o.player.sendNotification("pause")
}), t.showimageplaybutton && (s.$origEl.addClass(r), g(s.$origEl)), s.width = s.overlayplayerwidth, i.subscribe("videoDataReady", "videoplayer", function() {
m(s.$origEl, s.$origEl.text())
}).runAsap(function() {
m(s.$origEl, s.$origEl.text())
}), s.$origEl.click(function(e) {
e.preventDefault(), y(), C.common.widget.manager.dispatchInitEvent(s.$origEl[0])
});
break;
case "overlayandtrigger":
b(s.videoid), u(), f(s.videoid), k("<div></div>").appendTo(s.$origEl.empty()).html(o.$trigger), p(), o.overlay = n.createOverlay(s), o.overlay.setHtml('<div id="' + s.playerContainerId + '"></div>'), o.overlay.subscribe("hide", "Videoplayer", function() {
o.player.sendNotification("pause")
}), s.width = s.overlayplayerwidth, i.subscribe("videoDataReady", "videoplayer", function() {
m(o.$trigger)
}).runAsap(function() {
m(o.$trigger)
}), o.$trigger.click(function(e) {
e.preventDefault(), y(), C.common.widget.manager.dispatchInitEvent(s.$origEl[0])
});
break;
case "carousel":
"" !== s.videoplaylistid ? window.console.log("v18: Video playlist for Kaltura aren't setup yet.") : -1 < s.videoid.indexOf(",") && n.createVideoCarousel(s.videoid, s);
break;
default:
C.common.util.debug.add("log", ["Video player display type unknown: ", s.$origEl])
}
}
k.extend(!0, s, e.settings, t), s.id = s.origEl.id || C.common.util.generateId(), s.playerContainerId = s.id + "_playercontainer", s.$origEl = k(s.origEl), s.$restoreEl = s.$origEl.clone(!0), k.extend(!0, a, l.defaults, C.common.util.getDataAttributes(s.$origEl, l.dataPrefix), l.force), k.each(a, function(e, t) {
"autoplay" !== e && "showinfo" !== e || (0 === t ? a[e] = !1 : 1 === t && (a[e] = !0))
}), !0 === a.showinfo ? (a.showtitle = !0, a.showshare = !0) : (a.showtitle = !1, a.showshare = !1), o.appliedPlayerVars = a, o.appliedSettings = s, o.player = {
status: "Kaltura player not created yet"
}, o.destroy = function() {
return o.overlay && o.overlay.destroy(), -1 < s.videodisplay.indexOf("carousel-") && s.$origEl.find(".ibm-video-player-con").each(function() {
k(this).data("widget").overlay && k(this).data("widget").overlay.destroy()
}), s.$origEl.replaceWith(s.$restoreEl), s.$restoreEl
}, o.init = function() {
"undefined" == typeof kWidget ? (C.common.util.queue.push(function() {
return "undefined" != typeof kWidget
}, function() {
x.apiStatus = "ready", w()
}), x.loadApi()) : w()
}, o.showOverlayAndPlay = y, o.playVideo = function() {
o.player.sendNotification && o.player.sendNotification("doPlay")
}, o.playVideoAt = function(e) {
o.player.sendNotification && o.player.sendNotification("doSeek", e)
}, o.pauseVideo = function() {
o.player.sendNotification && o.player.sendNotification("doPause")
}, o.stopVideo = function() {
o.player.sendNotification && o.player.sendNotification("doStop")
}
}
}(jQuery, IBMCore),
function(x, T) {
var S = T.namespace(T, "common.widget.videoplayer.youtube");
S.apiStatus = "", S.loadApi = function() {
if ("" === S.apiStatus) {
S.apiStatus = "loading";
var e = document.createElement("script"),
t = document.getElementsByTagName("script")[0];
e.src = "https://www.youtube.com/iframe_api", t.parentNode.insertBefore(e, t)
}
}, S.Player = function(t) {
var a = this,
n = T.common.util.eventCoordinator(a, "videoplayer", ["videoDataReady"]),
o = T.common.widget.videoplayer,
e = "AIzaSyBTFvNiIb-zSVRn1_awMe7rldBa8zhjXwA",
s = {
images: {
video: {
thumbnail: "https://i.ytimg.com/vi/{videoId}/default.jpg",
medium: "https://i.ytimg.com/vi/{videoId}/hqdefault.jpg",
large: "https://i.ytimg.com/vi/{videoId}/maxresdefault.jpg"
}
},
playlistVideos: "https://www.googleapis.com/youtube/v3/playlistItems?part=contentDetails&maxResults={maxResults}&playlistId={playlistId}&key=" + e,
videoInfo: "https://www.googleapis.com/youtube/v3/videos?part=contentDetails,snippet&id={videoId}&key=" + e,
videoDuration: "https://www.googleapis.com/youtube/v3/videos?part=contentDetails,snippet&id={videoId}&key=" + e
},
r = {},
l = {},
c = {
events: {
onStateChange: function(e) {
var t = function(e) {
var t = 1111;
switch (e.data) {
case 0:
t = 3;
break;
case 1:
t = 0 === Math.round(e.target.getCurrentTime()) ? 0 : 2;
break;
case 2:
t = 1;
break;
default:
t = 9999
}
return t
}(e),
i = {
playerType: "youtube",
title: e.target.getVideoData().title,
currentTime: e.target.getCurrentTime(),
duration: e.target.getDuration(),
playerState: t,
videoId: l.videoid
};
i.customMetricsData = T.common.util.statshelper.getCustomEventParams(l.$origEl), o.fireVideoEvent(i), 1 === e.data && x(".ibm-widget-processed[data-widget='videoplayer']").each(function() {
if (this !== l.$origEl[0]) try {
x(this).data("widget").pauseVideo()
} catch (e) {}
})
},
onError: function(e) {
var t = {
title: e.target.getVideoData().title,
currentTime: "0",
duration: e.target.getDuration(),
playerState: 99
};
t.customMetricsData = T.common.util.statshelper.getCustomEventParams(l.$origEl), o.fireVideoEvent(t)
}
},
settings: {
autoplay: !1,
carouselcolumns: 6,
customplaceholder: !1,
imagesize: "large",
maxnumvideos: 20,
overlayclasses: "ibm-common-overlay ibm-overlay-alt",
overlayplayerwidth: 564,
overlayplayersize: "medium",
placeholderalttext: "",
showimageplaybutton: !0,
showvideodescription: !1,
showvideoduration: !0,
showvideotitle: !0,
theatermode: !1,
titledisplaytype: "below",
videodisplay: "inline",
videodurationcolor: "default",
videoid: "",
videoplaylistid: "",
videoratio: "16/9",
videotitleoverride: "",
videotype: "youtube"
}
},
d = "ibm-video-placeholder",
i = {
dataPrefix: "playervar_",
defaults: {
autoplay: 1,
hl: T.common.meta.page.pageInfo.language.toLowerCase(),
iv_load_policy: 3,
listType: "playlist",
origin: document.location.protocol + "//" + document.location.host,
rel: 0,
showinfo: 1
},
force: {
controls: 1,
modestbranding: 0,
theme: "dark"
}
},
u = {};
function m() {
"large" === l.overlayplayersize ? (l.overlayplayerwidth = 745, l.overlayclasses = "ibm-common-overlay ibm-overlay-alt-two") : "xlarge" === l.overlayplayersize ? (l.overlayplayerwidth = 975, l.overlayclasses = "ibm-common-overlay ibm-overlay-alt-three") : (l.overlayplayerwidth = c.settings.overlayplayerwidth, l.overlayclasses = c.settings.overlayclasses)
}
function p(e, t) {
var i = "" !== l.videotitleoverride ? l.videotitleoverride : u.items[0].snippet.title,
n = t && "" !== t ? t : i;
e.attr("aria-label", "Youtube - " + n)
}
function h() {
n.subscribe("videoDataReady", "videoplayer", function() {
var e = u;
if (e.items[0]) {
var t = "",
i = "",
n = "" !== l.videotitleoverride ? l.videotitleoverride : e.items[0].snippet.title,
o = "" !== l.placeholderalttext ? l.placeholderalttext : n;
l.showvideoduration && (i = '<div class="ibm-video-duration"><p class="ibm-padding-bottom-0">' + e.formattedTime + "</p></div>"), l.showvideotitle && (t += '<div class="ibm-video-title ibm-bold"><p class="ibm-padding-bottom-0">' + n + "</p></div>"), l.showvideodescription && (t += '<p class="ibm-padding-bottom-0">' + e.items[0].snippet.description + "</p>"), "overlay" === l.titledisplaytype && "" !== i && "" !== t ? a.$trigger.append('<div class="ibm-video-info">' + i + t + "</div>") : ("" !== i && a.$trigger.append('<div class="ibm-video-info">' + i + "</div>"), l.$origEl.children("div").after(t)), a.$trigger.children("img").attr("alt", o)
}
})
}
function f(e) {
var t = l.videoratio.split("/");
return e / (t[0] / t[1])
}
function g() {
u.items[0].snippet.thumbnails.maxres || a.$trigger.find("img").attr("src", u.items[0].snippet.thumbnails.medium.url)
}
function v(e) {
var t = s.images.video[l.imagesize] || s.images.video.large,
i = x('<a href="#"></a>').html('<img src="' + t.replace("{videoId}", e) + '" width="100%" height="100%" alt="" />');
a.$trigger = l.customplaceholder ? l.$origEl.find("a") : i, l.customplaceholder || n.subscribe("videoDataReady", "videoplayer", g).runAsap(g), a.$trigger.addClass(d), l.showimageplaybutton && b(a.$trigger)
}
function b(e) {
e.find("img").before('<span class="ibm-play-link"></span>').parent()
}
function y(t, i) {
var n = a.overlay ? f(l.width) : f(l.$origEl.width());
YT.ready(function() {
var e = new YT.Player(t[0], {
videoId: i,
width: l.theatermode ? l.width : "100%",
height: n,
host: "https://www.youtube-nocookie.com",
playerVars: r,
events: c.events
});
a.player = e
})
}
function w(e, t) {
x.getJSON(s.videoInfo.replace("{videoId}", e)).done(function(e) {
var t, i;
0 < e.items.length && (e.formattedTime = (t = e.items[0].contentDetails.duration, -1 === (i = (t.match(/(\d+)(?=[MHS])/gi) || []).map(function(e) {
return e.length < 2 ? "0" + e : e
}).join(":")).indexOf(":") && (t.indexOf("M") < 0 ? i = "00:" + i : i += ":00"), i)), u = e, n.publish("videoDataReady")
})
}
function k() {
a.overlay.show(), x("div#" + l.id + "-tmpcon")[0] ? y(x("div#" + l.id + "-tmpcon"), l.videoid) : setTimeout(function() {
a.player.playVideo()
}, 600)
}
function C() {
var e = l.videodisplay;
switch (0 === e.indexOf("carousel-") && (e = "carousel"), l.$origEl.addClass("ibm-video-player-con"), e) {
case "inline":
w(l.videoid), v(l.videoid), x("<div></div>").appendTo(l.$origEl.empty()).html(a.$trigger), h(), l.$origEl.closest(".ibm-widget-processed[data-widget='setsameheight']")[0] && l.$origEl.closest(".ibm-widget-processed[data-widget='setsameheight']").data("widget").adjustHeights(!0), n.subscribe("videoDataReady", "videoplayer", function() {
p(a.$trigger)
}).runAsap(function() {
p(a.$trigger)
}), a.$trigger.click(function(e) {
var t, i;
e.preventDefault(), t = l.$origEl.children("div"), i = l.videoid, y(t, i), x(window).on("resize", function() {
var e = x(a.player.getIframe()),
t = f(e.parent().width());
e.attr("height", t + "px")
}), T.common.widget.manager.dispatchInitEvent(l.$origEl[0])
}), l.autoplay && a.$trigger.trigger("click");
break;
case "overlay":
w(l.videoid), m(), l.showvideoduration && n.subscribe("videoDataReady", "videoplayer", function() {
"none" !== l.videodurationcolor ? l.$origEl.append(' <span class="ibm-item-note">(' + u.formattedTime + ")</span>") : l.$origEl.append(" (" + u.formattedTime + ")")
}), a.overlay = o.createOverlay(l), a.overlay.setHtml('<div id="' + l.id + '-tmpcon"></div>'), a.overlay.subscribe("hide", "Videoplayer", function() {
a.player.pauseVideo()
}), t.showimageplaybutton && (l.$origEl.addClass(d), b(l.$origEl)), l.width = l.overlayplayerwidth, n.subscribe("videoDataReady", "videoplayer", function() {
p(l.$origEl, l.$origEl.text())
}).runAsap(function() {
p(l.$origEl, l.$origEl.text())
}), l.$origEl.click(function(e) {
e.preventDefault(), k(), T.common.widget.manager.dispatchInitEvent(l.$origEl[0])
});
break;
case "overlayandtrigger":
w(l.videoid), m(), v(l.videoid), x("<div></div>").appendTo(l.$origEl.empty()).html(a.$trigger), h(), l.$origEl.closest(".ibm-widget-processed[data-widget='setsameheight']")[0] && l.$origEl.closest(".ibm-widget-processed[data-widget='setsameheight']").data("widget").adjustHeights(!0), a.overlay = o.createOverlay(l), a.overlay.setHtml('<div id="' + l.id + '-tmpcon"></div>'), a.overlay.subscribe("hide", "Videoplayer", function() {
a.player.pauseVideo()
}), l.width = l.overlayplayerwidth, n.subscribe("videoDataReady", "videoplayer", function() {
p(a.$trigger)
}).runAsap(function() {
p(a.$trigger)
}), a.$trigger.click(function(e) {
e.preventDefault(), k(), T.common.widget.manager.dispatchInitEvent(l.$origEl[0])
});
break;
case "carousel":
"" !== l.videoplaylistid ? x.getJSON(s.playlistVideos.replace("{playlistId}", l.videoplaylistid).replace("{maxResults}", l.maxnumvideos)).done(function(e) {
var t = "";
x.each(e.items, function() {
t += "," + this.contentDetails.videoId
}), t = t.substring(1), o.createVideoCarousel(t, l)
}) : -1 < l.videoid.indexOf(",") && o.createVideoCarousel(l.videoid, l);
break;
default:
T.common.util.debug.add("log", ["Video player display type unknown: ", l.$origEl])
}
}
x.extend(!0, l, c.settings, t), l.id = l.origEl.id || T.common.util.generateId(), l.$origEl = x(l.origEl), l.$restoreEl = l.$origEl.clone(!0), x.extend(!0, r, i.defaults, T.common.util.getDataAttributes(l.$origEl, i.dataPrefix), i.force), a.appliedPlayerVars = r, a.appliedSettings = l, "" !== a.appliedSettings.videoplaylistid && (a.appliedPlayerVars.list = a.appliedSettings.videoplaylistid), a.player = {
status: "YT.player not created yet"
}, a.destroy = function() {
return a.overlay && a.overlay.destroy(), -1 < l.videodisplay.indexOf("carousel-") && l.$origEl.find(".ibm-video-player-con").each(function() {
x(this).data("widget").overlay && x(this).data("widget").overlay.destroy()
}), l.$origEl.replaceWith(l.$restoreEl), l.$restoreEl
}, a.init = function() {
var t, e;
"undefined" == typeof YT ? (t = T.common.util.queue.push(function() {
return "undefined" != typeof YT
}, function() {
clearTimeout(e), S.apiStatus = "ready", C()
}), e = setTimeout(function() {
var e;
T.common.util.queue.remove(t), window.console.warn("YouTube API took to long. Falling back to Kaltura."), (e = l.$origEl.data("kalturaFallbackid")) && "" !== e && (T.common.util.debug.add("log", "Switching " + l.$origEl + " to Kaltura fallback ID " + e), l.$origEl.data({
videotype: "kaltura",
videoid: e
}).videoplayer())
}, 3e3), S.loadApi()) : C()
}, a.showOverlayAndPlay = k, a.playVideo = function() {
a.player.playVideo && a.player.playVideo()
}, a.playVideoAt = function(e) {
a.player.playVideo && (a.player.seekTo(e), a.player.playVideo())
}, a.pauseVideo = function() {
a.player.pauseVideo && a.player.pauseVideo()
}, a.stopVideo = function() {
a.player.stopVideo && a.player.stopVideo()
}
}
}(jQuery, IBMCore);
var UstreamEmbed = function() {
var v = void 0 !== Object.keys,
b = {},
t = new RegExp("^(http(?:s)?://[^/]+)", "im");
function e(e) {
return function(e) {
var t = y(e),
i = function(a) {
var i, s, r, l, c = !1,
d = !1,
u = [],
m = {},
o = {},
p = [];
function n(e) {
if ("socialstream" !== e) {
if (!c) return u || (u = []), void u.push(arguments);
var t, i = (t = arguments, Array.prototype.slice.call(t, 0)).slice(1);
i[0] && "function" == typeof i[0] && (m[e] || (m[e] = []), m[e].push(i[0])), x(a, s, {
cmd: e,
args: i
})
} else if (S(window, "message", h), l = y(arguments[1]), r = T(l.getAttribute("src")), d = !0, p.length)
for (var n = 0, o = p.length; n < o; n++) C(p[n])
}
function h(e) {
var t = l;
t && t.contentWindow && t.contentWindow === e.source ? i.onmessage(e) : e.source === l.id && i.onmessage(e)
}
function f(e) {
var t, i = JSON.parse(e.data);
i.cmd && "ready" == i.cmd ? x(l, r, {
cmd: "ready"
}) : (t = (t = [i.cmd]).concat(i.args), n.apply(this, t))
}
function g() {
c = !0, x(a, s, {
cmd: "apihandshake",
args: []
}),
function() {
if (u) {
for (; u.length;) n.apply(this, u.shift());
u = null
}
}(), l && x(l, r, {
cmd: "viewer_ready"
})
}
function e() {
n.apply(this, arguments)
}
return s = T(a.getAttribute("src")).toLowerCase(), a.onload = function() {
x(a, s, {
cmd: "ready"
})
}, i = {
host: s,
callMethod: e,
getProperty: function() {
e.apply(this, arguments)
},
addListener: function(e, t) {
o[e] || (o[e] = []), o[e].push(t)
},
removeListener: function(e, t) {
if (t)
for (var i = 0, n = o[e].length; i < n; i++) o[e][i] === t && o[e].splice(i, 1);
else o[e] = null
},
onmessage: function(e) {
var t;
if (s || r || p.push({
origin: e.origin,
data: e.data
}), e.origin.toLowerCase() == s) {
try {
t = JSON.parse(e.data)
} catch (e) {
return
}
if (t.sstream) return void f(e);
if (t.event && t.event.ready && (g(), w(o, "ready")), t.event && !0 === t.event.live) return void w(o, "live");
if (t.event && !1 === t.event.live) return void w(o, "offline");
if (t.event && !t.event.ready)
if (v) Object.keys(t.event).forEach(function(e) {
w(o, e, t.event[e])
});
else
for (var i in t.event) t.event.hasOwnProperty(i) && w(o, i, t.event[i]);
if (t.property)
if (v) Object.keys(t.property).forEach(function(e) {
k(m, e, t.property[e])
});
else
for (var i in t.property) t.property.hasOwnProperty(i) && k(m, i, t.property[i])
} else if (d && e.origin == r) return void f(e)
},
destroy: function() {
d = c = !1, r = s = "", l = null, u = [], m = {}, o = {}, p = [], b[a.id] && (b[a.id] = null), a = null
}
}
}(t);
t.id || (t.id = "UstreamEmbed" + Math.ceil(1e5 * Math.random()));
return i.id = t.id, b[t.id] = i
}(e)
}
function y(e) {
return "string" == typeof e && (e = document.getElementById(e)), e
}
function w(e, t, i) {
for (var n in e[t]) e[t].hasOwnProperty(n) && e[t][n].call(window, t, i)
}
function k(e, t, i) {
if (e[t]) {
var n = e[t];
e[t] = null, delete e[t], n.forEach(function(e) {
e.call(window, i)
})
}
}
function C(e) {
var t, i;
for (t in b) b.hasOwnProperty(t) && b[t] && ((i = document.getElementById(t)) && i.contentWindow ? i.contentWindow === e.source && b[t].onmessage(e) : "string" == typeof e.source && e.source == t && b[t].onmessage(e))
}
function x(e, t, i) {
e.contentWindow.postMessage(JSON.stringify(i), t)
}
function T(e) {
return e.indexOf("http") < 0 && (e = location.protocol + e), e.match(t)[1].toString()
}
function S(e, t, i) {
e.addEventListener ? e.addEventListener(t, i, !1) : e.attachEvent("on" + t, i)
}
return S(window, "message", C), "function" == typeof define && define.amd && define([], function() {
return e
}), window.UstreamEmbed = e
}();
! function(p, h) {
h.namespace(h, "common.widget.videoplayer.ustream").Player = function(t) {
var n, o = this,
a = h.common.widget.videoplayer,
s = {},
i = {
settings: {
autoplay: !1,
customplaceholder: !1,
overlayclasses: "ibm-common-overlay ibm-overlay-alt",
overlayplayerwidth: 554,
overlayplayersize: "medium",
recorded: !1,
showimageplaybutton: !0,
showtitle: !0,
videodisplay: "inline",
videoid: ""
}
},
r = "ibm-video-placeholder";
function l(e, t) {
if (n !== t) {
n = t;
var i = {
playerType: "ustream",
title: o.appliedSettings.videoid,
currentTime: 0,
duration: 0,
playerState: t ? 2 : 1,
videoId: o.appliedSettings.videoid
};
i.customMetricsData = h.common.util.statshelper.getCustomEventParams(s.$origEl), a.fireVideoEvent(i)
}
}
function c(e) {
u(e)
}
function d(e) {
e.find("img").before('<span class="ibm-play-link"></span>').parent()
}
function u(e) {
var t = "",
i = "//www.ustream.tv/embed/";
s.autoplay && (t += "&autoplay=true"), s.showtitle || (t += "&showtitle=false"), s.recorded && (i += "recorded/");
var n = p('<div style="padding-bottom:56.25%; position:relative; display:block; width: 100%"><iframe src="' + i + s.videoid + "?html5ui=1" + t + '" width="100%" height="100%" frameborder="0" style="position:absolute; top:0; left: 0" allowfullscreen webkitallowfullscreen></iframe></div>');
o.player = window.UstreamEmbed(n.appendTo(e.empty()).children("iframe")[0]), o.player.addListener("playing", l)
}
function m() {
o.overlay.show(), document.getElementById(s.id + "-tmpcon") ? (s.autoplay = !0, u(p(document.getElementById(s.id + "-tmpcon")).parent())) : setTimeout(function() {
o.playVideo()
}, 300)
}
p.extend(!0, s, i.settings, t), s.id = s.origEl.id || h.common.util.generateId(), s.$origEl = p(s.origEl), s.$restoreEl = s.$origEl.clone(!0), o.appliedSettings = s, o.player = {
status: "uStream player not created yet"
}, o.destroy = function() {
return o.overlay && o.overlay.destroy(), s.$origEl.replaceWith(s.$restoreEl), s.$restoreEl
}, o.init = function() {
! function() {
var e = s.videodisplay;
0 === e.indexOf("carousel-") && (e = "carousel");
switch (s.$origEl.addClass("ibm-video-player-con"), e) {
case "inline":
s.customplaceholder ? (s.customplaceholder && (o.$trigger = s.$origEl.find("a"), o.$trigger.addClass(r), s.showimageplaybutton && d(o.$trigger)), p("<div></div>").appendTo(s.$origEl.empty()).html(o.$trigger), o.$trigger.click(function(e) {
e.preventDefault(), s.autoplay = !0, c(p(" > div", s.$origEl)), h.common.widget.manager.dispatchInitEvent(s.$origEl[0])
})) : (c(s.$origEl), h.common.widget.manager.dispatchInitEvent(s.$origEl[0])), s.autoplay && o.$trigger.trigger("click");
break;
case "overlay":
"large" === s.overlayplayersize ? s.overlayclasses = "ibm-common-overlay ibm-overlay-alt-two" : "xlarge" === s.overlayplayersize ? s.overlayclasses = "ibm-common-overlay ibm-overlay-alt-three" : s.overlayclasses = i.settings.overlayclasses, o.overlay = a.createOverlay(s), o.overlay.setHtml('<div id="' + s.id + '-tmpcon"></div>'), t.showimageplaybutton && (s.$origEl.addClass(r), d(s.$origEl)), s.$origEl.click(function(e) {
e.preventDefault(), m(), h.common.widget.manager.dispatchInitEvent(s.$origEl[0])
}), o.overlay.subscribe("hide", "Videoplayer", function() {
o.pauseVideo()
});
break;
default:
h.common.util.debug.add("log", ["Video player display type unknown: ", s.$origEl])
}
}()
}, o.showOverlayAndPlay = m, o.playVideo = function() {
o.player.callMethod && o.player.callMethod("play")
}, o.playVideoAt = function(e) {
o.player.callMethod && o.player.callMethod("seek", e)
}, o.pauseVideo = function() {
o.player.callMethod && o.player.callMethod("pause")
}, o.stopVideo = function() {
o.player.callMethod && o.player.callMethod("stop")
}
}
}(jQuery, IBMCore),
function(p, h) {
var s, f, i, e = h.namespace(h, "common.widget.surveyccfintercept"),
u = {
global_minimum_wait: 30,
interceptDisp: "pageLoad",
surveyDisp: "immediate",
anon: "true",
anonData: {
userName: "",
userEmail: "",
emailInfoLoaded: !1
},
percent: 0,
start: "",
stop: "",
presentDelay: 45,
invitation: {
title: "Tell IBM what you think",
content: "Would you please take 1 minute to take this survey?",
yes_label: "Yes",
no_label: "No thanks"
},
survey: {
type: "medallia",
id: "web-exp",
width: 700,
height: 700,
metaData: ""
}
},
m = {
intercept: {
enabled: !0,
percent: 0,
start: "Jul 27 2016",
stop: "Jul 27 2099",
invitation: {
title: "Tell IBM what you think",
content: "Would you please take a minute to send IBM your feedback?",
yes_label: "Yes",
no_label: "No Thanks"
},
survey: {
type: "medallia",
id: "web-exp",
width: 970,
height: 700
}
}
},
r = "",
k = null,
l = null,
g = {
randNum: 100 * Math.random(),
globalDefault: null,
pageCustom: null,
pageAlt: null
},
C = [],
x = location.href.replace(location.protocol + "//", ""),
v = IBMCore.www.module.truste.getUiAllowedStorageTtl(2592e3),
T = {
en: "enus",
de: "dede",
es: "esco",
fr: "frfr",
it: "itit",
pt: "ptbr",
ko: "kokr",
ja: "jajp",
ru: "ruru",
zh: "zhcn",
tr: "trtr"
};
function b(e) {
if (e) {
var t = e.cookie_name = "ccf-" + e.survey.type + ":" + e.survey.id;
e.isActive = (a = e.start, s = !1, r = new Date, new Date(a) < r && (s = !0), s && (i = e.stop, n = !1, o = new Date, new Date(i) < o && (n = !0), !n) && e.enabled && 0 !== e.percent), e.seen = null !== h.common.util.cookie.get(t)
}
var i, n, o, a, s, r;
return e
}
function y() {
i = function() {
var e = IBMCore.common.meta.page.pageInfo.ibm,
t = e.lc,
i = "enus";
if (t) {
var n = t + e.cc; - 1 < ["eses", "zhtw", "frca"].indexOf(n) ? i = n : T[t] && (i = T[t])
}
return i
}(), (k = p.extend(!0, u, h.common.util.config.get("survey.intercept"))).cookie_name = "ccf-" + k.survey.type + "-" + k.survey.id,
function() {
var e = "",
t = function() {
var t, e, i, n, o = [],
a = k.survey.metaData,
s = window.digitalData.page,
r = s.category.ibm,
l = s.pageInfo.ibm;
if ("medallia" === k.survey.type.toLowerCase()) {
o.push("tstamp=" + (f = new Date, g = f.getUTCDate() < 10 ? "0" + f.getUTCDate() : f.getUTCDate(), v = f.getUTCHours() < 10 ? "0" + (f.getUTCMonth() + 1) : f.getUTCMonth() + 1, b = f.getUTCHours() < 10 ? "0" + f.getUTCHours() : f.getUTCHours(), y = f.getUTCMinutes() < 10 ? "0" + f.getUTCMinutes() : f.getUTCMinutes(), w = f.getUTCSeconds() < 10 ? "0" + f.getUTCSeconds() : f.getUTCSeconds(), f.getUTCFullYear() + "-" + v + "-" + g + " " + b + ":" + y + ":" + w));
try {
t = IBMCore.common.meta.page.pageInfo.language.split("-")
} catch (e) {
t = ["en-US"].split("-")
}
var c;
c = l.country && "WW" !== s.country ? l.country : "US", o.push(I("country", c.toUpperCase(), "US"));
var d = Object.keys(T);
if (-1 < d.indexOf(t[0].toLowerCase()) ? "ca" === c || "tw" === c || "co" === c ? o.push(I("lang", t[0] + "_" + c.toUpperCase())) : o.push(I("lang", t[0])) : o.push(I("lang", "en")), IBMCore.common.util.user) {
var u = IBMCore.common.util.user.getInfo().country.toUpperCase();
o.push(I("usercountry", u))
}
o.push(I("source", "footer"));
var m, p = "";
if (C.override.hasOwnProperty(x) && (m = C.override[x].survey), m && m.metaData && (p = m.metaData), p ? e = p.split("&") : a && (e = a.split("&")), e)
for (n = 0; n < e.length; n++) i = e[n].split("="), o.indexOf(i[0]) < 0 && o.push(I(i[0], i[1]));
p.indexOf("pgroup") < 0 && o.push(I("pgroup", null, "default")), p.indexOf("pparent") < 0 && l.owner && o.push(I("pparent", l.owner)), p.indexOf("pmain") < 0 && l.industry && o.push(I("pmain", l.industry)), l.owningPortal && o.push(I("origin", l.owningPortal)), l.subject && o.push(I("content", l.subject)), s.category && s.category.primaryCategory && o.push(I("campaign", s.category.primaryCategory)), l.siteID && o.push(I("oid", l.siteID)), s.pageInfo && s.pageInfo.pageName && o.push(I("oname", s.pageInfo.pageName)), r.globalBrandTableL10 && r.gbt10 ? o.push(I("gbt10", r.gbt10 + " - " + r.globalBrandTableL10)) : r.gbt10 && o.push(I("gbt10", r.gbt10)), r.globalBrandTableL17 && r.gbt17 ? o.push(I("gbt17", r.gbt17 + " - " + r.globalBrandTableL17)) : r.gbt17 && o.push(I("gbt17", r.gbt17)), r.globalBrandTableL20 && r.gbt20 ? o.push(I("gbt20", r.gbt20 + " - " + r.globalBrandTableL20)) : r.gbt20 && o.push(I("gbt20", r.gbt20)), r.globalBrandTableL30 && r.gbt30 ? o.push(I("gbt30", r.gbt30 + " - " + r.globalBrandTableL30)) : r.gbt30 && o.push(I("gbt30", r.gbt30)), r.globalBrandTableL40 && r.gbt40 ? o.push(I("gbt40", r.gbt40 + " - " + r.globalBrandTableL40)) : r.gbt40 && o.push(I("gbt40", r.gbt40)), r.ut10 && o.push(I("ut10", r.ut10)), r.ut15 && o.push(I("ut15", r.ut15)), r.ut17 && o.push(I("ut17", r.ut17)), r.ut20 && o.push(I("ut20", r.ut20)), r.ut30 && o.push(I("ut30", r.ut30)), s.session && s.session.uPageViewID && o.push(I("pageviewid", s.session.uPageViewID));
var h = window.digitalData.user;
h && h.profile && h.profile.auid && o.push(I("upid", h.profile.auid)), h && h.user && h.segment && h.segment.isIBMer && o.push(I("isibmer", h.segment.isIBMer)), (o = o.filter(Boolean)).push(I("url", encodeURIComponent(window.location.href), ""))
}
var f, g, v, b, y, w;
return 0 < o.length ? o.join("&") : ""
}();
switch (k.survey.type) {
case "medallia":
t = 0 < t.length ? "?" + t : "", e = "https://survey.medallia.eu/ibm-" + k.survey.id + t;
break;
case "qualtrics":
e = "https://ibmsurveys.qualtrics.com/SE/?SID=" + k.survey.id;
break;
case "efm":
e = "https://ucdsurvey1.torolab.ibm.com/ss2/wsb.dll/s/" + k.survey.id;
break;
case "verint":
e = "https://survey.vovici.com/se/" + k.survey.id + "/?";
break;
case "userzoom":
e = "https://s.userzoom.com/m/" + k.survey.id;
break;
case "sg":
e = "https://www.surveygizmo.com/" + k.survey.id;
break;
case "customB":
e = k.survey.url
}
return null !== e ? (k.survey.url = e, !0) : (window.console.warn("v18: Intercept survey type is unknown: " + k.survey.type), !1)
}() && (s = window.digitalData.user.segment.isIBMer ? function() {
var e, t, i = p("<div class='ibm-padding-content'>");
e = p("<h2>").attr({
class: "ibm-h1 ibm-bottom-top-1 ibm-center"
}).html("Need Help ?"), '<p class="ibm-ind-link ibm-h3"><a class="ibm-help-link" href="https://w3.ibm.com/help" target="_blank">Help@IBM</a></p>';
t = p("<div>").attr({
class: "ibm-padding-bottom-0"
}).html('<p class="ibm-ind-link ibm-h3"><a class="ibm-help-link" href="https://w3.ibm.com/help" target="_blank">Help@IBM</a></p><p class=\'ibm-button-link ibm-h5 ibm-background-blue-10 ibm-center ibm-padding-bottom-0 ibm-margin-bottom-0\'>Medallia survey suppressed for internal IBM visitors</p>'), i.append(e, t);
var n = h.common.widget.overlay.createOverlay({
backgroundcolor: "#ffffff",
contentHtml: i,
fullwidth: !1,
seamless: !0,
classes: "ibm-overlay ibm-overlay-alt"
});
return n.init(), n.subscribe("hide", "Overlay", function() {
var e = w();
h.common.util.cookie.set(k.cookie_name, e, {
path: "/",
domain: ".ibm.com",
expires: v
})
}), n
}() : function() {
C.override.hasOwnProperty(x) && (f = C.override[x].invitation);
var e = S("invitation_title"),
t = S("invitation_content"),
i = S("invitation_yes_label"),
n = S("invitation_no_label"),
o = S("feedback_statement_label"),
a = window.location.href,
s = p("<div class='ibm-center'>"),
r = p("<h2>").attr({
class: "ibm-h2 ibm-margin-top-1 ibm-margin-bottom-1"
}).html(e),
l = '<p class="ibm-h4">' + t + "</p>",
c = "<p class='ibm-padding-content'><button class='ibm-btn-pri ibm-btn-blue-50' data-action='showme' data-attribute1='ok_survey_nps' data-attribute2=" + a + " >" + i + "</button> <button class='ibm-btn-pri ibm-btn-blue-50' data-action='hideme' data-attribute1='no_thanks_survey_nps' data-attribute2=" + a + " >" + n + "</button></p>",
d = "<p id='feedback' class='ibm-button-link ibm-padding-top-1 ibm-padding-bottom-0 ibm-margin-bottom-0'><a href='#' class='ibm-btn-gray-50 ibm-margin-bottom-0 ibm-btn-pri ibm-fullwidth' data-action='feedback-slide' >" + o + "<a></p>",
u = p("<div>").attr({
class: "ibm-padding-bottom-0"
}).html(l + c + d);
s.append(r, u), p("body").click("#feedback", E);
var m = h.common.widget.overlay.createOverlay({
backgroundcolor: "#ffffff",
contentHtml: s,
fullwidth: !1,
seamless: !0,
classes: "ibm-overlay ibm-overlay-alt"
});
return m.init(), m.subscribe("hide", "Overlay", function() {
var e = w();
h.common.util.cookie.set(k.cookie_name, e, {
path: "/",
domain: ".ibm.com",
expires: v
})
}), m
}(), E(), "pageExit" !== k.interceptDisp && "siteExit" !== k.interceptDisp ? setTimeout(function() {
s.show()
}, k.presentDelay) : n())
}
function n() {
var e = !1,
i = {
url: ""
};
function t() {
if ("" === r) {
if (IBMCore.common.widget.overlay.currentShowingOverlay()) return void window.console.log("v18: Survey invitation did not show because another overlay was currently showing.");
s.show(), s.subscribe("hide", "Overlay", function() {
"opt-in" === r ? (e = !0, l.subscribe("hide", "Overlay", function() {
e = !1, o()
})) : o()
})
} else l.show(), l.subscribe("hide", "Overlay", function() {
e = !1, o()
})
}
function n() {
t(), a()
}
function o() {
e || (e = !0, window.onbeforeunload = null, p(window).unbind("beforeunload"), "" !== i.url && ("" === i.target ? window.location.href = i.url : window.open(i.url, i.target)))
}
function a() {
p(window).bind("beforeunload", function() {
return t(), k.invitation.title
}), setTimeout(function() {
window.onbeforeunload = function() {
return t(), k.invitation.title
}
}, 500)
}
return Array.prototype.diff = function(t) {
return this.filter(function(e) {
return t.indexOf(e) < 0
})
}, setTimeout(function() {
p("#ibm-masthead a, .ibm-mobilemenu a").click(function(e) {
var t = e.currentTarget.parentElement.parentElement;
"" !== e.currentTarget.href && "#" !== e.currentTarget.href.substr(0, 1) && "ibm-menu-links" !== t.id && (e.preventDefault(), i.target = e.currentTarget.target, i.url = e.currentTarget.href, n())
}), p("#ibm-footer-module a, #ibm-footer a").click(function(e) {
"" !== e.currentTarget.href && "#" !== e.currentTarget.href.substr(0, 1) && (e.preventDefault(), i.target = e.currentTarget.target, i.url = e.currentTarget.href, n())
}), p("a.ibm-intercept-exit-survey").click(function(e) {
"" !== e.currentTarget.href && "#" !== e.currentTarget.href.substr(0, 1) && (e.preventDefault(), i.url = e.currentTarget.href, i.target = e.currentTarget.target, n())
}), a()
}, 1e3), {
status: "loaded"
}
}
function w() {
return '{"date": ' + (new Date).getTime() + ',"type": "' + k.survey.type + '","id": "' + k.survey.id + '"}'
}
function S(e) {
var t = C.defaults.invitation[e][i];
return f && f[e] && (t = f[e][i]), t
}
function E() {
var e = p("#" + s.getId());
p("[data-action]", e).on("click", function() {
var e, t;
switch (p(this).data("action")) {
case "hideme":
r = "opt-out", s.hide();
break;
case "feedback-slide":
r = "opt-in", s.hide(), e = '<div class="ibm-padding-content"><h2 class="ibm-bold">' + S("feedback_statement_label") + '</h2><p class="ibm-small">' + S("feedback_statement_content") + "</p></div>", (t = h.common.widget.overlay.createOverlay({
backgroundcolor: "#ffffff",
contentHtml: e,
fullwidth: !1,
seamless: !0,
classes: "ibm-overlay ibm-overlay-alt"
})).init(), t.subscribe("hide", "Overlay", function() {
var e = w();
h.common.util.cookie.set(k.cookie_name, e, {
path: "/",
domain: ".ibm.com",
expires: v
})
}), l = t, "pageExit" !== k.surveyDisp && "siteExit" !== k.surveyDisp ? l.show() : n();
break;
case "showme":
r = "opt-in", h.common.util.statshelper.fireEvent({
ibmEV: "ol survey",
ibmEvGroup: k.survey.type,
ibmEvModule: k.survey.id,
ibmEvAction: "intercept yes clicked"
}), s.hide(), k.survey.url += "&inter=y", l = function() {
var e, t, i, n = h.common.util.user.getInfo().ip;
n && (e = "id=" + n), e && (e = -1 < k.survey.url.indexOf("?") ? "&" + e : "?" + e), i = 770 < window.innerWidth ? 950 : "100%", t = '<iframe src="{{survey_url}}" width="{{survey_width}}" height="800"></iframe>'.replace("{{survey_url}}", k.survey.url + e).replace("{{survey_width}}", i);
var o = h.common.widget.overlay.createOverlay({
backgroundcolor: "#ffffff",
contentHtml: t,
seamless: !0,
classes: "ibm-overlay ibm-overlay-alt-three"
});
o.init();
var a = p("#" + o.getId());
return o.subscribe("show", "Overlay", function() {
h.common.util.statshelper.fireEvent({
ibmEV: "ol survey",
ibmEvGroup: k.survey.type,
ibmEvModule: k.survey.id,
ibmEvAction: "intercept shown"
});
var e = w();
h.common.util.cookie.set(k.cookie_name, e, {
path: "/",
domain: ".ibm.com",
expires: v
}), a.find("iframe").attr({
height: a.height() - 80
})
}), o
}(), "pageExit" !== k.surveyDisp && "siteExit" !== k.surveyDisp ? l.show() : n()
}
})
}
function I(e, t, i) {
var n = e + "=" + t;
return i = i || null, "" !== t && "REPLACE" !== t && null != t || (n = null === i ? "" : e + "=" + i), n
}
e.autoInit = function() {
var e, t, i, n, o, a, s, r = null,
l = 0;
if (g.globalDefault = m.intercept, g.pageCustom = h.common.util.config.get("survey.intercept"), g.pageAlt = h.common.util.config.get("survey.intercept_alternate"), g.globalDefault = (e = g.globalDefault, 0 <= (t = h.common.util.config.get("survey.global_percent")) && (e.percent = Number(t)), e), g.globalDefault = b(g.globalDefault), g.pageCustom = b(g.pageCustom) || {}, g.pageAlt = b(g.pageAlt) || {}, l = g.pageAlt.isActive ? h.common.util.config.get("survey.entry_percent") : g.pageCustom.isActive ? g.pageCustom.percent : g.globalDefault.percent, o = (i = g).globalDefault, a = i.pageCustom, r = (s = i.pageAlt).isActive || a.isActive ? (s.isActive || !a.isActive || a.seen ? s.isActive && (s.seen ? a.isActive && !a.seen ? n = a : a.isActive || o.seen || (n = o) : g.randNum < s.percent || a.isActive && a.seen || !a.isActive && o.seen ? n = s : a.isActive && !a.seen ? n = a : a.isActive || o.seen || (n = o)) : n = a, n) : o.seen ? n : n = o) {
h.common.util.debug.add("log", "Using survey config: " + r.survey.id);
var c = p.extend(!0, {}, u, h.common.util.config.get("survey.intercept"), r || {});
if ("web-exp" !== c.survey.id || !g.globalDefault.percent || g.globalDefault.percent && 5 !== g.globalDefault.percent) {
var d = {
ibmEV: "v18 survey tracker",
ibmEvAction: c.survey.type,
ibmEvGroup: c.survey.id,
ibmEvModule: c.percent,
ibmEvSection: l,
ibmEvLinkTitle: g.globalDefault.percent,
ibmEvLinkTarget: c.presentDelay
};
h.common.util.statshelper.fireEvent(d)
}! function() {
var e = h.common.util.cookie.get("__forcev18env"),
t = {
dataType: "script",
url: "https://tags.tiqcdn.com/dle/ibm/web/d_medallia_survey_configurations.js?callback=?",
timeout: 5e3,
data: "prod"
};
e && (t = {
dataType: "json",
url: "https://singlesurveysystem-prod.w3ibm.mybluemix.net/callbackmergedata",
timeout: 5e3,
data: "preview"
});
p.ajax(t).done(function(e) {
switch (t.data) {
case "prod":
C = window.utag.globals.dle.enrichments.d_medallia_survey_configurations;
break;
case "preview":
C = e
}
y()
})
}(), setTimeout(function() {
h.common.util.queue.remove(void 0), window.console.warn("v18: Intercept translations took too long, killed listener.")
}, 1e3), p.ajax({
url: h.common.util.config.get("jsFilesUrl") + "ccftranslations.js",
dataType: "script",
cache: !0
}).fail(function(e) {
window.console.error("v18: Error while loading intercept survey translation file.", e)
})
} else h.common.util.debug.add("log", "A survey config was matched but you have already seen it.")
}, e.initFeedback = y
}(jQuery, IBMCore),
function(t, i) {
i.common.meta.subscribe("dataReady", "NoticeChoice", function() {
var e = i.common.meta.page.pageInfo;
e.nc && e.nc.id && t(function() {
(e.nc.id.form ? document.getElementById(e.nc.id.form) : document.getElementsByClassName("nc_register_form")[0] || document.getElementById("registerform")) && document.getElementById(e.nc.id.privacyDiv) && t.ajax({
url: i.common.util.config.get("jsFilesUrlNC") + "notice-choice.js",
dataType: "script",
cache: !0
})
})
})
}(jQuery, IBMCore),
function(e, t) {
e(function() {
!0 === t.common.util.config.get("contentwidgets.enabled") && (t.common.util.anchorlinkAdjustment && e("[data-widget=adjustanchorlinks]:not([data-init=false])").each(function() {
t.common.util.anchorlinkAdjustment.adjustLinks(this)
}), t.common.widget.checkbox && e("input[data-widget=checkbox]:not([data-init=false])").checkbox(), t.common.widget.datepicker && e("input[data-widget=datepicker]:not([data-init=false])").each(function() {
t.common.widget.datepicker.init(this)
}), t.common.widget.formvalidator && e("form[data-formvalidator=enable]:not([data-init=false])").each(function() {
t.common.widget.formvalidator.init(this)
}), t.common.widget.selectlistnav && e("[data-widget=selectlistnav]:not([data-init=false])").selectlistnav(), t.common.widget.leavingibm && e("[data-widget=leavingibm]:not([data-init=false])").leavingibm(), t.common.widget.masonry && e("[data-widget=masonry]:not([data-init=false])").each(function() {
t.common.widget.masonry.init(this)
}), t.common.widget.datatable && e("table[data-widget=datatable]:not([data-init=false])").each(function() {
t.common.widget.datatable.init(this)
}), t.common.widget.parallaxscroll && e("[data-widget=parallaxscroll]:not([data-init=false])").each(function() {
t.common.widget.parallaxscroll.init(this)
}), t.common.widget.rssdisplay && e("[data-widget=rssdisplay]:not([data-init=false])").rssdisplay(), t.common.widget.scrollable && e("[data-widget=scrollable]:not([data-init=false])").scrollable(), t.common.widget.stickytabs && e("[data-widget=stickytabs]:not([data-init=false])").stickytabs(), void 0 !== window.SyntaxHighlighter && e("[data-widget=syntaxhighlighter]:not([data-init=false])").syntaxhighlighter(), t.common.widget.tooltip && e("[data-widget=tooltip]:not([data-init=false])").tooltip(), t.common.widget.videoplayer && e("[data-widget=videoplayer]:not([data-init=false])").videoplayer(), t.common.widget.videolooper && e("[data-widget=videolooper]:not([data-init=false])").videolooper(), t.common.widget.selectlist && e("div.dataTables_length > label > select:not([data-init=false]), form select:not([data-init=false]), table select:not([data-init=false])").each(function() {
t.common.widget.selectlist.init(this)
}), t.common.widget.fileinput && e("input:file[data-widget=fileinput]:not([data-init=false])").fileinput(), t.common.widget.tablesrowselector && e("table[data-tablerowselector=enable]:not([data-init=false])").tablesrowselector(), t.common.widget.setsameheight && e("[data-widget=setsameheight]:not([data-init=false])").setsameheight(), t.common.widget.showhide && e("[data-widget=showhide]:not([data-init=false])").showhide(), t.common.widget.twisty && e("[data-widget=twisty]:not([data-init=false])").twisty(), t.common.widget.overlay && e("[data-widget=overlay]:not([data-init=false])").overlay(), t.common.widget.carousel && e("div[data-widget=carousel]:not([data-init=false])").carousel(), t.common.widget.dyntabs && e("div[data-widget=dyntabs]:not([data-init=false])").dyntabs(), t.common.widget.stepindicator && e("div[data-widget=stepindicator]:not([data-init=false])").stepindicator())
}), t.common.widget.manager.dispatchEvent({
evtEl: document.documentElement,
evtName: "v18-ready"
})
}(jQuery, IBMCore),
function(e, t) {
function i(e) {
window.console.timeStamp && window.console.timeStamp(e)
}
t.performance.Note = "Times are in MS", t.performance.jsStart = window.v18JsStart, t.performance.jsEnd = (new Date).getTime();
var n = function() {
return (new Date).getTime() - t.performance.jsStart
};
t.performance.getMetaTime = function() {
t.performance.startToMetaLoaded = n()
}, t.performance.getTranslationTime = function() {
t.performance.startToTranslationsLoaded = n()
}, t.performance.getMastheadMainLinksReady = function() {
t.performance.onReadyToMastheadMainLinks = n(), i("Masthead main links created")
}, t.performance.getMobilemenuReady = function() {
t.performance.onReadyToMobilemenuLinks = n(), i("Mobile menu created (deferred)")
}, t.performance.showRunTimes = function() {
t.common.util.config.isEnabled("errorchecking") && setTimeout(function() {
t.common.util.debug.add("info", "v18 JS KPIs (from JS start):\n - Meta data ready: " + t.performance.startToMetaLoaded + "ms\n - Translations ready: " + t.performance.startToTranslationsLoaded + "ms\n - jQuery DocReady: " + t.performance.startToDocReady + "ms\n - Masthead main links onscreen: " + t.performance.onReadyToMastheadMainLinks + "ms\n - Mobile menu created (deferred): " + t.performance.onReadyToMobilemenuLinks + "ms\n")
}, 20)
}, e(function() {
t.performance.startToDocReady = n(), i("jQuery DocReady")
}), t.performance.startToEnd = n(), t.common.meta.subscribe("dataReady", "JSperf", t.performance.getMetaTime).runAsap(t.performance.getMetaTime), t.common.translations.subscribe("dataReady", "JSperf", t.performance.getTranslationTime).runAsap(t.performance.getTranslationTime), t.common.module.masthead.subscribe("ready", "JSperf", t.performance.getMastheadMainLinksReady).runAsap(t.performance.getMastheadMainLinksReady), t.common.module.mobilemenu.subscribe("ready", "JSperf", function() {
t.performance.getMobilemenuReady(), setTimeout(t.performance.showRunTimes, 1e3)
}).runAsap(function() {
t.performance.getMobilemenuReady(), setTimeout(t.performance.showRunTimes, 1e3)
})
}(jQuery, IBMCore), IBMPerformance.mark("V18-end-execute"), IBMPerformance.measure("V18-begin-end-execute", "V18-begin-execute", "V18-end-execute"),
function(e, t) {
t.common.util.config.isEnabled("wat") && "n" !== t.common.util.url.getParam("wat") && e(function() {
setTimeout(function() {
e.ajax({
url: "https://1.www.s81c.com/common/scripts/wat.js",
dataType: "script",
cache: !0
})
}, 1e3)
})
}(jQuery, IBMCore),
function(i, e) {
window.top !== window.self && "preview-tool" === window.name && setTimeout(function() {
["datepicker.css", "expertise-rtl.css", "expertise.css", "forms-rtl.css", "forms.css", "grid-16.css", "grid-duo.css", "grid-fluid-rtl.css", "grid-fluid.css", "liveperson-rtl.css", "liveperson.css", "syntaxhighlighter-rtl.css", "syntaxhighlighter.css", "tables-rtl.css", "tables.css", "textcolumns-rtl.css", "textcolumns.css", "www-hfonly.css", "www-rtl.css", "www-widgetsonly.css", "www.css"].forEach(function(e) {
var t;
0 < i("link[href*='v18/css/" + e + "']").length ? t = i("link[href*='v18/css/" + e + "']") : i("link[href*='/css/" + e + "']") && "localhost" === window.location.hostname && (t = i("link[href*='/css/" + e + "']")), t && t.attr("href", "https://1.www.s81c.com/common/v18/preview/css/" + e)
}), i("body").prepend('<div class="ibm-background-red-10 ibm-padding-content">This is a preview page showing the upcoming Digital Design release</div>')
}, 1e3)
}(jQuery);