/*! jQuery v1.7.1 jquery.com | jquery.org/license */
(function(a, b) {
function cy(a) { return f.isWindow(a) ? a : a.nodeType === 9 ? a.defaultView || a.parentWindow : !1 }
function cv(a) { if (!ck[a]) { var b = c.body,
d = f("<" + a + ">").appendTo(b),
e = d.css("display");
d.remove(); if (e === "none" || e === "") { cl || (cl = c.createElement("iframe"), cl.frameBorder = cl.width = cl.height = 0), b.appendChild(cl); if (!cm || !cl.createElement) cm = (cl.contentWindow || cl.contentDocument).document, cm.write((c.compatMode === "CSS1Compat" ? "" : "") + "
"), cm.close();
d = cm.createElement(a), cm.body.appendChild(d), e = f.css(d, "display"), b.removeChild(cl) }
ck[a] = e } return ck[a] }
function cu(a, b) { var c = {};
f.each(cq.concat.apply([], cq.slice(0, b)), function() { c[this] = a }); return c }
function ct() { cr = b }
function cs() { setTimeout(ct, 0); return cr = f.now() }
function cj() { try { return new a.ActiveXObject("Microsoft.XMLHTTP") } catch (b) {} }
function ci() { try { return new a.XMLHttpRequest } catch (b) {} }
function cc(a, c) { a.dataFilter && (c = a.dataFilter(c, a.dataType)); var d = a.dataTypes,
e = {},
g, h, i = d.length,
j, k = d[0],
l, m, n, o, p; for (g = 1; g < i; g++) { if (g === 1)
for (h in a.converters) typeof h == "string" && (e[h.toLowerCase()] = a.converters[h]);
l = k, k = d[g]; if (k === "*") k = l;
else if (l !== "*" && l !== k) { m = l + " " + k, n = e[m] || e["* " + k]; if (!n) { p = b; for (o in e) { j = o.split(" "); if (j[0] === l || j[0] === "*") { p = e[j[1] + " " + k]; if (p) { o = e[o], o === !0 ? n = p : p === !0 && (n = o); break } } } }!n && !p && f.error("No conversion from " + m.replace(" ", " to ")), n !== !0 && (c = n ? n(c) : p(o(c))) } } return c }
function cb(a, c, d) { var e = a.contents,
f = a.dataTypes,
g = a.responseFields,
h, i, j, k; for (i in g) i in d && (c[g[i]] = d[i]); while (f[0] === "*") f.shift(), h === b && (h = a.mimeType || c.getResponseHeader("content-type")); if (h)
for (i in e)
if (e[i] && e[i].test(h)) { f.unshift(i); break }
if (f[0] in d) j = f[0];
else { for (i in d) { if (!f[0] || a.converters[i + " " + f[0]]) { j = i; break }
k || (k = i) }
j = j || k } if (j) { j !== f[0] && f.unshift(j); return d[j] } }
function ca(a, b, c, d) { if (f.isArray(b)) f.each(b, function(b, e) { c || bE.test(a) ? d(a, e) : ca(a + "[" + (typeof e == "object" || f.isArray(e) ? b : "") + "]", e, c, d) });
else if (!c && b != null && typeof b == "object")
for (var e in b) ca(a + "[" + e + "]", b[e], c, d);
else d(a, b) }
function b_(a, c) { var d, e, g = f.ajaxSettings.flatOptions || {}; for (d in c) c[d] !== b && ((g[d] ? a : e || (e = {}))[d] = c[d]);
e && f.extend(!0, a, e) }
function b$(a, c, d, e, f, g) { f = f || c.dataTypes[0], g = g || {}, g[f] = !0; var h = a[f],
i = 0,
j = h ? h.length : 0,
k = a === bT,
l; for (; i < j && (k || !l); i++) l = h[i](c, d, e), typeof l == "string" && (!k || g[l] ? l = b : (c.dataTypes.unshift(l), l = b$(a, c, d, e, l, g)));
(k || !l) && !g["*"] && (l = b$(a, c, d, e, "*", g)); return l }
function bZ(a) { return function(b, c) { typeof b != "string" && (c = b, b = "*"); if (f.isFunction(c)) { var d = b.toLowerCase().split(bP),
e = 0,
g = d.length,
h, i, j; for (; e < g; e++) h = d[e], j = /^\+/.test(h), j && (h = h.substr(1) || "*"), i = a[h] = a[h] || [], i[j ? "unshift" : "push"](c) } } }
function bC(a, b, c) { var d = b === "width" ? a.offsetWidth : a.offsetHeight,
e = b === "width" ? bx : by,
g = 0,
h = e.length; if (d > 0) { if (c !== "border")
for (; g < h; g++) c || (d -= parseFloat(f.css(a, "padding" + e[g])) || 0), c === "margin" ? d += parseFloat(f.css(a, c + e[g])) || 0 : d -= parseFloat(f.css(a, "border" + e[g] + "Width")) || 0; return d + "px" }
d = bz(a, b, b); if (d < 0 || d == null) d = a.style[b] || 0;
d = parseFloat(d) || 0; if (c)
for (; g < h; g++) d += parseFloat(f.css(a, "padding" + e[g])) || 0, c !== "padding" && (d += parseFloat(f.css(a, "border" + e[g] + "Width")) || 0), c === "margin" && (d += parseFloat(f.css(a, c + e[g])) || 0); return d + "px" }
function bp(a, b) { b.src ? f.ajax({ url: b.src, async: !1, dataType: "script" }) : f.globalEval((b.text || b.textContent || b.innerHTML || "").replace(bf, "/*$0*/")), b.parentNode && b.parentNode.removeChild(b) }
function bo(a) { var b = c.createElement("div");
bh.appendChild(b), b.innerHTML = a.outerHTML; return b.firstChild }
function bn(a) { var b = (a.nodeName || "").toLowerCase();
b === "input" ? bm(a) : b !== "script" && typeof a.getElementsByTagName != "undefined" && f.grep(a.getElementsByTagName("input"), bm) }
function bm(a) { if (a.type === "checkbox" || a.type === "radio") a.defaultChecked = a.checked }
function bl(a) { return typeof a.getElementsByTagName != "undefined" ? a.getElementsByTagName("*") : typeof a.querySelectorAll != "undefined" ? a.querySelectorAll("*") : [] }
function bk(a, b) { var c; if (b.nodeType === 1) { b.clearAttributes && b.clearAttributes(), b.mergeAttributes && b.mergeAttributes(a), c = b.nodeName.toLowerCase(); if (c === "object") b.outerHTML = a.outerHTML;
else if (c !== "input" || a.type !== "checkbox" && a.type !== "radio") { if (c === "option") b.selected = a.defaultSelected;
else if (c === "input" || c === "textarea") b.defaultValue = a.defaultValue } else a.checked && (b.defaultChecked = b.checked = a.checked), b.value !== a.value && (b.value = a.value);
b.removeAttribute(f.expando) } }
function bj(a, b) { if (b.nodeType === 1 && !!f.hasData(a)) { var c, d, e, g = f._data(a),
h = f._data(b, g),
i = g.events; if (i) { delete h.handle, h.events = {}; for (c in i)
for (d = 0, e = i[c].length; d < e; d++) f.event.add(b, c + (i[c][d].namespace ? "." : "") + i[c][d].namespace, i[c][d], i[c][d].data) }
h.data && (h.data = f.extend({}, h.data)) } }
function bi(a, b) { return f.nodeName(a, "table") ? a.getElementsByTagName("tbody")[0] || a.appendChild(a.ownerDocument.createElement("tbody")) : a }
function U(a) { var b = V.split("|"),
c = a.createDocumentFragment(); if (c.createElement)
while (b.length) c.createElement(b.pop()); return c }
function T(a, b, c) { b = b || 0; if (f.isFunction(b)) return f.grep(a, function(a, d) { var e = !!b.call(a, d, a); return e === c }); if (b.nodeType) return f.grep(a, function(a, d) { return a === b === c }); if (typeof b == "string") { var d = f.grep(a, function(a) { return a.nodeType === 1 }); if (O.test(b)) return f.filter(b, d, !c);
b = f.filter(b, d) } return f.grep(a, function(a, d) { return f.inArray(a, b) >= 0 === c }) }
function S(a) { return !a || !a.parentNode || a.parentNode.nodeType === 11 }
function K() { return !0 }
function J() { return !1 }
function n(a, b, c) { var d = b + "defer",
e = b + "queue",
g = b + "mark",
h = f._data(a, d);
h && (c === "queue" || !f._data(a, e)) && (c === "mark" || !f._data(a, g)) && setTimeout(function() {!f._data(a, e) && !f._data(a, g) && (f.removeData(a, d, !0), h.fire()) }, 0) }
function m(a) { for (var b in a) { if (b === "data" && f.isEmptyObject(a[b])) continue; if (b !== "toJSON") return !1 } return !0 }
function l(a, c, d) { if (d === b && a.nodeType === 1) { var e = "data-" + c.replace(k, "-$1").toLowerCase();
d = a.getAttribute(e); if (typeof d == "string") { try { d = d === "true" ? !0 : d === "false" ? !1 : d === "null" ? null : f.isNumeric(d) ? parseFloat(d) : j.test(d) ? f.parseJSON(d) : d } catch (g) {}
f.data(a, c, d) } else d = b } return d }
function h(a) { var b = g[a] = {},
c, d;
a = a.split(/\s+/); for (c = 0, d = a.length; c < d; c++) b[a[c]] = !0; return b }
var c = a.document,
d = a.navigator,
e = a.location,
f = function() {
function J() { if (!e.isReady) { try { c.documentElement.doScroll("left") } catch (a) { setTimeout(J, 1); return }
e.ready() } } var e = function(a, b) { return new e.fn.init(a, b, h) },
f = a.jQuery,
g = a.$,
h, i = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,
j = /\S/,
k = /^\s+/,
l = /\s+$/,
m = /^<(\w+)\s*\/?>(?:<\/\1>)?$/,
n = /^[\],:{}\s]*$/,
o = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,
p = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,
q = /(?:^|:|,)(?:\s*\[)+/g,
r = /(webkit)[ \/]([\w.]+)/,
s = /(opera)(?:.*version)?[ \/]([\w.]+)/,
t = /(msie) ([\w.]+)/,
u = /(mozilla)(?:.*? rv:([\w.]+))?/,
v = /-([a-z]|[0-9])/ig,
w = /^-ms-/,
x = function(a, b) { return (b + "").toUpperCase() },
y = d.userAgent,
z, A, B, C = Object.prototype.toString,
D = Object.prototype.hasOwnProperty,
E = Array.prototype.push,
F = Array.prototype.slice,
G = String.prototype.trim,
H = Array.prototype.indexOf,
I = {};
e.fn = e.prototype = { constructor: e, init: function(a, d, f) { var g, h, j, k; if (!a) return this; if (a.nodeType) { this.context = this[0] = a, this.length = 1; return this } if (a === "body" && !d && c.body) { this.context = c, this[0] = c.body, this.selector = a, this.length = 1; return this } if (typeof a == "string") { a.charAt(0) !== "<" || a.charAt(a.length - 1) !== ">" || a.length < 3 ? g = i.exec(a) : g = [null, a, null]; if (g && (g[1] || !d)) { if (g[1]) { d = d instanceof e ? d[0] : d, k = d ? d.ownerDocument || d : c, j = m.exec(a), j ? e.isPlainObject(d) ? (a = [c.createElement(j[1])], e.fn.attr.call(a, d, !0)) : a = [k.createElement(j[1])] : (j = e.buildFragment([g[1]], [k]), a = (j.cacheable ? e.clone(j.fragment) : j.fragment).childNodes); return e.merge(this, a) }
h = c.getElementById(g[2]); if (h && h.parentNode) { if (h.id !== g[2]) return f.find(a);
this.length = 1, this[0] = h }
this.context = c, this.selector = a; return this } return !d || d.jquery ? (d || f).find(a) : this.constructor(d).find(a) } if (e.isFunction(a)) return f.ready(a);
a.selector !== b && (this.selector = a.selector, this.context = a.context); return e.makeArray(a, this) }, selector: "", jquery: "1.7.1", length: 0, size: function() { return this.length }, toArray: function() { return F.call(this, 0) }, get: function(a) { return a == null ? this.toArray() : a < 0 ? this[this.length + a] : this[a] }, pushStack: function(a, b, c) { var d = this.constructor();
e.isArray(a) ? E.apply(d, a) : e.merge(d, a), d.prevObject = this, d.context = this.context, b === "find" ? d.selector = this.selector + (this.selector ? " " : "") + c : b && (d.selector = this.selector + "." + b + "(" + c + ")"); return d }, each: function(a, b) { return e.each(this, a, b) }, ready: function(a) { e.bindReady(), A.add(a); return this }, eq: function(a) { a = +a; return a === -1 ? this.slice(a) : this.slice(a, a + 1) }, first: function() { return this.eq(0) }, last: function() { return this.eq(-1) }, slice: function() { return this.pushStack(F.apply(this, arguments), "slice", F.call(arguments).join(",")) }, map: function(a) { return this.pushStack(e.map(this, function(b, c) { return a.call(b, c, b) })) }, end: function() { return this.prevObject || this.constructor(null) }, push: E, sort: [].sort, splice: [].splice }, e.fn.init.prototype = e.fn, e.extend = e.fn.extend = function() { var a, c, d, f, g, h, i = arguments[0] || {},
j = 1,
k = arguments.length,
l = !1;
typeof i == "boolean" && (l = i, i = arguments[1] || {}, j = 2), typeof i != "object" && !e.isFunction(i) && (i = {}), k === j && (i = this, --j); for (; j < k; j++)
if ((a = arguments[j]) != null)
for (c in a) { d = i[c], f = a[c]; if (i === f) continue;
l && f && (e.isPlainObject(f) || (g = e.isArray(f))) ? (g ? (g = !1, h = d && e.isArray(d) ? d : []) : h = d && e.isPlainObject(d) ? d : {}, i[c] = e.extend(l, h, f)) : f !== b && (i[c] = f) }
return i }, e.extend({ noConflict: function(b) { a.$ === e && (a.$ = g), b && a.jQuery === e && (a.jQuery = f); return e }, isReady: !1, readyWait: 1, holdReady: function(a) { a ? e.readyWait++ : e.ready(!0) }, ready: function(a) { if (a === !0 && !--e.readyWait || a !== !0 && !e.isReady) { if (!c.body) return setTimeout(e.ready, 1);
e.isReady = !0; if (a !== !0 && --e.readyWait > 0) return;
A.fireWith(c, [e]), e.fn.trigger && e(c).trigger("ready").off("ready") } }, bindReady: function() { if (!A) { A = e.Callbacks("once memory"); if (c.readyState === "complete") return setTimeout(e.ready, 1); if (c.addEventListener) c.addEventListener("DOMContentLoaded", B, !1), a.addEventListener("load", e.ready, !1);
else if (c.attachEvent) { c.attachEvent("onreadystatechange", B), a.attachEvent("onload", e.ready); var b = !1; try { b = a.frameElement == null } catch (d) {}
c.documentElement.doScroll && b && J() } } }, isFunction: function(a) { return e.type(a) === "function" }, isArray: Array.isArray || function(a) { return e.type(a) === "array" }, isWindow: function(a) { return a && typeof a == "object" && "setInterval" in a }, isNumeric: function(a) { return !isNaN(parseFloat(a)) && isFinite(a) }, type: function(a) { return a == null ? String(a) : I[C.call(a)] || "object" }, isPlainObject: function(a) { if (!a || e.type(a) !== "object" || a.nodeType || e.isWindow(a)) return !1; try { if (a.constructor && !D.call(a, "constructor") && !D.call(a.constructor.prototype, "isPrototypeOf")) return !1 } catch (c) { return !1 } var d; for (d in a); return d === b || D.call(a, d) }, isEmptyObject: function(a) { for (var b in a) return !1; return !0 }, error: function(a) { throw new Error(a) }, parseJSON: function(b) { if (typeof b != "string" || !b) return null;
b = e.trim(b); if (a.JSON && a.JSON.parse) return a.JSON.parse(b); if (n.test(b.replace(o, "@").replace(p, "]").replace(q, ""))) return (new Function("return " + b))();
e.error("Invalid JSON: " + b) }, parseXML: function(c) { var d, f; try { a.DOMParser ? (f = new DOMParser, d = f.parseFromString(c, "text/xml")) : (d = new ActiveXObject("Microsoft.XMLDOM"), d.async = "false", d.loadXML(c)) } catch (g) { d = b }(!d || !d.documentElement || d.getElementsByTagName("parsererror").length) && e.error("Invalid XML: " + c); return d }, noop: function() {}, globalEval: function(b) { b && j.test(b) && (a.execScript || function(b) { a.eval.call(a, b) })(b) }, camelCase: function(a) { return a.replace(w, "ms-").replace(v, x) }, nodeName: function(a, b) { return a.nodeName && a.nodeName.toUpperCase() === b.toUpperCase() }, each: function(a, c, d) { var f, g = 0,
h = a.length,
i = h === b || e.isFunction(a); if (d) { if (i) { for (f in a)
if (c.apply(a[f], d) === !1) break } else
for (; g < h;)
if (c.apply(a[g++], d) === !1) break } else if (i) { for (f in a)
if (c.call(a[f], f, a[f]) === !1) break } else
for (; g < h;)
if (c.call(a[g], g, a[g++]) === !1) break; return a }, trim: G ? function(a) { return a == null ? "" : G.call(a) } : function(a) { return a == null ? "" : (a + "").replace(k, "").replace(l, "") }, makeArray: function(a, b) { var c = b || []; if (a != null) { var d = e.type(a);
a.length == null || d === "string" || d === "function" || d === "regexp" || e.isWindow(a) ? E.call(c, a) : e.merge(c, a) } return c }, inArray: function(a, b, c) { var d; if (b) { if (H) return H.call(b, a, c);
d = b.length, c = c ? c < 0 ? Math.max(0, d + c) : c : 0; for (; c < d; c++)
if (c in b && b[c] === a) return c } return -1 }, merge: function(a, c) { var d = a.length,
e = 0; if (typeof c.length == "number")
for (var f = c.length; e < f; e++) a[d++] = c[e];
else
while (c[e] !== b) a[d++] = c[e++];
a.length = d; return a }, grep: function(a, b, c) { var d = [],
e;
c = !!c; for (var f = 0, g = a.length; f < g; f++) e = !!b(a[f], f), c !== e && d.push(a[f]); return d }, map: function(a, c, d) { var f, g, h = [],
i = 0,
j = a.length,
k = a instanceof e || j !== b && typeof j == "number" && (j > 0 && a[0] && a[j - 1] || j === 0 || e.isArray(a)); if (k)
for (; i < j; i++) f = c(a[i], i, d), f != null && (h[h.length] = f);
else
for (g in a) f = c(a[g], g, d), f != null && (h[h.length] = f); return h.concat.apply([], h) }, guid: 1, proxy: function(a, c) { if (typeof c == "string") { var d = a[c];
c = a, a = d } if (!e.isFunction(a)) return b; var f = F.call(arguments, 2),
g = function() { return a.apply(c, f.concat(F.call(arguments))) };
g.guid = a.guid = a.guid || g.guid || e.guid++; return g }, access: function(a, c, d, f, g, h) { var i = a.length; if (typeof c == "object") { for (var j in c) e.access(a, j, c[j], f, g, d); return a } if (d !== b) { f = !h && f && e.isFunction(d); for (var k = 0; k < i; k++) g(a[k], c, f ? d.call(a[k], k, g(a[k], c)) : d, h); return a } return i ? g(a[0], c) : b }, now: function() { return (new Date).getTime() }, uaMatch: function(a) { a = a.toLowerCase(); var b = r.exec(a) || s.exec(a) || t.exec(a) || a.indexOf("compatible") < 0 && u.exec(a) || []; return { browser: b[1] || "", version: b[2] || "0" } }, sub: function() {
function a(b, c) { return new a.fn.init(b, c) }
e.extend(!0, a, this), a.superclass = this, a.fn = a.prototype = this(), a.fn.constructor = a, a.sub = this.sub, a.fn.init = function(d, f) { f && f instanceof e && !(f instanceof a) && (f = a(f)); return e.fn.init.call(this, d, f, b) }, a.fn.init.prototype = a.fn; var b = a(c); return a }, browser: {} }), e.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(a, b) { I["[object " + b + "]"] = b.toLowerCase() }), z = e.uaMatch(y), z.browser && (e.browser[z.browser] = !0, e.browser.version = z.version), e.browser.webkit && (e.browser.safari = !0), j.test(" ") && (k = /^[\s\xA0]+/, l = /[\s\xA0]+$/), h = e(c), c.addEventListener ? B = function() { c.removeEventListener("DOMContentLoaded", B, !1), e.ready() } : c.attachEvent && (B = function() { c.readyState === "complete" && (c.detachEvent("onreadystatechange", B), e.ready()) }); return e }(),
g = {};
f.Callbacks = function(a) { a = a ? g[a] || h(a) : {}; var c = [],
d = [],
e, i, j, k, l, m = function(b) { var d, e, g, h, i; for (d = 0, e = b.length; d < e; d++) g = b[d], h = f.type(g), h === "array" ? m(g) : h === "function" && (!a.unique || !o.has(g)) && c.push(g) },
n = function(b, f) { f = f || [], e = !a.memory || [b, f], i = !0, l = j || 0, j = 0, k = c.length; for (; c && l < k; l++)
if (c[l].apply(b, f) === !1 && a.stopOnFalse) { e = !0; break }
i = !1, c && (a.once ? e === !0 ? o.disable() : c = [] : d && d.length && (e = d.shift(), o.fireWith(e[0], e[1]))) },
o = { add: function() { if (c) { var a = c.length;
m(arguments), i ? k = c.length : e && e !== !0 && (j = a, n(e[0], e[1])) } return this }, remove: function() { if (c) { var b = arguments,
d = 0,
e = b.length; for (; d < e; d++)
for (var f = 0; f < c.length; f++)
if (b[d] === c[f]) { i && f <= k && (k--, f <= l && l--), c.splice(f--, 1); if (a.unique) break } } return this }, has: function(a) { if (c) { var b = 0,
d = c.length; for (; b < d; b++)
if (a === c[b]) return !0 } return !1 }, empty: function() { c = []; return this }, disable: function() { c = d = e = b; return this }, disabled: function() { return !c }, lock: function() { d = b, (!e || e === !0) && o.disable(); return this }, locked: function() { return !d }, fireWith: function(b, c) { d && (i ? a.once || d.push([b, c]) : (!a.once || !e) && n(b, c)); return this }, fire: function() { o.fireWith(this, arguments); return this }, fired: function() { return !!e } }; return o };
var i = [].slice;
f.extend({ Deferred: function(a) { var b = f.Callbacks("once memory"),
c = f.Callbacks("once memory"),
d = f.Callbacks("memory"),
e = "pending",
g = { resolve: b, reject: c, notify: d },
h = { done: b.add, fail: c.add, progress: d.add, state: function() { return e }, isResolved: b.fired, isRejected: c.fired, then: function(a, b, c) { i.done(a).fail(b).progress(c); return this }, always: function() { i.done.apply(i, arguments).fail.apply(i, arguments); return this }, pipe: function(a, b, c) { return f.Deferred(function(d) { f.each({ done: [a, "resolve"], fail: [b, "reject"], progress: [c, "notify"] }, function(a, b) { var c = b[0],
e = b[1],
g;
f.isFunction(c) ? i[a](function() { g = c.apply(this, arguments), g && f.isFunction(g.promise) ? g.promise().then(d.resolve, d.reject, d.notify) : d[e + "With"](this === i ? d : this, [g]) }) : i[a](d[e]) }) }).promise() }, promise: function(a) { if (a == null) a = h;
else
for (var b in h) a[b] = h[b]; return a } },
i = h.promise({}),
j; for (j in g) i[j] = g[j].fire, i[j + "With"] = g[j].fireWith;
i.done(function() { e = "resolved" }, c.disable, d.lock).fail(function() { e = "rejected" }, b.disable, d.lock), a && a.call(i, i); return i }, when: function(a) {
function m(a) { return function(b) { e[a] = arguments.length > 1 ? i.call(arguments, 0) : b, j.notifyWith(k, e) } }
function l(a) { return function(c) { b[a] = arguments.length > 1 ? i.call(arguments, 0) : c, --g || j.resolveWith(j, b) } } var b = i.call(arguments, 0),
c = 0,
d = b.length,
e = Array(d),
g = d,
h = d,
j = d <= 1 && a && f.isFunction(a.promise) ? a : f.Deferred(),
k = j.promise(); if (d > 1) { for (; c < d; c++) b[c] && b[c].promise && f.isFunction(b[c].promise) ? b[c].promise().then(l(c), j.reject, m(c)) : --g;
g || j.resolveWith(j, b) } else j !== a && j.resolveWith(j, d ? [a] : []); return k } }), f.support = function() { var b, d, e, g, h, i, j, k, l, m, n, o, p, q = c.createElement("div"),
r = c.documentElement;
q.setAttribute("className", "t"), q.innerHTML = "
a", d = q.getElementsByTagName("*"), e = q.getElementsByTagName("a")[0]; if (!d || !d.length || !e) return {};
g = c.createElement("select"), h = g.appendChild(c.createElement("option")), i = q.getElementsByTagName("input")[0], b = { leadingWhitespace: q.firstChild.nodeType === 3, tbody: !q.getElementsByTagName("tbody").length, htmlSerialize: !!q.getElementsByTagName("link").length, style: /top/.test(e.getAttribute("style")), hrefNormalized: e.getAttribute("href") === "/a", opacity: /^0.55/.test(e.style.opacity), cssFloat: !!e.style.cssFloat, checkOn: i.value === "on", optSelected: h.selected, getSetAttribute: q.className !== "t", enctype: !!c.createElement("form").enctype, html5Clone: c.createElement("nav").cloneNode(!0).outerHTML !== "<:nav>", submitBubbles: !0, changeBubbles: !0, focusinBubbles: !1, deleteExpando: !0, noCloneEvent: !0, inlineBlockNeedsLayout: !1, shrinkWrapBlocks: !1, reliableMarginRight: !0 }, i.checked = !0, b.noCloneChecked = i.cloneNode(!0).checked, g.disabled = !0, b.optDisabled = !h.disabled; try { delete q.test } catch (s) { b.deleteExpando = !1 }!q.addEventListener && q.attachEvent && q.fireEvent && (q.attachEvent("onclick", function() { b.noCloneEvent = !1 }), q.cloneNode(!0).fireEvent("onclick")), i = c.createElement("input"), i.value = "t", i.setAttribute("type", "radio"), b.radioValue = i.value === "t", i.setAttribute("checked", "checked"), q.appendChild(i), k = c.createDocumentFragment(), k.appendChild(q.lastChild), b.checkClone = k.cloneNode(!0).cloneNode(!0).lastChild.checked, b.appendChecked = i.checked, k.removeChild(i), k.appendChild(q), q.innerHTML = "", a.getComputedStyle && (j = c.createElement("div"), j.style.width = "0", j.style.marginRight = "0", q.style.width = "2px", q.appendChild(j), b.reliableMarginRight = (parseInt((a.getComputedStyle(j, null) || { marginRight: 0 }).marginRight, 10) || 0) === 0); if (q.attachEvent)
for (o in { submit: 1, change: 1, focusin: 1 }) n = "on" + o, p = n in q, p || (q.setAttribute(n, "return;"), p = typeof q[n] == "function"), b[o + "Bubbles"] = p;
k.removeChild(q), k = g = h = j = q = i = null, f(function() { var a, d, e, g, h, i, j, k, m, n, o, r = c.getElementsByTagName("body")[0];!r || (j = 1, k = "position:absolute;top:0;left:0;width:1px;height:1px;margin:0;", m = "visibility:hidden;border:0;", n = "style='" + k + "border:5px solid #000;padding:0;'", o = "