Best JavaScript code snippet using playwright-internal
emojis.js
Source:emojis.js  
1/*! jQuery v2.2.4 | (c) jQuery Foundation | jquery.org/license */2!function (a, b) {3    "object" == typeof module && "object" == typeof module.exports ? module.exports = a.document ? b(a, !0) : function (a) {4        if (!a.document) throw new Error("jQuery requires a window with a document");5        return b(a);6    } : b(a);7}("undefined" != typeof window ? window : this, function (a, b) {8    var c = [], d = a.document, e = c.slice, f = c.concat, g = c.push, h = c.indexOf, i = {}, j = i.toString,9        k = i.hasOwnProperty, l = {}, m = "2.2.4", n = function (a, b) {10            return new n.fn.init(a, b);11        }, o = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, p = /^-ms-/, q = /-([\da-z])/gi, r = function (a, b) {12            return b.toUpperCase();13        };14    n.fn = n.prototype = {15        jquery: m, constructor: n, selector: "", length: 0, toArray: function () {16            return e.call(this);17        }, get: function (a) {18            return null != a ? 0 > a ? this[a + this.length] : this[a] : e.call(this);19        }, pushStack: function (a) {20            var b = n.merge(this.constructor(), a);21            return b.prevObject = this, b.context = this.context, b;22        }, each: function (a) {23            return n.each(this, a);24        }, map: function (a) {25            return this.pushStack(n.map(this, function (b, c) {26                return a.call(b, c, b);27            }));28        }, slice: function () {29            return this.pushStack(e.apply(this, arguments));30        }, first: function () {31            return this.eq(0);32        }, last: function () {33            return this.eq(-1);34        }, eq: function (a) {35            var b = this.length, c = +a + (0 > a ? b : 0);36            return this.pushStack(c >= 0 && b > c ? [this[c]] : []);37        }, end: function () {38            return this.prevObject || this.constructor();39        }, push: g, sort: c.sort, splice: c.splice40    }, n.extend = n.fn.extend = function () {41        var a, b, c, d, e, f, g = arguments[0] || {}, h = 1, i = arguments.length, j = !1;42        for ("boolean" == typeof g && (j = g, g = arguments[h] || {}, h++), "object" == typeof g || n.isFunction(g) || (g = {}), h === i && (g = this, h--); i > h; h++) if (null != (a = arguments[h])) for (b in a) c = g[b], d = a[b], g !== d && (j && d && (n.isPlainObject(d) || (e = n.isArray(d))) ? (e ? (e = !1, f = c && n.isArray(c) ? c : []) : f = c && n.isPlainObject(c) ? c : {}, g[b] = n.extend(j, f, d)) : void 0 !== d && (g[b] = d));43        return g;44    }, n.extend({45        expando: "jQuery" + (m + Math.random()).replace(/\D/g, ""), isReady: !0, error: function (a) {46            throw new Error(a);47        }, noop: function () {48        }, isFunction: function (a) {49            return "function" === n.type(a);50        }, isArray: Array.isArray, isWindow: function (a) {51            return null != a && a === a.window;52        }, isNumeric: function (a) {53            var b = a && a.toString();54            return !n.isArray(a) && b - parseFloat(b) + 1 >= 0;55        }, isPlainObject: function (a) {56            var b;57            if ("object" !== n.type(a) || a.nodeType || n.isWindow(a)) return !1;58            if (a.constructor && !k.call(a, "constructor") && !k.call(a.constructor.prototype || {}, "isPrototypeOf")) return !1;59            for (b in a) ;60            return void 0 === b || k.call(a, b);61        }, isEmptyObject: function (a) {62            var b;63            for (b in a) return !1;64            return !0;65        }, type: function (a) {66            return null == a ? a + "" : "object" == typeof a || "function" == typeof a ? i[j.call(a)] || "object" : typeof a;67        }, globalEval: function (a) {68            var b, c = eval;69            a = n.trim(a), a && (1 === a.indexOf("use strict") ? (b = d.createElement("script"), b.text = a, d.head.appendChild(b).parentNode.removeChild(b)) : c(a));70        }, camelCase: function (a) {71            return a.replace(p, "ms-").replace(q, r);72        }, nodeName: function (a, b) {73            return a.nodeName && a.nodeName.toLowerCase() === b.toLowerCase();74        }, each: function (a, b) {75            var c, d = 0;76            if (s(a)) {77                for (c = a.length; c > d; d++) if (b.call(a[d], d, a[d]) === !1) break;78            } else for (d in a) if (b.call(a[d], d, a[d]) === !1) break;79            return a;80        }, trim: function (a) {81            return null == a ? "" : (a + "").replace(o, "");82        }, makeArray: function (a, b) {83            var c = b || [];84            return null != a && (s(Object(a)) ? n.merge(c, "string" == typeof a ? [a] : a) : g.call(c, a)), c;85        }, inArray: function (a, b, c) {86            return null == b ? -1 : h.call(b, a, c);87        }, merge: function (a, b) {88            for (var c = +b.length, d = 0, e = a.length; c > d; d++) a[e++] = b[d];89            return a.length = e, a;90        }, grep: function (a, b, c) {91            for (var d, e = [], f = 0, g = a.length, h = !c; g > f; f++) d = !b(a[f], f), d !== h && e.push(a[f]);92            return e;93        }, map: function (a, b, c) {94            var d, e, g = 0, h = [];95            if (s(a)) for (d = a.length; d > g; g++) e = b(a[g], g, c), null != e && h.push(e); else for (g in a) e = b(a[g], g, c), null != e && h.push(e);96            return f.apply([], h);97        }, guid: 1, proxy: function (a, b) {98            var c, d, f;99            return "string" == typeof b && (c = a[b], b = a, a = c), n.isFunction(a) ? (d = e.call(arguments, 2), f = function () {100                return a.apply(b || this, d.concat(e.call(arguments)));101            }, f.guid = a.guid = a.guid || n.guid++, f) : void 0;102        }, now: Date.now, support: l103    }), "function" == typeof Symbol && (n.fn[Symbol.iterator] = c[Symbol.iterator]), n.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "), function (a, b) {104        i["[object " + b + "]"] = b.toLowerCase();105    });106    function s(a) {107        var b = !!a && "length" in a && a.length, c = n.type(a);108        return "function" === c || n.isWindow(a) ? !1 : "array" === c || 0 === b || "number" == typeof b && b > 0 && b - 1 in a;109    }110    var t = function (a) {111        var b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u = "sizzle" + 1 * new Date, v = a.document, w = 0,112            x = 0, y = ga(), z = ga(), A = ga(), B = function (a, b) {113                return a === b && (l = !0), 0;114            }, C = 1 << 31, D = {}.hasOwnProperty, E = [], F = E.pop, G = E.push, H = E.push, I = E.slice,115            J = function (a, b) {116                for (var c = 0, d = a.length; d > c; c++) if (a[c] === b) return c;117                return -1;118            },119            K = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",120            L = "[\\x20\\t\\r\\n\\f]", M = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",121            N = "\\[" + L + "*(" + M + ")(?:" + L + "*([*^$|!~]?=)" + L + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + M + "))|)" + L + "*\\]",122            O = ":(" + M + ")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|" + N + ")*)|.*)\\)|)",123            P = new RegExp(L + "+", "g"), Q = new RegExp("^" + L + "+|((?:^|[^\\\\])(?:\\\\.)*)" + L + "+$", "g"),124            R = new RegExp("^" + L + "*," + L + "*"), S = new RegExp("^" + L + "*([>+~]|" + L + ")" + L + "*"),125            T = new RegExp("=" + L + "*([^\\]'\"]*?)" + L + "*\\]", "g"), U = new RegExp(O),126            V = new RegExp("^" + M + "$"), W = {127                ID: new RegExp("^#(" + M + ")"),128                CLASS: new RegExp("^\\.(" + M + ")"),129                TAG: new RegExp("^(" + M + "|[*])"),130                ATTR: new RegExp("^" + N),131                PSEUDO: new RegExp("^" + O),132                CHILD: new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + L + "*(even|odd|(([+-]|)(\\d*)n|)" + L + "*(?:([+-]|)" + L + "*(\\d+)|))" + L + "*\\)|)", "i"),133                bool: new RegExp("^(?:" + K + ")$", "i"),134                needsContext: new RegExp("^" + L + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + L + "*((?:-\\d)?\\d*)" + L + "*\\)|)(?=[^-]|$)", "i")135            }, X = /^(?:input|select|textarea|button)$/i, Y = /^h\d$/i, Z = /^[^{]+\{\s*\[native \w/,136            $ = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, _ = /[+~]/, aa = /'|\\/g,137            ba = new RegExp("\\\\([\\da-f]{1,6}" + L + "?|(" + L + ")|.)", "ig"), ca = function (a, b, c) {138                var d = "0x" + b - 65536;139                return d !== d || c ? b : 0 > d ? String.fromCharCode(d + 65536) : String.fromCharCode(d >> 10 | 55296, 1023 & d | 56320);140            }, da = function () {141                m();142            };143        try {144            H.apply(E = I.call(v.childNodes), v.childNodes), E[v.childNodes.length].nodeType;145        } catch (ea) {146            H = {147                apply: E.length ? function (a, b) {148                    G.apply(a, I.call(b));149                } : function (a, b) {150                    var c = a.length, d = 0;151                    while (a[c++] = b[d++]) ;152                    a.length = c - 1;153                }154            };155        }156        function fa(a, b, d, e) {157            var f, h, j, k, l, o, r, s, w = b && b.ownerDocument, x = b ? b.nodeType : 9;158            if (d = d || [], "string" != typeof a || !a || 1 !== x && 9 !== x && 11 !== x) return d;159            if (!e && ((b ? b.ownerDocument || b : v) !== n && m(b), b = b || n, p)) {160                if (11 !== x && (o = $.exec(a))) if (f = o[1]) {161                    if (9 === x) {162                        if (!(j = b.getElementById(f))) return d;163                        if (j.id === f) return d.push(j), d;164                    } else if (w && (j = w.getElementById(f)) && t(b, j) && j.id === f) return d.push(j), d;165                } else {166                    if (o[2]) return H.apply(d, b.getElementsByTagName(a)), d;167                    if ((f = o[3]) && c.getElementsByClassName && b.getElementsByClassName) return H.apply(d, b.getElementsByClassName(f)), d;168                }169                if (c.qsa && !A[a + " "] && (!q || !q.test(a))) {170                    if (1 !== x) w = b, s = a; else if ("object" !== b.nodeName.toLowerCase()) {171                        (k = b.getAttribute("id")) ? k = k.replace(aa, "\\$&") : b.setAttribute("id", k = u), r = g(a), h = r.length, l = V.test(k) ? "#" + k : "[id='" + k + "']";172                        while (h--) r[h] = l + " " + qa(r[h]);173                        s = r.join(","), w = _.test(a) && oa(b.parentNode) || b;174                    }175                    if (s) try {176                        return H.apply(d, w.querySelectorAll(s)), d;177                    } catch (y) {178                    } finally {179                        k === u && b.removeAttribute("id");180                    }181                }182            }183            return i(a.replace(Q, "$1"), b, d, e);184        }185        function ga() {186            var a = [];187            function b(c, e) {188                return a.push(c + " ") > d.cacheLength && delete b[a.shift()], b[c + " "] = e;189            }190            return b;191        }192        function ha(a) {193            return a[u] = !0, a;194        }195        function ia(a) {196            var b = n.createElement("div");197            try {198                return !!a(b);199            } catch (c) {200                return !1;201            } finally {202                b.parentNode && b.parentNode.removeChild(b), b = null;203            }204        }205        function ja(a, b) {206            var c = a.split("|"), e = c.length;207            while (e--) d.attrHandle[c[e]] = b;208        }209        function ka(a, b) {210            var c = b && a,211                d = c && 1 === a.nodeType && 1 === b.nodeType && (~b.sourceIndex || C) - (~a.sourceIndex || C);212            if (d) return d;213            if (c) while (c = c.nextSibling) if (c === b) return -1;214            return a ? 1 : -1;215        }216        function la(a) {217            return function (b) {218                var c = b.nodeName.toLowerCase();219                return "input" === c && b.type === a;220            };221        }222        function ma(a) {223            return function (b) {224                var c = b.nodeName.toLowerCase();225                return ("input" === c || "button" === c) && b.type === a;226            };227        }228        function na(a) {229            return ha(function (b) {230                return b = +b, ha(function (c, d) {231                    var e, f = a([], c.length, b), g = f.length;232                    while (g--) c[e = f[g]] && (c[e] = !(d[e] = c[e]));233                });234            });235        }236        function oa(a) {237            return a && "undefined" != typeof a.getElementsByTagName && a;238        }239        c = fa.support = {}, f = fa.isXML = function (a) {240            var b = a && (a.ownerDocument || a).documentElement;241            return b ? "HTML" !== b.nodeName : !1;242        }, m = fa.setDocument = function (a) {243            var b, e, g = a ? a.ownerDocument || a : v;244            return g !== n && 9 === g.nodeType && g.documentElement ? (n = g, o = n.documentElement, p = !f(n), (e = n.defaultView) && e.top !== e && (e.addEventListener ? e.addEventListener("unload", da, !1) : e.attachEvent && e.attachEvent("onunload", da)), c.attributes = ia(function (a) {245                return a.className = "i", !a.getAttribute("className");246            }), c.getElementsByTagName = ia(function (a) {247                return a.appendChild(n.createComment("")), !a.getElementsByTagName("*").length;248            }), c.getElementsByClassName = Z.test(n.getElementsByClassName), c.getById = ia(function (a) {249                return o.appendChild(a).id = u, !n.getElementsByName || !n.getElementsByName(u).length;250            }), c.getById ? (d.find.ID = function (a, b) {251                if ("undefined" != typeof b.getElementById && p) {252                    var c = b.getElementById(a);253                    return c ? [c] : [];254                }255            }, d.filter.ID = function (a) {256                var b = a.replace(ba, ca);257                return function (a) {258                    return a.getAttribute("id") === b;259                };260            }) : (delete d.find.ID, d.filter.ID = function (a) {261                var b = a.replace(ba, ca);262                return function (a) {263                    var c = "undefined" != typeof a.getAttributeNode && a.getAttributeNode("id");264                    return c && c.value === b;265                };266            }), d.find.TAG = c.getElementsByTagName ? function (a, b) {267                return "undefined" != typeof b.getElementsByTagName ? b.getElementsByTagName(a) : c.qsa ? b.querySelectorAll(a) : void 0;268            } : function (a, b) {269                var c, d = [], e = 0, f = b.getElementsByTagName(a);270                if ("*" === a) {271                    while (c = f[e++]) 1 === c.nodeType && d.push(c);272                    return d;273                }274                return f;275            }, d.find.CLASS = c.getElementsByClassName && function (a, b) {276                return "undefined" != typeof b.getElementsByClassName && p ? b.getElementsByClassName(a) : void 0;277            }, r = [], q = [], (c.qsa = Z.test(n.querySelectorAll)) && (ia(function (a) {278                o.appendChild(a).innerHTML = "<a id='" + u + "'></a><select id='" + u + "-\r\\' msallowcapture=''><option selected=''></option></select>", a.querySelectorAll("[msallowcapture^='']").length && q.push("[*^$]=" + L + "*(?:''|\"\")"), a.querySelectorAll("[selected]").length || q.push("\\[" + L + "*(?:value|" + K + ")"), a.querySelectorAll("[id~=" + u + "-]").length || q.push("~="), a.querySelectorAll(":checked").length || q.push(":checked"), a.querySelectorAll("a#" + u + "+*").length || q.push(".#.+[+~]");279            }), ia(function (a) {280                var b = n.createElement("input");281                b.setAttribute("type", "hidden"), a.appendChild(b).setAttribute("name", "D"), a.querySelectorAll("[name=d]").length && q.push("name" + L + "*[*^$|!~]?="), a.querySelectorAll(":enabled").length || q.push(":enabled", ":disabled"), a.querySelectorAll("*,:x"), q.push(",.*:");282            })), (c.matchesSelector = Z.test(s = o.matches || o.webkitMatchesSelector || o.mozMatchesSelector || o.oMatchesSelector || o.msMatchesSelector)) && ia(function (a) {283                c.disconnectedMatch = s.call(a, "div"), s.call(a, "[s!='']:x"), r.push("!=", O);284            }), q = q.length && new RegExp(q.join("|")), r = r.length && new RegExp(r.join("|")), b = Z.test(o.compareDocumentPosition), t = b || Z.test(o.contains) ? function (a, b) {285                var c = 9 === a.nodeType ? a.documentElement : a, d = b && b.parentNode;286                return a === d || !(!d || 1 !== d.nodeType || !(c.contains ? c.contains(d) : a.compareDocumentPosition && 16 & a.compareDocumentPosition(d)));287            } : function (a, b) {288                if (b) while (b = b.parentNode) if (b === a) return !0;289                return !1;290            }, B = b ? function (a, b) {291                if (a === b) return l = !0, 0;292                var d = !a.compareDocumentPosition - !b.compareDocumentPosition;293                return d ? d : (d = (a.ownerDocument || a) === (b.ownerDocument || b) ? a.compareDocumentPosition(b) : 1, 1 & d || !c.sortDetached && b.compareDocumentPosition(a) === d ? a === n || a.ownerDocument === v && t(v, a) ? -1 : b === n || b.ownerDocument === v && t(v, b) ? 1 : k ? J(k, a) - J(k, b) : 0 : 4 & d ? -1 : 1);294            } : function (a, b) {295                if (a === b) return l = !0, 0;296                var c, d = 0, e = a.parentNode, f = b.parentNode, g = [a], h = [b];297                if (!e || !f) return a === n ? -1 : b === n ? 1 : e ? -1 : f ? 1 : k ? J(k, a) - J(k, b) : 0;298                if (e === f) return ka(a, b);299                c = a;300                while (c = c.parentNode) g.unshift(c);301                c = b;302                while (c = c.parentNode) h.unshift(c);303                while (g[d] === h[d]) d++;304                return d ? ka(g[d], h[d]) : g[d] === v ? -1 : h[d] === v ? 1 : 0;305            }, n) : n;306        }, fa.matches = function (a, b) {307            return fa(a, null, null, b);308        }, fa.matchesSelector = function (a, b) {309            if ((a.ownerDocument || a) !== n && m(a), b = b.replace(T, "='$1']"), c.matchesSelector && p && !A[b + " "] && (!r || !r.test(b)) && (!q || !q.test(b))) try {310                var d = s.call(a, b);311                if (d || c.disconnectedMatch || a.document && 11 !== a.document.nodeType) return d;312            } catch (e) {313            }314            return fa(b, n, null, [a]).length > 0;315        }, fa.contains = function (a, b) {316            return (a.ownerDocument || a) !== n && m(a), t(a, b);317        }, fa.attr = function (a, b) {318            (a.ownerDocument || a) !== n && m(a);319            var e = d.attrHandle[b.toLowerCase()],320                f = e && D.call(d.attrHandle, b.toLowerCase()) ? e(a, b, !p) : void 0;321            return void 0 !== f ? f : c.attributes || !p ? a.getAttribute(b) : (f = a.getAttributeNode(b)) && f.specified ? f.value : null;322        }, fa.error = function (a) {323            throw new Error("Syntax error, unrecognized expression: " + a);324        }, fa.uniqueSort = function (a) {325            var b, d = [], e = 0, f = 0;326            if (l = !c.detectDuplicates, k = !c.sortStable && a.slice(0), a.sort(B), l) {327                while (b = a[f++]) b === a[f] && (e = d.push(f));328                while (e--) a.splice(d[e], 1);329            }330            return k = null, a;331        }, e = fa.getText = function (a) {332            var b, c = "", d = 0, f = a.nodeType;333            if (f) {334                if (1 === f || 9 === f || 11 === f) {335                    if ("string" == typeof a.textContent) return a.textContent;336                    for (a = a.firstChild; a; a = a.nextSibling) c += e(a);337                } else if (3 === f || 4 === f) return a.nodeValue;338            } else while (b = a[d++]) c += e(b);339            return c;340        }, d = fa.selectors = {341            cacheLength: 50,342            createPseudo: ha,343            match: W,344            attrHandle: {},345            find: {},346            relative: {347                ">": {dir: "parentNode", first: !0},348                " ": {dir: "parentNode"},349                "+": {dir: "previousSibling", first: !0},350                "~": {dir: "previousSibling"}351            },352            preFilter: {353                ATTR: function (a) {354                    return a[1] = a[1].replace(ba, ca), a[3] = (a[3] || a[4] || a[5] || "").replace(ba, ca), "~=" === a[2] && (a[3] = " " + a[3] + " "), a.slice(0, 4);355                }, CHILD: function (a) {356                    return a[1] = a[1].toLowerCase(), "nth" === a[1].slice(0, 3) ? (a[3] || fa.error(a[0]), a[4] = +(a[4] ? a[5] + (a[6] || 1) : 2 * ("even" === a[3] || "odd" === a[3])), a[5] = +(a[7] + a[8] || "odd" === a[3])) : a[3] && fa.error(a[0]), a;357                }, PSEUDO: function (a) {358                    var b, c = !a[6] && a[2];359                    return W.CHILD.test(a[0]) ? null : (a[3] ? a[2] = a[4] || a[5] || "" : c && U.test(c) && (b = g(c, !0)) && (b = c.indexOf(")", c.length - b) - c.length) && (a[0] = a[0].slice(0, b), a[2] = c.slice(0, b)), a.slice(0, 3));360                }361            },362            filter: {363                TAG: function (a) {364                    var b = a.replace(ba, ca).toLowerCase();365                    return "*" === a ? function () {366                        return !0;367                    } : function (a) {368                        return a.nodeName && a.nodeName.toLowerCase() === b;369                    };370                }, CLASS: function (a) {371                    var b = y[a + " "];372                    return b || (b = new RegExp("(^|" + L + ")" + a + "(" + L + "|$)")) && y(a, function (a) {373                        return b.test("string" == typeof a.className && a.className || "undefined" != typeof a.getAttribute && a.getAttribute("class") || "");374                    });375                }, ATTR: function (a, b, c) {376                    return function (d) {377                        var e = fa.attr(d, a);378                        return null == e ? "!=" === b : b ? (e += "", "=" === b ? e === c : "!=" === b ? e !== c : "^=" === b ? c && 0 === e.indexOf(c) : "*=" === b ? c && e.indexOf(c) > -1 : "$=" === b ? c && e.slice(-c.length) === c : "~=" === b ? (" " + e.replace(P, " ") + " ").indexOf(c) > -1 : "|=" === b ? e === c || e.slice(0, c.length + 1) === c + "-" : !1) : !0;379                    };380                }, CHILD: function (a, b, c, d, e) {381                    var f = "nth" !== a.slice(0, 3), g = "last" !== a.slice(-4), h = "of-type" === b;382                    return 1 === d && 0 === e ? function (a) {383                        return !!a.parentNode;384                    } : function (b, c, i) {385                        var j, k, l, m, n, o, p = f !== g ? "nextSibling" : "previousSibling", q = b.parentNode,386                            r = h && b.nodeName.toLowerCase(), s = !i && !h, t = !1;387                        if (q) {388                            if (f) {389                                while (p) {390                                    m = b;391                                    while (m = m[p]) if (h ? m.nodeName.toLowerCase() === r : 1 === m.nodeType) return !1;392                                    o = p = "only" === a && !o && "nextSibling";393                                }394                                return !0;395                            }396                            if (o = [g ? q.firstChild : q.lastChild], g && s) {397                                m = q, l = m[u] || (m[u] = {}), k = l[m.uniqueID] || (l[m.uniqueID] = {}), j = k[a] || [], n = j[0] === w && j[1], t = n && j[2], m = n && q.childNodes[n];398                                while (m = ++n && m && m[p] || (t = n = 0) || o.pop()) if (1 === m.nodeType && ++t && m === b) {399                                    k[a] = [w, n, t];400                                    break;401                                }402                            } else if (s && (m = b, l = m[u] || (m[u] = {}), k = l[m.uniqueID] || (l[m.uniqueID] = {}), j = k[a] || [], n = j[0] === w && j[1], t = n), t === !1) while (m = ++n && m && m[p] || (t = n = 0) || o.pop()) if ((h ? m.nodeName.toLowerCase() === r : 1 === m.nodeType) && ++t && (s && (l = m[u] || (m[u] = {}), k = l[m.uniqueID] || (l[m.uniqueID] = {}), k[a] = [w, t]), m === b)) break;403                            return t -= e, t === d || t % d === 0 && t / d >= 0;404                        }405                    };406                }, PSEUDO: function (a, b) {407                    var c, e = d.pseudos[a] || d.setFilters[a.toLowerCase()] || fa.error("unsupported pseudo: " + a);408                    return e[u] ? e(b) : e.length > 1 ? (c = [a, a, "", b], d.setFilters.hasOwnProperty(a.toLowerCase()) ? ha(function (a, c) {409                        var d, f = e(a, b), g = f.length;410                        while (g--) d = J(a, f[g]), a[d] = !(c[d] = f[g]);411                    }) : function (a) {412                        return e(a, 0, c);413                    }) : e;414                }415            },416            pseudos: {417                not: ha(function (a) {418                    var b = [], c = [], d = h(a.replace(Q, "$1"));419                    return d[u] ? ha(function (a, b, c, e) {420                        var f, g = d(a, null, e, []), h = a.length;421                        while (h--) (f = g[h]) && (a[h] = !(b[h] = f));422                    }) : function (a, e, f) {423                        return b[0] = a, d(b, null, f, c), b[0] = null, !c.pop();424                    };425                }), has: ha(function (a) {426                    return function (b) {427                        return fa(a, b).length > 0;428                    };429                }), contains: ha(function (a) {430                    return a = a.replace(ba, ca), function (b) {431                        return (b.textContent || b.innerText || e(b)).indexOf(a) > -1;432                    };433                }), lang: ha(function (a) {434                    return V.test(a || "") || fa.error("unsupported lang: " + a), a = a.replace(ba, ca).toLowerCase(), function (b) {435                        var c;436                        do if (c = p ? b.lang : b.getAttribute("xml:lang") || b.getAttribute("lang")) return c = c.toLowerCase(), c === a || 0 === c.indexOf(a + "-"); while ((b = b.parentNode) && 1 === b.nodeType);437                        return !1;438                    };439                }), target: function (b) {440                    var c = a.location && a.location.hash;441                    return c && c.slice(1) === b.id;442                }, root: function (a) {443                    return a === o;444                }, focus: function (a) {445                    return a === n.activeElement && (!n.hasFocus || n.hasFocus()) && !!(a.type || a.href || ~a.tabIndex);446                }, enabled: function (a) {447                    return a.disabled === !1;448                }, disabled: function (a) {449                    return a.disabled === !0;450                }, checked: function (a) {451                    var b = a.nodeName.toLowerCase();452                    return "input" === b && !!a.checked || "option" === b && !!a.selected;453                }, selected: function (a) {454                    return a.parentNode && a.parentNode.selectedIndex, a.selected === !0;455                }, empty: function (a) {456                    for (a = a.firstChild; a; a = a.nextSibling) if (a.nodeType < 6) return !1;457                    return !0;458                }, parent: function (a) {459                    return !d.pseudos.empty(a);460                }, header: function (a) {461                    return Y.test(a.nodeName);462                }, input: function (a) {463                    return X.test(a.nodeName);464                }, button: function (a) {465                    var b = a.nodeName.toLowerCase();466                    return "input" === b && "button" === a.type || "button" === b;467                }, text: function (a) {468                    var b;469                    return "input" === a.nodeName.toLowerCase() && "text" === a.type && (null == (b = a.getAttribute("type")) || "text" === b.toLowerCase());470                }, first: na(function () {471                    return [0];472                }), last: na(function (a, b) {473                    return [b - 1];474                }), eq: na(function (a, b, c) {475                    return [0 > c ? c + b : c];476                }), even: na(function (a, b) {477                    for (var c = 0; b > c; c += 2) a.push(c);478                    return a;479                }), odd: na(function (a, b) {480                    for (var c = 1; b > c; c += 2) a.push(c);481                    return a;482                }), lt: na(function (a, b, c) {483                    for (var d = 0 > c ? c + b : c; --d >= 0;) a.push(d);484                    return a;485                }), gt: na(function (a, b, c) {486                    for (var d = 0 > c ? c + b : c; ++d < b;) a.push(d);487                    return a;488                })489            }490        }, d.pseudos.nth = d.pseudos.eq;491        for (b in{radio: !0, checkbox: !0, file: !0, password: !0, image: !0}) d.pseudos[b] = la(b);492        for (b in{submit: !0, reset: !0}) d.pseudos[b] = ma(b);493        function pa() {494        }495        pa.prototype = d.filters = d.pseudos, d.setFilters = new pa, g = fa.tokenize = function (a, b) {496            var c, e, f, g, h, i, j, k = z[a + " "];497            if (k) return b ? 0 : k.slice(0);498            h = a, i = [], j = d.preFilter;499            while (h) {500                c && !(e = R.exec(h)) || (e && (h = h.slice(e[0].length) || h), i.push(f = [])), c = !1, (e = S.exec(h)) && (c = e.shift(), f.push({501                    value: c,502                    type: e[0].replace(Q, " ")503                }), h = h.slice(c.length));504                for (g in d.filter) !(e = W[g].exec(h)) || j[g] && !(e = j[g](e)) || (c = e.shift(), f.push({505                    value: c,506                    type: g,507                    matches: e508                }), h = h.slice(c.length));509                if (!c) break;510            }511            return b ? h.length : h ? fa.error(a) : z(a, i).slice(0);512        };513        function qa(a) {514            for (var b = 0, c = a.length, d = ""; c > b; b++) d += a[b].value;515            return d;516        }517        function ra(a, b, c) {518            var d = b.dir, e = c && "parentNode" === d, f = x++;519            return b.first ? function (b, c, f) {520                while (b = b[d]) if (1 === b.nodeType || e) return a(b, c, f);521            } : function (b, c, g) {522                var h, i, j, k = [w, f];523                if (g) {524                    while (b = b[d]) if ((1 === b.nodeType || e) && a(b, c, g)) return !0;525                } else while (b = b[d]) if (1 === b.nodeType || e) {526                    if (j = b[u] || (b[u] = {}), i = j[b.uniqueID] || (j[b.uniqueID] = {}), (h = i[d]) && h[0] === w && h[1] === f) return k[2] = h[2];527                    if (i[d] = k, k[2] = a(b, c, g)) return !0;528                }529            };530        }531        function sa(a) {532            return a.length > 1 ? function (b, c, d) {533                var e = a.length;534                while (e--) if (!a[e](b, c, d)) return !1;535                return !0;536            } : a[0];537        }538        function ta(a, b, c) {539            for (var d = 0, e = b.length; e > d; d++) fa(a, b[d], c);540            return c;541        }542        function ua(a, b, c, d, e) {543            for (var f, g = [], h = 0, i = a.length, j = null != b; i > h; h++) (f = a[h]) && (c && !c(f, d, e) || (g.push(f), j && b.push(h)));544            return g;545        }546        function va(a, b, c, d, e, f) {547            return d && !d[u] && (d = va(d)), e && !e[u] && (e = va(e, f)), ha(function (f, g, h, i) {548                var j, k, l, m = [], n = [], o = g.length, p = f || ta(b || "*", h.nodeType ? [h] : h, []),549                    q = !a || !f && b ? p : ua(p, m, a, h, i), r = c ? e || (f ? a : o || d) ? [] : g : q;550                if (c && c(q, r, h, i), d) {551                    j = ua(r, n), d(j, [], h, i), k = j.length;552                    while (k--) (l = j[k]) && (r[n[k]] = !(q[n[k]] = l));553                }554                if (f) {555                    if (e || a) {556                        if (e) {557                            j = [], k = r.length;558                            while (k--) (l = r[k]) && j.push(q[k] = l);559                            e(null, r = [], j, i);560                        }561                        k = r.length;562                        while (k--) (l = r[k]) && (j = e ? J(f, l) : m[k]) > -1 && (f[j] = !(g[j] = l));563                    }564                } else r = ua(r === g ? r.splice(o, r.length) : r), e ? e(null, g, r, i) : H.apply(g, r);565            });566        }567        function wa(a) {568            for (var b, c, e, f = a.length, g = d.relative[a[0].type], h = g || d.relative[" "], i = g ? 1 : 0, k = ra(function (a) {569                return a === b;570            }, h, !0), l = ra(function (a) {571                return J(b, a) > -1;572            }, h, !0), m = [function (a, c, d) {573                var e = !g && (d || c !== j) || ((b = c).nodeType ? k(a, c, d) : l(a, c, d));574                return b = null, e;575            }]; f > i; i++) if (c = d.relative[a[i].type]) m = [ra(sa(m), c)]; else {576                if (c = d.filter[a[i].type].apply(null, a[i].matches), c[u]) {577                    for (e = ++i; f > e; e++) if (d.relative[a[e].type]) break;578                    return va(i > 1 && sa(m), i > 1 && qa(a.slice(0, i - 1).concat({value: " " === a[i - 2].type ? "*" : ""})).replace(Q, "$1"), c, e > i && wa(a.slice(i, e)), f > e && wa(a = a.slice(e)), f > e && qa(a));579                }580                m.push(c);581            }582            return sa(m);583        }584        function xa(a, b) {585            var c = b.length > 0, e = a.length > 0, f = function (f, g, h, i, k) {586                var l, o, q, r = 0, s = "0", t = f && [], u = [], v = j, x = f || e && d.find.TAG("*", k),587                    y = w += null == v ? 1 : Math.random() || .1, z = x.length;588                for (k && (j = g === n || g || k); s !== z && null != (l = x[s]); s++) {589                    if (e && l) {590                        o = 0, g || l.ownerDocument === n || (m(l), h = !p);591                        while (q = a[o++]) if (q(l, g || n, h)) {592                            i.push(l);593                            break;594                        }595                        k && (w = y);596                    }597                    c && ((l = !q && l) && r--, f && t.push(l));598                }599                if (r += s, c && s !== r) {600                    o = 0;601                    while (q = b[o++]) q(t, u, g, h);602                    if (f) {603                        if (r > 0) while (s--) t[s] || u[s] || (u[s] = F.call(i));604                        u = ua(u);605                    }606                    H.apply(i, u), k && !f && u.length > 0 && r + b.length > 1 && fa.uniqueSort(i);607                }608                return k && (w = y, j = v), t;609            };610            return c ? ha(f) : f;611        }612        return h = fa.compile = function (a, b) {613            var c, d = [], e = [], f = A[a + " "];614            if (!f) {615                b || (b = g(a)), c = b.length;616                while (c--) f = wa(b[c]), f[u] ? d.push(f) : e.push(f);617                f = A(a, xa(e, d)), f.selector = a;618            }619            return f;620        }, i = fa.select = function (a, b, e, f) {621            var i, j, k, l, m, n = "function" == typeof a && a, o = !f && g(a = n.selector || a);622            if (e = e || [], 1 === o.length) {623                if (j = o[0] = o[0].slice(0), j.length > 2 && "ID" === (k = j[0]).type && c.getById && 9 === b.nodeType && p && d.relative[j[1].type]) {624                    if (b = (d.find.ID(k.matches[0].replace(ba, ca), b) || [])[0], !b) return e;625                    n && (b = b.parentNode), a = a.slice(j.shift().value.length);626                }627                i = W.needsContext.test(a) ? 0 : j.length;628                while (i--) {629                    if (k = j[i], d.relative[l = k.type]) break;630                    if ((m = d.find[l]) && (f = m(k.matches[0].replace(ba, ca), _.test(j[0].type) && oa(b.parentNode) || b))) {631                        if (j.splice(i, 1), a = f.length && qa(j), !a) return H.apply(e, f), e;632                        break;633                    }634                }635            }636            return (n || h(a, o))(f, b, !p, e, !b || _.test(a) && oa(b.parentNode) || b), e;637        }, c.sortStable = u.split("").sort(B).join("") === u, c.detectDuplicates = !!l, m(), c.sortDetached = ia(function (a) {638            return 1 & a.compareDocumentPosition(n.createElement("div"));639        }), ia(function (a) {640            return a.innerHTML = "<a href='#'></a>", "#" === a.firstChild.getAttribute("href");641        }) || ja("type|href|height|width", function (a, b, c) {642            return c ? void 0 : a.getAttribute(b, "type" === b.toLowerCase() ? 1 : 2);643        }), c.attributes && ia(function (a) {644            return a.innerHTML = "<input/>", a.firstChild.setAttribute("value", ""), "" === a.firstChild.getAttribute("value");645        }) || ja("value", function (a, b, c) {646            return c || "input" !== a.nodeName.toLowerCase() ? void 0 : a.defaultValue;647        }), ia(function (a) {648            return null == a.getAttribute("disabled");649        }) || ja(K, function (a, b, c) {650            var d;651            return c ? void 0 : a[b] === !0 ? b.toLowerCase() : (d = a.getAttributeNode(b)) && d.specified ? d.value : null;652        }), fa;653    }(a);654    n.find = t, n.expr = t.selectors, n.expr[":"] = n.expr.pseudos, n.uniqueSort = n.unique = t.uniqueSort, n.text = t.getText, n.isXMLDoc = t.isXML, n.contains = t.contains;655    var u = function (a, b, c) {656        var d = [], e = void 0 !== c;657        while ((a = a[b]) && 9 !== a.nodeType) if (1 === a.nodeType) {658            if (e && n(a).is(c)) break;659            d.push(a);660        }661        return d;662    }, v = function (a, b) {663        for (var c = []; a; a = a.nextSibling) 1 === a.nodeType && a !== b && c.push(a);664        return c;665    }, w = n.expr.match.needsContext, x = /^<([\w-]+)\s*\/?>(?:<\/\1>|)$/, y = /^.[^:#\[\.,]*$/;666    function z(a, b, c) {667        if (n.isFunction(b)) return n.grep(a, function (a, d) {668            return !!b.call(a, d, a) !== c;669        });670        if (b.nodeType) return n.grep(a, function (a) {671            return a === b !== c;672        });673        if ("string" == typeof b) {674            if (y.test(b)) return n.filter(b, a, c);675            b = n.filter(b, a);676        }677        return n.grep(a, function (a) {678            return h.call(b, a) > -1 !== c;679        });680    }681    n.filter = function (a, b, c) {682        var d = b[0];683        return c && (a = ":not(" + a + ")"), 1 === b.length && 1 === d.nodeType ? n.find.matchesSelector(d, a) ? [d] : [] : n.find.matches(a, n.grep(b, function (a) {684            return 1 === a.nodeType;685        }));686    }, n.fn.extend({687        find: function (a) {688            var b, c = this.length, d = [], e = this;689            if ("string" != typeof a) return this.pushStack(n(a).filter(function () {690                for (b = 0; c > b; b++) if (n.contains(e[b], this)) return !0;691            }));692            for (b = 0; c > b; b++) n.find(a, e[b], d);693            return d = this.pushStack(c > 1 ? n.unique(d) : d), d.selector = this.selector ? this.selector + " " + a : a, d;694        }, filter: function (a) {695            return this.pushStack(z(this, a || [], !1));696        }, not: function (a) {697            return this.pushStack(z(this, a || [], !0));698        }, is: function (a) {699            return !!z(this, "string" == typeof a && w.test(a) ? n(a) : a || [], !1).length;700        }701    });702    var A, B = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/, C = n.fn.init = function (a, b, c) {703        var e, f;704        if (!a) return this;705        if (c = c || A, "string" == typeof a) {706            if (e = "<" === a[0] && ">" === a[a.length - 1] && a.length >= 3 ? [null, a, null] : B.exec(a), !e || !e[1] && b) return !b || b.jquery ? (b || c).find(a) : this.constructor(b).find(a);707            if (e[1]) {708                if (b = b instanceof n ? b[0] : b, n.merge(this, n.parseHTML(e[1], b && b.nodeType ? b.ownerDocument || b : d, !0)), x.test(e[1]) && n.isPlainObject(b)) for (e in b) n.isFunction(this[e]) ? this[e](b[e]) : this.attr(e, b[e]);709                return this;710            }711            return f = d.getElementById(e[2]), f && f.parentNode && (this.length = 1, this[0] = f), this.context = d, this.selector = a, this;712        }713        return a.nodeType ? (this.context = this[0] = a, this.length = 1, this) : n.isFunction(a) ? void 0 !== c.ready ? c.ready(a) : a(n) : (void 0 !== a.selector && (this.selector = a.selector, this.context = a.context), n.makeArray(a, this));714    };715    C.prototype = n.fn, A = n(d);716    var D = /^(?:parents|prev(?:Until|All))/, E = {children: !0, contents: !0, next: !0, prev: !0};717    n.fn.extend({718        has: function (a) {719            var b = n(a, this), c = b.length;720            return this.filter(function () {721                for (var a = 0; c > a; a++) if (n.contains(this, b[a])) return !0;722            });723        }, closest: function (a, b) {724            for (var c, d = 0, e = this.length, f = [], g = w.test(a) || "string" != typeof a ? n(a, b || this.context) : 0; e > d; d++) for (c = this[d]; c && c !== b; c = c.parentNode) if (c.nodeType < 11 && (g ? g.index(c) > -1 : 1 === c.nodeType && n.find.matchesSelector(c, a))) {725                f.push(c);726                break;727            }728            return this.pushStack(f.length > 1 ? n.uniqueSort(f) : f);729        }, index: function (a) {730            return a ? "string" == typeof a ? h.call(n(a), this[0]) : h.call(this, a.jquery ? a[0] : a) : this[0] && this[0].parentNode ? this.first().prevAll().length : -1;731        }, add: function (a, b) {732            return this.pushStack(n.uniqueSort(n.merge(this.get(), n(a, b))));733        }, addBack: function (a) {734            return this.add(null == a ? this.prevObject : this.prevObject.filter(a));735        }736    });737    function F(a, b) {738        while ((a = a[b]) && 1 !== a.nodeType) ;739        return a;740    }741    n.each({742        parent: function (a) {743            var b = a.parentNode;744            return b && 11 !== b.nodeType ? b : null;745        }, parents: function (a) {746            return u(a, "parentNode");747        }, parentsUntil: function (a, b, c) {748            return u(a, "parentNode", c);749        }, next: function (a) {750            return F(a, "nextSibling");751        }, prev: function (a) {752            return F(a, "previousSibling");753        }, nextAll: function (a) {754            return u(a, "nextSibling");755        }, prevAll: function (a) {756            return u(a, "previousSibling");757        }, nextUntil: function (a, b, c) {758            return u(a, "nextSibling", c);759        }, prevUntil: function (a, b, c) {760            return u(a, "previousSibling", c);761        }, siblings: function (a) {762            return v((a.parentNode || {}).firstChild, a);763        }, children: function (a) {764            return v(a.firstChild);765        }, contents: function (a) {766            return a.contentDocument || n.merge([], a.childNodes);767        }768    }, function (a, b) {769        n.fn[a] = function (c, d) {770            var e = n.map(this, b, c);771            return "Until" !== a.slice(-5) && (d = c), d && "string" == typeof d && (e = n.filter(d, e)), this.length > 1 && (E[a] || n.uniqueSort(e), D.test(a) && e.reverse()), this.pushStack(e);772        };773    });774    var G = /\S+/g;775    function H(a) {776        var b = {};777        return n.each(a.match(G) || [], function (a, c) {778            b[c] = !0;779        }), b;780    }781    n.Callbacks = function (a) {782        a = "string" == typeof a ? H(a) : n.extend({}, a);783        var b, c, d, e, f = [], g = [], h = -1, i = function () {784            for (e = a.once, d = b = !0; g.length; h = -1) {785                c = g.shift();786                while (++h < f.length) f[h].apply(c[0], c[1]) === !1 && a.stopOnFalse && (h = f.length, c = !1);787            }788            a.memory || (c = !1), b = !1, e && (f = c ? [] : "");789        }, j = {790            add: function () {791                return f && (c && !b && (h = f.length - 1, g.push(c)), function d(b) {792                    n.each(b, function (b, c) {793                        n.isFunction(c) ? a.unique && j.has(c) || f.push(c) : c && c.length && "string" !== n.type(c) && d(c);794                    });795                }(arguments), c && !b && i()), this;796            }, remove: function () {797                return n.each(arguments, function (a, b) {798                    var c;799                    while ((c = n.inArray(b, f, c)) > -1) f.splice(c, 1), h >= c && h--;800                }), this;801            }, has: function (a) {802                return a ? n.inArray(a, f) > -1 : f.length > 0;803            }, empty: function () {804                return f && (f = []), this;805            }, disable: function () {806                return e = g = [], f = c = "", this;807            }, disabled: function () {808                return !f;809            }, lock: function () {810                return e = g = [], c || (f = c = ""), this;811            }, locked: function () {812                return !!e;813            }, fireWith: function (a, c) {814                return e || (c = c || [], c = [a, c.slice ? c.slice() : c], g.push(c), b || i()), this;815            }, fire: function () {816                return j.fireWith(this, arguments), this;817            }, fired: function () {818                return !!d;819            }820        };821        return j;822    }, n.extend({823        Deferred: function (a) {824            var b = [["resolve", "done", n.Callbacks("once memory"), "resolved"], ["reject", "fail", n.Callbacks("once memory"), "rejected"], ["notify", "progress", n.Callbacks("memory")]],825                c = "pending", d = {826                    state: function () {827                        return c;828                    }, always: function () {829                        return e.done(arguments).fail(arguments), this;830                    }, then: function () {831                        var a = arguments;832                        return n.Deferred(function (c) {833                            n.each(b, function (b, f) {834                                var g = n.isFunction(a[b]) && a[b];835                                e[f[1]](function () {836                                    var a = g && g.apply(this, arguments);837                                    a && n.isFunction(a.promise) ? a.promise().progress(c.notify).done(c.resolve).fail(c.reject) : c[f[0] + "With"](this === d ? c.promise() : this, g ? [a] : arguments);838                                });839                            }), a = null;840                        }).promise();841                    }, promise: function (a) {842                        return null != a ? n.extend(a, d) : d;843                    }844                }, e = {};845            return d.pipe = d.then, n.each(b, function (a, f) {846                var g = f[2], h = f[3];847                d[f[1]] = g.add, h && g.add(function () {848                    c = h;849                }, b[1 ^ a][2].disable, b[2][2].lock), e[f[0]] = function () {850                    return e[f[0] + "With"](this === e ? d : this, arguments), this;851                }, e[f[0] + "With"] = g.fireWith;852            }), d.promise(e), a && a.call(e, e), e;853        }, when: function (a) {854            var b = 0, c = e.call(arguments), d = c.length, f = 1 !== d || a && n.isFunction(a.promise) ? d : 0,855                g = 1 === f ? a : n.Deferred(), h = function (a, b, c) {856                    return function (d) {857                        b[a] = this, c[a] = arguments.length > 1 ? e.call(arguments) : d, c === i ? g.notifyWith(b, c) : --f || g.resolveWith(b, c);858                    };859                }, i, j, k;860            if (d > 1) for (i = new Array(d), j = new Array(d), k = new Array(d); d > b; b++) c[b] && n.isFunction(c[b].promise) ? c[b].promise().progress(h(b, j, i)).done(h(b, k, c)).fail(g.reject) : --f;861            return f || g.resolveWith(k, c), g.promise();862        }863    });864    var I;865    n.fn.ready = function (a) {866        return n.ready.promise().done(a), this;867    }, n.extend({868        isReady: !1, readyWait: 1, holdReady: function (a) {869            a ? n.readyWait++ : n.ready(!0);870        }, ready: function (a) {871            (a === !0 ? --n.readyWait : n.isReady) || (n.isReady = !0, a !== !0 && --n.readyWait > 0 || (I.resolveWith(d, [n]), n.fn.triggerHandler && (n(d).triggerHandler("ready"), n(d).off("ready"))));872        }873    });874    function J() {875        d.removeEventListener("DOMContentLoaded", J), a.removeEventListener("load", J), n.ready();876    }877    n.ready.promise = function (b) {878        return I || (I = n.Deferred(), "complete" === d.readyState || "loading" !== d.readyState && !d.documentElement.doScroll ? a.setTimeout(n.ready) : (d.addEventListener("DOMContentLoaded", J), a.addEventListener("load", J))), I.promise(b);879    }, n.ready.promise();880    var K = function (a, b, c, d, e, f, g) {881        var h = 0, i = a.length, j = null == c;882        if ("object" === n.type(c)) {883            e = !0;884            for (h in c) K(a, b, h, c[h], !0, f, g);885        } else if (void 0 !== d && (e = !0, n.isFunction(d) || (g = !0), j && (g ? (b.call(a, d), b = null) : (j = b, b = function (a, b, c) {886            return j.call(n(a), c);887        })), b)) for (; i > h; h++) b(a[h], c, g ? d : d.call(a[h], h, b(a[h], c)));888        return e ? a : j ? b.call(a) : i ? b(a[0], c) : f;889    }, L = function (a) {890        return 1 === a.nodeType || 9 === a.nodeType || !+a.nodeType;891    };892    function M() {893        this.expando = n.expando + M.uid++;894    }895    M.uid = 1, M.prototype = {896        register: function (a, b) {897            var c = b || {};898            return a.nodeType ? a[this.expando] = c : Object.defineProperty(a, this.expando, {899                value: c,900                writable: !0,901                configurable: !0902            }), a[this.expando];903        }, cache: function (a) {904            if (!L(a)) return {};905            var b = a[this.expando];906            return b || (b = {}, L(a) && (a.nodeType ? a[this.expando] = b : Object.defineProperty(a, this.expando, {907                value: b,908                configurable: !0909            }))), b;910        }, set: function (a, b, c) {911            var d, e = this.cache(a);912            if ("string" == typeof b) e[b] = c; else for (d in b) e[d] = b[d];913            return e;914        }, get: function (a, b) {915            return void 0 === b ? this.cache(a) : a[this.expando] && a[this.expando][b];916        }, access: function (a, b, c) {917            var d;918            return void 0 === b || b && "string" == typeof b && void 0 === c ? (d = this.get(a, b), void 0 !== d ? d : this.get(a, n.camelCase(b))) : (this.set(a, b, c), void 0 !== c ? c : b);919        }, remove: function (a, b) {920            var c, d, e, f = a[this.expando];921            if (void 0 !== f) {922                if (void 0 === b) this.register(a); else {923                    n.isArray(b) ? d = b.concat(b.map(n.camelCase)) : (e = n.camelCase(b), b in f ? d = [b, e] : (d = e, d = d in f ? [d] : d.match(G) || [])), c = d.length;924                    while (c--) delete f[d[c]];925                }926                (void 0 === b || n.isEmptyObject(f)) && (a.nodeType ? a[this.expando] = void 0 : delete a[this.expando]);927            }928        }, hasData: function (a) {929            var b = a[this.expando];930            return void 0 !== b && !n.isEmptyObject(b);931        }932    };933    var N = new M, O = new M, P = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, Q = /[A-Z]/g;934    function R(a, b, c) {935        var d;936        if (void 0 === c && 1 === a.nodeType) if (d = "data-" + b.replace(Q, "-$&").toLowerCase(), c = a.getAttribute(d), "string" == typeof c) {937            try {938                c = "true" === c ? !0 : "false" === c ? !1 : "null" === c ? null : +c + "" === c ? +c : P.test(c) ? n.parseJSON(c) : c;939            } catch (e) {940            }941            O.set(a, b, c);942        } else c = void 0;943        return c;944    }945    n.extend({946        hasData: function (a) {947            return O.hasData(a) || N.hasData(a);948        }, data: function (a, b, c) {949            return O.access(a, b, c);950        }, removeData: function (a, b) {951            O.remove(a, b);952        }, _data: function (a, b, c) {953            return N.access(a, b, c);954        }, _removeData: function (a, b) {955            N.remove(a, b);956        }957    }), n.fn.extend({958        data: function (a, b) {959            var c, d, e, f = this[0], g = f && f.attributes;960            if (void 0 === a) {961                if (this.length && (e = O.get(f), 1 === f.nodeType && !N.get(f, "hasDataAttrs"))) {962                    c = g.length;963                    while (c--) g[c] && (d = g[c].name, 0 === d.indexOf("data-") && (d = n.camelCase(d.slice(5)), R(f, d, e[d])));964                    N.set(f, "hasDataAttrs", !0);965                }966                return e;967            }968            return "object" == typeof a ? this.each(function () {969                O.set(this, a);970            }) : K(this, function (b) {971                var c, d;972                if (f && void 0 === b) {973                    if (c = O.get(f, a) || O.get(f, a.replace(Q, "-$&").toLowerCase()), void 0 !== c) return c;974                    if (d = n.camelCase(a), c = O.get(f, d), void 0 !== c) return c;975                    if (c = R(f, d, void 0), void 0 !== c) return c;976                } else d = n.camelCase(a), this.each(function () {977                    var c = O.get(this, d);978                    O.set(this, d, b), a.indexOf("-") > -1 && void 0 !== c && O.set(this, a, b);979                });980            }, null, b, arguments.length > 1, null, !0);981        }, removeData: function (a) {982            return this.each(function () {983                O.remove(this, a);984            });985        }986    }), n.extend({987        queue: function (a, b, c) {988            var d;989            return a ? (b = (b || "fx") + "queue", d = N.get(a, b), c && (!d || n.isArray(c) ? d = N.access(a, b, n.makeArray(c)) : d.push(c)), d || []) : void 0;990        }, dequeue: function (a, b) {991            b = b || "fx";992            var c = n.queue(a, b), d = c.length, e = c.shift(), f = n._queueHooks(a, b), g = function () {993                n.dequeue(a, b);994            };995            "inprogress" === e && (e = c.shift(), d--), e && ("fx" === b && c.unshift("inprogress"), delete f.stop, e.call(a, g, f)), !d && f && f.empty.fire();996        }, _queueHooks: function (a, b) {997            var c = b + "queueHooks";998            return N.get(a, c) || N.access(a, c, {999                empty: n.Callbacks("once memory").add(function () {1000                    N.remove(a, [b + "queue", c]);1001                })1002            });1003        }1004    }), n.fn.extend({1005        queue: function (a, b) {1006            var c = 2;1007            return "string" != typeof a && (b = a, a = "fx", c--), arguments.length < c ? n.queue(this[0], a) : void 0 === b ? this : this.each(function () {1008                var c = n.queue(this, a, b);1009                n._queueHooks(this, a), "fx" === a && "inprogress" !== c[0] && n.dequeue(this, a);1010            });1011        }, dequeue: function (a) {1012            return this.each(function () {1013                n.dequeue(this, a);1014            });1015        }, clearQueue: function (a) {1016            return this.queue(a || "fx", []);1017        }, promise: function (a, b) {1018            var c, d = 1, e = n.Deferred(), f = this, g = this.length, h = function () {1019                --d || e.resolveWith(f, [f]);1020            };1021            "string" != typeof a && (b = a, a = void 0), a = a || "fx";1022            while (g--) c = N.get(f[g], a + "queueHooks"), c && c.empty && (d++, c.empty.add(h));1023            return h(), e.promise(b);1024        }1025    });1026    var S = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source, T = new RegExp("^(?:([+-])=|)(" + S + ")([a-z%]*)$", "i"),1027        U = ["Top", "Right", "Bottom", "Left"], V = function (a, b) {1028            return a = b || a, "none" === n.css(a, "display") || !n.contains(a.ownerDocument, a);1029        };1030    function W(a, b, c, d) {1031        var e, f = 1, g = 20, h = d ? function () {1032                return d.cur();1033            } : function () {1034                return n.css(a, b, "");1035            }, i = h(), j = c && c[3] || (n.cssNumber[b] ? "" : "px"),1036            k = (n.cssNumber[b] || "px" !== j && +i) && T.exec(n.css(a, b));1037        if (k && k[3] !== j) {1038            j = j || k[3], c = c || [], k = +i || 1;1039            do f = f || ".5", k /= f, n.style(a, b, k + j); while (f !== (f = h() / i) && 1 !== f && --g);1040        }1041        return c && (k = +k || +i || 0, e = c[1] ? k + (c[1] + 1) * c[2] : +c[2], d && (d.unit = j, d.start = k, d.end = e)), e;1042    }1043    var X = /^(?:checkbox|radio)$/i, Y = /<([\w:-]+)/, Z = /^$|\/(?:java|ecma)script/i, $ = {1044        option: [1, "<select multiple='multiple'>", "</select>"],1045        thead: [1, "<table>", "</table>"],1046        col: [2, "<table><colgroup>", "</colgroup></table>"],1047        tr: [2, "<table><tbody>", "</tbody></table>"],1048        td: [3, "<table><tbody><tr>", "</tr></tbody></table>"],1049        _default: [0, "", ""]1050    };1051    $.optgroup = $.option, $.tbody = $.tfoot = $.colgroup = $.caption = $.thead, $.th = $.td;1052    function _(a, b) {1053        var c = "undefined" != typeof a.getElementsByTagName ? a.getElementsByTagName(b || "*") : "undefined" != typeof a.querySelectorAll ? a.querySelectorAll(b || "*") : [];1054        return void 0 === b || b && n.nodeName(a, b) ? n.merge([a], c) : c;1055    }1056    function aa(a, b) {1057        for (var c = 0, d = a.length; d > c; c++) N.set(a[c], "globalEval", !b || N.get(b[c], "globalEval"));1058    }1059    var ba = /<|&#?\w+;/;1060    function ca(a, b, c, d, e) {1061        for (var f, g, h, i, j, k, l = b.createDocumentFragment(), m = [], o = 0, p = a.length; p > o; o++) if (f = a[o], f || 0 === f) if ("object" === n.type(f)) n.merge(m, f.nodeType ? [f] : f); else if (ba.test(f)) {1062            g = g || l.appendChild(b.createElement("div")), h = (Y.exec(f) || ["", ""])[1].toLowerCase(), i = $[h] || $._default, g.innerHTML = i[1] + n.htmlPrefilter(f) + i[2], k = i[0];1063            while (k--) g = g.lastChild;1064            n.merge(m, g.childNodes), g = l.firstChild, g.textContent = "";1065        } else m.push(b.createTextNode(f));1066        l.textContent = "", o = 0;1067        while (f = m[o++]) if (d && n.inArray(f, d) > -1) e && e.push(f); else if (j = n.contains(f.ownerDocument, f), g = _(l.appendChild(f), "script"), j && aa(g), c) {1068            k = 0;1069            while (f = g[k++]) Z.test(f.type || "") && c.push(f);1070        }1071        return l;1072    }1073    !function () {1074        var a = d.createDocumentFragment(), b = a.appendChild(d.createElement("div")), c = d.createElement("input");1075        c.setAttribute("type", "radio"), c.setAttribute("checked", "checked"), c.setAttribute("name", "t"), b.appendChild(c), l.checkClone = b.cloneNode(!0).cloneNode(!0).lastChild.checked, b.innerHTML = "<textarea>x</textarea>", l.noCloneChecked = !!b.cloneNode(!0).lastChild.defaultValue;1076    }();1077    var da = /^key/, ea = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, fa = /^([^.]*)(?:\.(.+)|)/;1078    function ga() {1079        return !0;1080    }1081    function ha() {1082        return !1;1083    }1084    function ia() {1085        try {1086            return d.activeElement;1087        } catch (a) {1088        }1089    }1090    function ja(a, b, c, d, e, f) {1091        var g, h;1092        if ("object" == typeof b) {1093            "string" != typeof c && (d = d || c, c = void 0);1094            for (h in b) ja(a, h, c, d, b[h], f);1095            return a;1096        }1097        if (null == d && null == e ? (e = c, d = c = void 0) : null == e && ("string" == typeof c ? (e = d, d = void 0) : (e = d, d = c, c = void 0)), e === !1) e = ha; else if (!e) return a;1098        return 1 === f && (g = e, e = function (a) {1099            return n().off(a), g.apply(this, arguments);1100        }, e.guid = g.guid || (g.guid = n.guid++)), a.each(function () {1101            n.event.add(this, b, e, d, c);1102        });1103    }1104    n.event = {1105        global: {},1106        add: function (a, b, c, d, e) {1107            var f, g, h, i, j, k, l, m, o, p, q, r = N.get(a);1108            if (r) {1109                c.handler && (f = c, c = f.handler, e = f.selector), c.guid || (c.guid = n.guid++), (i = r.events) || (i = r.events = {}), (g = r.handle) || (g = r.handle = function (b) {1110                    return "undefined" != typeof n && n.event.triggered !== b.type ? n.event.dispatch.apply(a, arguments) : void 0;1111                }), b = (b || "").match(G) || [""], j = b.length;1112                while (j--) h = fa.exec(b[j]) || [], o = q = h[1], p = (h[2] || "").split(".").sort(), o && (l = n.event.special[o] || {}, o = (e ? l.delegateType : l.bindType) || o, l = n.event.special[o] || {}, k = n.extend({1113                    type: o,1114                    origType: q,1115                    data: d,1116                    handler: c,1117                    guid: c.guid,1118                    selector: e,1119                    needsContext: e && n.expr.match.needsContext.test(e),1120                    namespace: p.join(".")1121                }, f), (m = i[o]) || (m = i[o] = [], m.delegateCount = 0, l.setup && l.setup.call(a, d, p, g) !== !1 || a.addEventListener && a.addEventListener(o, g)), l.add && (l.add.call(a, k), k.handler.guid || (k.handler.guid = c.guid)), e ? m.splice(m.delegateCount++, 0, k) : m.push(k), n.event.global[o] = !0);1122            }1123        },1124        remove: function (a, b, c, d, e) {1125            var f, g, h, i, j, k, l, m, o, p, q, r = N.hasData(a) && N.get(a);1126            if (r && (i = r.events)) {1127                b = (b || "").match(G) || [""], j = b.length;1128                while (j--) if (h = fa.exec(b[j]) || [], o = q = h[1], p = (h[2] || "").split(".").sort(), o) {1129                    l = n.event.special[o] || {}, o = (d ? l.delegateType : l.bindType) || o, m = i[o] || [], h = h[2] && new RegExp("(^|\\.)" + p.join("\\.(?:.*\\.|)") + "(\\.|$)"), g = f = m.length;1130                    while (f--) k = m[f], !e && q !== k.origType || c && c.guid !== k.guid || h && !h.test(k.namespace) || d && d !== k.selector && ("**" !== d || !k.selector) || (m.splice(f, 1), k.selector && m.delegateCount--, l.remove && l.remove.call(a, k));1131                    g && !m.length && (l.teardown && l.teardown.call(a, p, r.handle) !== !1 || n.removeEvent(a, o, r.handle), delete i[o]);1132                } else for (o in i) n.event.remove(a, o + b[j], c, d, !0);1133                n.isEmptyObject(i) && N.remove(a, "handle events");1134            }1135        },1136        dispatch: function (a) {1137            a = n.event.fix(a);1138            var b, c, d, f, g, h = [], i = e.call(arguments), j = (N.get(this, "events") || {})[a.type] || [],1139                k = n.event.special[a.type] || {};1140            if (i[0] = a, a.delegateTarget = this, !k.preDispatch || k.preDispatch.call(this, a) !== !1) {1141                h = n.event.handlers.call(this, a, j), b = 0;1142                while ((f = h[b++]) && !a.isPropagationStopped()) {1143                    a.currentTarget = f.elem, c = 0;1144                    while ((g = f.handlers[c++]) && !a.isImmediatePropagationStopped()) a.rnamespace && !a.rnamespace.test(g.namespace) || (a.handleObj = g, a.data = g.data, d = ((n.event.special[g.origType] || {}).handle || g.handler).apply(f.elem, i), void 0 !== d && (a.result = d) === !1 && (a.preventDefault(), a.stopPropagation()));1145                }1146                return k.postDispatch && k.postDispatch.call(this, a), a.result;1147            }1148        },1149        handlers: function (a, b) {1150            var c, d, e, f, g = [], h = b.delegateCount, i = a.target;1151            if (h && i.nodeType && ("click" !== a.type || isNaN(a.button) || a.button < 1)) for (; i !== this; i = i.parentNode || this) if (1 === i.nodeType && (i.disabled !== !0 || "click" !== a.type)) {1152                for (d = [], c = 0; h > c; c++) f = b[c], e = f.selector + " ", void 0 === d[e] && (d[e] = f.needsContext ? n(e, this).index(i) > -1 : n.find(e, this, null, [i]).length), d[e] && d.push(f);1153                d.length && g.push({elem: i, handlers: d});1154            }1155            return h < b.length && g.push({elem: this, handlers: b.slice(h)}), g;1156        },1157        props: "altKey bubbles cancelable ctrlKey currentTarget detail eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),1158        fixHooks: {},1159        keyHooks: {1160            props: "char charCode key keyCode".split(" "), filter: function (a, b) {1161                return null == a.which && (a.which = null != b.charCode ? b.charCode : b.keyCode), a;1162            }1163        },1164        mouseHooks: {1165            props: "button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),1166            filter: function (a, b) {1167                var c, e, f, g = b.button;1168                return null == a.pageX && null != b.clientX && (c = a.target.ownerDocument || d, e = c.documentElement, f = c.body, a.pageX = b.clientX + (e && e.scrollLeft || f && f.scrollLeft || 0) - (e && e.clientLeft || f && f.clientLeft || 0), a.pageY = b.clientY + (e && e.scrollTop || f && f.scrollTop || 0) - (e && e.clientTop || f && f.clientTop || 0)), a.which || void 0 === g || (a.which = 1 & g ? 1 : 2 & g ? 3 : 4 & g ? 2 : 0), a;1169            }1170        },1171        fix: function (a) {1172            if (a[n.expando]) return a;1173            var b, c, e, f = a.type, g = a, h = this.fixHooks[f];1174            h || (this.fixHooks[f] = h = ea.test(f) ? this.mouseHooks : da.test(f) ? this.keyHooks : {}), e = h.props ? this.props.concat(h.props) : this.props, a = new n.Event(g), b = e.length;1175            while (b--) c = e[b], a[c] = g[c];1176            return a.target || (a.target = d), 3 === a.target.nodeType && (a.target = a.target.parentNode), h.filter ? h.filter(a, g) : a;1177        },1178        special: {1179            load: {noBubble: !0}, focus: {1180                trigger: function () {1181                    return this !== ia() && this.focus ? (this.focus(), !1) : void 0;1182                }, delegateType: "focusin"1183            }, blur: {1184                trigger: function () {1185                    return this === ia() && this.blur ? (this.blur(), !1) : void 0;1186                }, delegateType: "focusout"1187            }, click: {1188                trigger: function () {1189                    return "checkbox" === this.type && this.click && n.nodeName(this, "input") ? (this.click(), !1) : void 0;1190                }, _default: function (a) {1191                    return n.nodeName(a.target, "a");1192                }1193            }, beforeunload: {1194                postDispatch: function (a) {1195                    void 0 !== a.result && a.originalEvent && (a.originalEvent.returnValue = a.result);1196                }1197            }1198        }1199    }, n.removeEvent = function (a, b, c) {1200        a.removeEventListener && a.removeEventListener(b, c);1201    }, n.Event = function (a, b) {1202        return this instanceof n.Event ? (a && a.type ? (this.originalEvent = a, this.type = a.type, this.isDefaultPrevented = a.defaultPrevented || void 0 === a.defaultPrevented && a.returnValue === !1 ? ga : ha) : this.type = a, b && n.extend(this, b), this.timeStamp = a && a.timeStamp || n.now(), void(this[n.expando] = !0)) : new n.Event(a, b);1203    }, n.Event.prototype = {1204        constructor: n.Event,1205        isDefaultPrevented: ha,1206        isPropagationStopped: ha,1207        isImmediatePropagationStopped: ha,1208        isSimulated: !1,1209        preventDefault: function () {1210            var a = this.originalEvent;1211            this.isDefaultPrevented = ga, a && !this.isSimulated && a.preventDefault();1212        },1213        stopPropagation: function () {1214            var a = this.originalEvent;1215            this.isPropagationStopped = ga, a && !this.isSimulated && a.stopPropagation();1216        },1217        stopImmediatePropagation: function () {1218            var a = this.originalEvent;1219            this.isImmediatePropagationStopped = ga, a && !this.isSimulated && a.stopImmediatePropagation(), this.stopPropagation();1220        }1221    }, n.each({1222        mouseenter: "mouseover",1223        mouseleave: "mouseout",1224        pointerenter: "pointerover",1225        pointerleave: "pointerout"1226    }, function (a, b) {1227        n.event.special[a] = {1228            delegateType: b, bindType: b, handle: function (a) {1229                var c, d = this, e = a.relatedTarget, f = a.handleObj;1230                return e && (e === d || n.contains(d, e)) || (a.type = f.origType, c = f.handler.apply(this, arguments), a.type = b), c;1231            }1232        };1233    }), n.fn.extend({1234        on: function (a, b, c, d) {1235            return ja(this, a, b, c, d);1236        }, one: function (a, b, c, d) {1237            return ja(this, a, b, c, d, 1);1238        }, off: function (a, b, c) {1239            var d, e;1240            if (a && a.preventDefault && a.handleObj) return d = a.handleObj, n(a.delegateTarget).off(d.namespace ? d.origType + "." + d.namespace : d.origType, d.selector, d.handler), this;1241            if ("object" == typeof a) {1242                for (e in a) this.off(e, b, a[e]);1243                return this;1244            }1245            return b !== !1 && "function" != typeof b || (c = b, b = void 0), c === !1 && (c = ha), this.each(function () {1246                n.event.remove(this, a, c, b);1247            });1248        }1249    });1250    var ka = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi, la = /<script|<style|<link/i,1251        ma = /checked\s*(?:[^=]|=\s*.checked.)/i, na = /^true\/(.*)/, oa = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;1252    function pa(a, b) {1253        return n.nodeName(a, "table") && n.nodeName(11 !== b.nodeType ? b : b.firstChild, "tr") ? a.getElementsByTagName("tbody")[0] || a.appendChild(a.ownerDocument.createElement("tbody")) : a;1254    }1255    function qa(a) {1256        return a.type = (null !== a.getAttribute("type")) + "/" + a.type, a;1257    }1258    function ra(a) {1259        var b = na.exec(a.type);1260        return b ? a.type = b[1] : a.removeAttribute("type"), a;1261    }1262    function sa(a, b) {1263        var c, d, e, f, g, h, i, j;1264        if (1 === b.nodeType) {1265            if (N.hasData(a) && (f = N.access(a), g = N.set(b, f), j = f.events)) {1266                delete g.handle, g.events = {};1267                for (e in j) for (c = 0, d = j[e].length; d > c; c++) n.event.add(b, e, j[e][c]);1268            }1269            O.hasData(a) && (h = O.access(a), i = n.extend({}, h), O.set(b, i));1270        }1271    }1272    function ta(a, b) {1273        var c = b.nodeName.toLowerCase();1274        "input" === c && X.test(a.type) ? b.checked = a.checked : "input" !== c && "textarea" !== c || (b.defaultValue = a.defaultValue);1275    }1276    function ua(a, b, c, d) {1277        b = f.apply([], b);1278        var e, g, h, i, j, k, m = 0, o = a.length, p = o - 1, q = b[0], r = n.isFunction(q);1279        if (r || o > 1 && "string" == typeof q && !l.checkClone && ma.test(q)) return a.each(function (e) {1280            var f = a.eq(e);1281            r && (b[0] = q.call(this, e, f.html())), ua(f, b, c, d);1282        });1283        if (o && (e = ca(b, a[0].ownerDocument, !1, a, d), g = e.firstChild, 1 === e.childNodes.length && (e = g), g || d)) {1284            for (h = n.map(_(e, "script"), qa), i = h.length; o > m; m++) j = e, m !== p && (j = n.clone(j, !0, !0), i && n.merge(h, _(j, "script"))), c.call(a[m], j, m);1285            if (i) for (k = h[h.length - 1].ownerDocument, n.map(h, ra), m = 0; i > m; m++) j = h[m], Z.test(j.type || "") && !N.access(j, "globalEval") && n.contains(k, j) && (j.src ? n._evalUrl && n._evalUrl(j.src) : n.globalEval(j.textContent.replace(oa, "")));1286        }1287        return a;1288    }1289    function va(a, b, c) {1290        for (var d, e = b ? n.filter(b, a) : a, f = 0; null != (d = e[f]); f++) c || 1 !== d.nodeType || n.cleanData(_(d)), d.parentNode && (c && n.contains(d.ownerDocument, d) && aa(_(d, "script")), d.parentNode.removeChild(d));1291        return a;1292    }1293    n.extend({1294        htmlPrefilter: function (a) {1295            return a.replace(ka, "<$1></$2>");1296        }, clone: function (a, b, c) {1297            var d, e, f, g, h = a.cloneNode(!0), i = n.contains(a.ownerDocument, a);1298            if (!(l.noCloneChecked || 1 !== a.nodeType && 11 !== a.nodeType || n.isXMLDoc(a))) for (g = _(h), f = _(a), d = 0, e = f.length; e > d; d++) ta(f[d], g[d]);1299            if (b) if (c) for (f = f || _(a), g = g || _(h), d = 0, e = f.length; e > d; d++) sa(f[d], g[d]); else sa(a, h);1300            return g = _(h, "script"), g.length > 0 && aa(g, !i && _(a, "script")), h;1301        }, cleanData: function (a) {1302            for (var b, c, d, e = n.event.special, f = 0; void 0 !== (c = a[f]); f++) if (L(c)) {1303                if (b = c[N.expando]) {1304                    if (b.events) for (d in b.events) e[d] ? n.event.remove(c, d) : n.removeEvent(c, d, b.handle);1305                    c[N.expando] = void 0;1306                }1307                c[O.expando] && (c[O.expando] = void 0);1308            }1309        }1310    }), n.fn.extend({1311        domManip: ua, detach: function (a) {1312            return va(this, a, !0);1313        }, remove: function (a) {1314            return va(this, a);1315        }, text: function (a) {1316            return K(this, function (a) {1317                return void 0 === a ? n.text(this) : this.empty().each(function () {1318                    1 !== this.nodeType && 11 !== this.nodeType && 9 !== this.nodeType || (this.textContent = a);1319                });1320            }, null, a, arguments.length);1321        }, append: function () {1322            return ua(this, arguments, function (a) {1323                if (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) {1324                    var b = pa(this, a);1325                    b.appendChild(a);1326                }1327            });1328        }, prepend: function () {1329            return ua(this, arguments, function (a) {1330                if (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) {1331                    var b = pa(this, a);1332                    b.insertBefore(a, b.firstChild);1333                }1334            });1335        }, before: function () {1336            return ua(this, arguments, function (a) {1337                this.parentNode && this.parentNode.insertBefore(a, this);1338            });1339        }, after: function () {1340            return ua(this, arguments, function (a) {1341                this.parentNode && this.parentNode.insertBefore(a, this.nextSibling);1342            });1343        }, empty: function () {1344            for (var a, b = 0; null != (a = this[b]); b++) 1 === a.nodeType && (n.cleanData(_(a, !1)), a.textContent = "");1345            return this;1346        }, clone: function (a, b) {1347            return a = null == a ? !1 : a, b = null == b ? a : b, this.map(function () {1348                return n.clone(this, a, b);1349            });1350        }, html: function (a) {1351            return K(this, function (a) {1352                var b = this[0] || {}, c = 0, d = this.length;1353                if (void 0 === a && 1 === b.nodeType) return b.innerHTML;1354                if ("string" == typeof a && !la.test(a) && !$[(Y.exec(a) || ["", ""])[1].toLowerCase()]) {1355                    a = n.htmlPrefilter(a);1356                    try {1357                        for (; d > c; c++) b = this[c] || {}, 1 === b.nodeType && (n.cleanData(_(b, !1)), b.innerHTML = a);1358                        b = 0;1359                    } catch (e) {1360                    }1361                }1362                b && this.empty().append(a);1363            }, null, a, arguments.length);1364        }, replaceWith: function () {1365            var a = [];1366            return ua(this, arguments, function (b) {1367                var c = this.parentNode;1368                n.inArray(this, a) < 0 && (n.cleanData(_(this)), c && c.replaceChild(b, this));1369            }, a);1370        }1371    }), n.each({1372        appendTo: "append",1373        prependTo: "prepend",1374        insertBefore: "before",1375        insertAfter: "after",1376        replaceAll: "replaceWith"1377    }, function (a, b) {1378        n.fn[a] = function (a) {1379            for (var c, d = [], e = n(a), f = e.length - 1, h = 0; f >= h; h++) c = h === f ? this : this.clone(!0), n(e[h])[b](c), g.apply(d, c.get());1380            return this.pushStack(d);1381        };1382    });1383    var wa, xa = {HTML: "block", BODY: "block"};1384    function ya(a, b) {1385        var c = n(b.createElement(a)).appendTo(b.body), d = n.css(c[0], "display");1386        return c.detach(), d;1387    }1388    function za(a) {1389        var b = d, c = xa[a];1390        return c || (c = ya(a, b), "none" !== c && c || (wa = (wa || n("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement), b = wa[0].contentDocument, b.write(), b.close(), c = ya(a, b), wa.detach()), xa[a] = c), c;1391    }1392    var Aa = /^margin/, Ba = new RegExp("^(" + S + ")(?!px)[a-z%]+$", "i"), Ca = function (b) {1393        var c = b.ownerDocument.defaultView;1394        return c && c.opener || (c = a), c.getComputedStyle(b);1395    }, Da = function (a, b, c, d) {1396        var e, f, g = {};1397        for (f in b) g[f] = a.style[f], a.style[f] = b[f];1398        e = c.apply(a, d || []);1399        for (f in b) a.style[f] = g[f];1400        return e;1401    }, Ea = d.documentElement;1402    !function () {1403        var b, c, e, f, g = d.createElement("div"), h = d.createElement("div");1404        if (h.style) {1405            h.style.backgroundClip = "content-box", h.cloneNode(!0).style.backgroundClip = "", l.clearCloneStyle = "content-box" === h.style.backgroundClip, g.style.cssText = "border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute", g.appendChild(h);1406            function i() {1407                h.style.cssText = "-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%", h.innerHTML = "", Ea.appendChild(g);1408                var d = a.getComputedStyle(h);1409                b = "1%" !== d.top, f = "2px" === d.marginLeft, c = "4px" === d.width, h.style.marginRight = "50%", e = "4px" === d.marginRight, Ea.removeChild(g);1410            }1411            n.extend(l, {1412                pixelPosition: function () {1413                    return i(), b;1414                }, boxSizingReliable: function () {1415                    return null == c && i(), c;1416                }, pixelMarginRight: function () {1417                    return null == c && i(), e;1418                }, reliableMarginLeft: function () {1419                    return null == c && i(), f;1420                }, reliableMarginRight: function () {1421                    var b, c = h.appendChild(d.createElement("div"));1422                    return c.style.cssText = h.style.cssText = "-webkit-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0", c.style.marginRight = c.style.width = "0", h.style.width = "1px", Ea.appendChild(g), b = !parseFloat(a.getComputedStyle(c).marginRight), Ea.removeChild(g), h.removeChild(c), b;1423                }1424            });1425        }1426    }();1427    function Fa(a, b, c) {1428        var d, e, f, g, h = a.style;1429        return c = c || Ca(a), g = c ? c.getPropertyValue(b) || c[b] : void 0, "" !== g && void 0 !== g || n.contains(a.ownerDocument, a) || (g = n.style(a, b)), c && !l.pixelMarginRight() && Ba.test(g) && Aa.test(b) && (d = h.width, e = h.minWidth, f = h.maxWidth, h.minWidth = h.maxWidth = h.width = g, g = c.width, h.width = d, h.minWidth = e, h.maxWidth = f), void 0 !== g ? g + "" : g;1430    }1431    function Ga(a, b) {1432        return {1433            get: function () {1434                return a() ? void delete this.get : (this.get = b).apply(this, arguments);1435            }1436        };1437    }1438    var Ha = /^(none|table(?!-c[ea]).+)/, Ia = {position: "absolute", visibility: "hidden", display: "block"},1439        Ja = {letterSpacing: "0", fontWeight: "400"}, Ka = ["Webkit", "O", "Moz", "ms"],1440        La = d.createElement("div").style;1441    function Ma(a) {1442        if (a in La) return a;1443        var b = a[0].toUpperCase() + a.slice(1), c = Ka.length;1444        while (c--) if (a = Ka[c] + b, a in La) return a;1445    }1446    function Na(a, b, c) {1447        var d = T.exec(b);1448        return d ? Math.max(0, d[2] - (c || 0)) + (d[3] || "px") : b;1449    }1450    function Oa(a, b, c, d, e) {1451        for (var f = c === (d ? "border" : "content") ? 4 : "width" === b ? 1 : 0, g = 0; 4 > f; f += 2) "margin" === c && (g += n.css(a, c + U[f], !0, e)), d ? ("content" === c && (g -= n.css(a, "padding" + U[f], !0, e)), "margin" !== c && (g -= n.css(a, "border" + U[f] + "Width", !0, e))) : (g += n.css(a, "padding" + U[f], !0, e), "padding" !== c && (g += n.css(a, "border" + U[f] + "Width", !0, e)));1452        return g;1453    }1454    function Pa(a, b, c) {1455        var d = !0, e = "width" === b ? a.offsetWidth : a.offsetHeight, f = Ca(a),1456            g = "border-box" === n.css(a, "boxSizing", !1, f);1457        if (0 >= e || null == e) {1458            if (e = Fa(a, b, f), (0 > e || null == e) && (e = a.style[b]), Ba.test(e)) return e;1459            d = g && (l.boxSizingReliable() || e === a.style[b]), e = parseFloat(e) || 0;1460        }1461        return e + Oa(a, b, c || (g ? "border" : "content"), d, f) + "px";1462    }1463    function Qa(a, b) {1464        for (var c, d, e, f = [], g = 0, h = a.length; h > g; g++) d = a[g], d.style && (f[g] = N.get(d, "olddisplay"), c = d.style.display, b ? (f[g] || "none" !== c || (d.style.display = ""), "" === d.style.display && V(d) && (f[g] = N.access(d, "olddisplay", za(d.nodeName)))) : (e = V(d), "none" === c && e || N.set(d, "olddisplay", e ? c : n.css(d, "display"))));1465        for (g = 0; h > g; g++) d = a[g], d.style && (b && "none" !== d.style.display && "" !== d.style.display || (d.style.display = b ? f[g] || "" : "none"));1466        return a;1467    }1468    n.extend({1469        cssHooks: {1470            opacity: {1471                get: function (a, b) {1472                    if (b) {1473                        var c = Fa(a, "opacity");1474                        return "" === c ? "1" : c;1475                    }1476                }1477            }1478        },1479        cssNumber: {1480            animationIterationCount: !0,1481            columnCount: !0,1482            fillOpacity: !0,1483            flexGrow: !0,1484            flexShrink: !0,1485            fontWeight: !0,1486            lineHeight: !0,1487            opacity: !0,1488            order: !0,1489            orphans: !0,1490            widows: !0,1491            zIndex: !0,1492            zoom: !01493        },1494        cssProps: {"float": "cssFloat"},1495        style: function (a, b, c, d) {1496            if (a && 3 !== a.nodeType && 8 !== a.nodeType && a.style) {1497                var e, f, g, h = n.camelCase(b), i = a.style;1498                return b = n.cssProps[h] || (n.cssProps[h] = Ma(h) || h), g = n.cssHooks[b] || n.cssHooks[h], void 0 === c ? g && "get" in g && void 0 !== (e = g.get(a, !1, d)) ? e : i[b] : (f = typeof c, "string" === f && (e = T.exec(c)) && e[1] && (c = W(a, b, e), f = "number"), null != c && c === c && ("number" === f && (c += e && e[3] || (n.cssNumber[h] ? "" : "px")), l.clearCloneStyle || "" !== c || 0 !== b.indexOf("background") || (i[b] = "inherit"), g && "set" in g && void 0 === (c = g.set(a, c, d)) || (i[b] = c)), void 0);1499            }1500        },1501        css: function (a, b, c, d) {1502            var e, f, g, h = n.camelCase(b);1503            return b = n.cssProps[h] || (n.cssProps[h] = Ma(h) || h), g = n.cssHooks[b] || n.cssHooks[h], g && "get" in g && (e = g.get(a, !0, c)), void 0 === e && (e = Fa(a, b, d)), "normal" === e && b in Ja && (e = Ja[b]), "" === c || c ? (f = parseFloat(e), c === !0 || isFinite(f) ? f || 0 : e) : e;1504        }1505    }), n.each(["height", "width"], function (a, b) {1506        n.cssHooks[b] = {1507            get: function (a, c, d) {1508                return c ? Ha.test(n.css(a, "display")) && 0 === a.offsetWidth ? Da(a, Ia, function () {1509                    return Pa(a, b, d);1510                }) : Pa(a, b, d) : void 0;1511            }, set: function (a, c, d) {1512                var e, f = d && Ca(a), g = d && Oa(a, b, d, "border-box" === n.css(a, "boxSizing", !1, f), f);1513                return g && (e = T.exec(c)) && "px" !== (e[3] || "px") && (a.style[b] = c, c = n.css(a, b)), Na(a, c, g);1514            }1515        };1516    }), n.cssHooks.marginLeft = Ga(l.reliableMarginLeft, function (a, b) {1517        return b ? (parseFloat(Fa(a, "marginLeft")) || a.getBoundingClientRect().left - Da(a, {marginLeft: 0}, function () {1518            return a.getBoundingClientRect().left;1519        })) + "px" : void 0;1520    }), n.cssHooks.marginRight = Ga(l.reliableMarginRight, function (a, b) {1521        return b ? Da(a, {display: "inline-block"}, Fa, [a, "marginRight"]) : void 0;1522    }), n.each({margin: "", padding: "", border: "Width"}, function (a, b) {1523        n.cssHooks[a + b] = {1524            expand: function (c) {1525                for (var d = 0, e = {}, f = "string" == typeof c ? c.split(" ") : [c]; 4 > d; d++) e[a + U[d] + b] = f[d] || f[d - 2] || f[0];1526                return e;1527            }1528        }, Aa.test(a) || (n.cssHooks[a + b].set = Na);1529    }), n.fn.extend({1530        css: function (a, b) {1531            return K(this, function (a, b, c) {1532                var d, e, f = {}, g = 0;1533                if (n.isArray(b)) {1534                    for (d = Ca(a), e = b.length; e > g; g++) f[b[g]] = n.css(a, b[g], !1, d);1535                    return f;1536                }1537                return void 0 !== c ? n.style(a, b, c) : n.css(a, b);1538            }, a, b, arguments.length > 1);1539        }, show: function () {1540            return Qa(this, !0);1541        }, hide: function () {1542            return Qa(this);1543        }, toggle: function (a) {1544            return "boolean" == typeof a ? a ? this.show() : this.hide() : this.each(function () {1545                V(this) ? n(this).show() : n(this).hide();1546            });1547        }1548    });1549    function Ra(a, b, c, d, e) {1550        return new Ra.prototype.init(a, b, c, d, e);1551    }1552    n.Tween = Ra, Ra.prototype = {1553        constructor: Ra, init: function (a, b, c, d, e, f) {1554            this.elem = a, this.prop = c, this.easing = e || n.easing._default, this.options = b, this.start = this.now = this.cur(), this.end = d, this.unit = f || (n.cssNumber[c] ? "" : "px");1555        }, cur: function () {1556            var a = Ra.propHooks[this.prop];1557            return a && a.get ? a.get(this) : Ra.propHooks._default.get(this);1558        }, run: function (a) {1559            var b, c = Ra.propHooks[this.prop];1560            return this.options.duration ? this.pos = b = n.easing[this.easing](a, this.options.duration * a, 0, 1, this.options.duration) : this.pos = b = a, this.now = (this.end - this.start) * b + this.start, this.options.step && this.options.step.call(this.elem, this.now, this), c && c.set ? c.set(this) : Ra.propHooks._default.set(this), this;1561        }1562    }, Ra.prototype.init.prototype = Ra.prototype, Ra.propHooks = {1563        _default: {1564            get: function (a) {1565                var b;1566                return 1 !== a.elem.nodeType || null != a.elem[a.prop] && null == a.elem.style[a.prop] ? a.elem[a.prop] : (b = n.css(a.elem, a.prop, ""), b && "auto" !== b ? b : 0);1567            }, set: function (a) {1568                n.fx.step[a.prop] ? n.fx.step[a.prop](a) : 1 !== a.elem.nodeType || null == a.elem.style[n.cssProps[a.prop]] && !n.cssHooks[a.prop] ? a.elem[a.prop] = a.now : n.style(a.elem, a.prop, a.now + a.unit);1569            }1570        }1571    }, Ra.propHooks.scrollTop = Ra.propHooks.scrollLeft = {1572        set: function (a) {1573            a.elem.nodeType && a.elem.parentNode && (a.elem[a.prop] = a.now);1574        }1575    }, n.easing = {1576        linear: function (a) {1577            return a;1578        }, swing: function (a) {1579            return .5 - Math.cos(a * Math.PI) / 2;1580        }, _default: "swing"1581    }, n.fx = Ra.prototype.init, n.fx.step = {};1582    var Sa, Ta, Ua = /^(?:toggle|show|hide)$/, Va = /queueHooks$/;1583    function Wa() {1584        return a.setTimeout(function () {1585            Sa = void 0;1586        }), Sa = n.now();1587    }1588    function Xa(a, b) {1589        var c, d = 0, e = {height: a};1590        for (b = b ? 1 : 0; 4 > d; d += 2 - b) c = U[d], e["margin" + c] = e["padding" + c] = a;1591        return b && (e.opacity = e.width = a), e;1592    }1593    function Ya(a, b, c) {1594        for (var d, e = (_a.tweeners[b] || []).concat(_a.tweeners["*"]), f = 0, g = e.length; g > f; f++) if (d = e[f].call(c, b, a)) return d;1595    }1596    function Za(a, b, c) {1597        var d, e, f, g, h, i, j, k, l = this, m = {}, o = a.style, p = a.nodeType && V(a), q = N.get(a, "fxshow");1598        c.queue || (h = n._queueHooks(a, "fx"), null == h.unqueued && (h.unqueued = 0, i = h.empty.fire, h.empty.fire = function () {1599            h.unqueued || i();1600        }), h.unqueued++, l.always(function () {1601            l.always(function () {1602                h.unqueued--, n.queue(a, "fx").length || h.empty.fire();1603            });1604        })), 1 === a.nodeType && ("height" in b || "width" in b) && (c.overflow = [o.overflow, o.overflowX, o.overflowY], j = n.css(a, "display"), k = "none" === j ? N.get(a, "olddisplay") || za(a.nodeName) : j, "inline" === k && "none" === n.css(a, "float") && (o.display = "inline-block")), c.overflow && (o.overflow = "hidden", l.always(function () {1605            o.overflow = c.overflow[0], o.overflowX = c.overflow[1], o.overflowY = c.overflow[2];1606        }));1607        for (d in b) if (e = b[d], Ua.exec(e)) {1608            if (delete b[d], f = f || "toggle" === e, e === (p ? "hide" : "show")) {1609                if ("show" !== e || !q || void 0 === q[d]) continue;1610                p = !0;1611            }1612            m[d] = q && q[d] || n.style(a, d);1613        } else j = void 0;1614        if (n.isEmptyObject(m)) "inline" === ("none" === j ? za(a.nodeName) : j) && (o.display = j); else {1615            q ? "hidden" in q && (p = q.hidden) : q = N.access(a, "fxshow", {}), f && (q.hidden = !p), p ? n(a).show() : l.done(function () {1616                n(a).hide();1617            }), l.done(function () {1618                var b;1619                N.remove(a, "fxshow");1620                for (b in m) n.style(a, b, m[b]);1621            });1622            for (d in m) g = Ya(p ? q[d] : 0, d, l), d in q || (q[d] = g.start, p && (g.end = g.start, g.start = "width" === d || "height" === d ? 1 : 0));1623        }1624    }1625    function $a(a, b) {1626        var c, d, e, f, g;1627        for (c in a) if (d = n.camelCase(c), e = b[d], f = a[c], n.isArray(f) && (e = f[1], f = a[c] = f[0]), c !== d && (a[d] = f, delete a[c]), g = n.cssHooks[d], g && "expand" in g) {1628            f = g.expand(f), delete a[d];1629            for (c in f) c in a || (a[c] = f[c], b[c] = e);1630        } else b[d] = e;1631    }1632    function _a(a, b, c) {1633        var d, e, f = 0, g = _a.prefilters.length, h = n.Deferred().always(function () {1634            delete i.elem;1635        }), i = function () {1636            if (e) return !1;1637            for (var b = Sa || Wa(), c = Math.max(0, j.startTime + j.duration - b), d = c / j.duration || 0, f = 1 - d, g = 0, i = j.tweens.length; i > g; g++) j.tweens[g].run(f);1638            return h.notifyWith(a, [j, f, c]), 1 > f && i ? c : (h.resolveWith(a, [j]), !1);1639        }, j = h.promise({1640            elem: a,1641            props: n.extend({}, b),1642            opts: n.extend(!0, {specialEasing: {}, easing: n.easing._default}, c),1643            originalProperties: b,1644            originalOptions: c,1645            startTime: Sa || Wa(),1646            duration: c.duration,1647            tweens: [],1648            createTween: function (b, c) {1649                var d = n.Tween(a, j.opts, b, c, j.opts.specialEasing[b] || j.opts.easing);1650                return j.tweens.push(d), d;1651            },1652            stop: function (b) {1653                var c = 0, d = b ? j.tweens.length : 0;1654                if (e) return this;1655                for (e = !0; d > c; c++) j.tweens[c].run(1);1656                return b ? (h.notifyWith(a, [j, 1, 0]), h.resolveWith(a, [j, b])) : h.rejectWith(a, [j, b]), this;1657            }1658        }), k = j.props;1659        for ($a(k, j.opts.specialEasing); g > f; f++) if (d = _a.prefilters[f].call(j, a, k, j.opts)) return n.isFunction(d.stop) && (n._queueHooks(j.elem, j.opts.queue).stop = n.proxy(d.stop, d)), d;1660        return n.map(k, Ya, j), n.isFunction(j.opts.start) && j.opts.start.call(a, j), n.fx.timer(n.extend(i, {1661            elem: a,1662            anim: j,1663            queue: j.opts.queue1664        })), j.progress(j.opts.progress).done(j.opts.done, j.opts.complete).fail(j.opts.fail).always(j.opts.always);1665    }1666    n.Animation = n.extend(_a, {1667        tweeners: {1668            "*": [function (a, b) {1669                var c = this.createTween(a, b);1670                return W(c.elem, a, T.exec(b), c), c;1671            }]1672        }, tweener: function (a, b) {1673            n.isFunction(a) ? (b = a, a = ["*"]) : a = a.match(G);1674            for (var c, d = 0, e = a.length; e > d; d++) c = a[d], _a.tweeners[c] = _a.tweeners[c] || [], _a.tweeners[c].unshift(b);1675        }, prefilters: [Za], prefilter: function (a, b) {1676            b ? _a.prefilters.unshift(a) : _a.prefilters.push(a);1677        }1678    }), n.speed = function (a, b, c) {1679        var d = a && "object" == typeof a ? n.extend({}, a) : {1680            complete: c || !c && b || n.isFunction(a) && a,1681            duration: a,1682            easing: c && b || b && !n.isFunction(b) && b1683        };1684        return d.duration = n.fx.off ? 0 : "number" == typeof d.duration ? d.duration : d.duration in n.fx.speeds ? n.fx.speeds[d.duration] : n.fx.speeds._default, null != d.queue && d.queue !== !0 || (d.queue = "fx"), d.old = d.complete, d.complete = function () {1685            n.isFunction(d.old) && d.old.call(this), d.queue && n.dequeue(this, d.queue);1686        }, d;1687    }, n.fn.extend({1688        fadeTo: function (a, b, c, d) {1689            return this.filter(V).css("opacity", 0).show().end().animate({opacity: b}, a, c, d);1690        }, animate: function (a, b, c, d) {1691            var e = n.isEmptyObject(a), f = n.speed(b, c, d), g = function () {1692                var b = _a(this, n.extend({}, a), f);1693                (e || N.get(this, "finish")) && b.stop(!0);1694            };1695            return g.finish = g, e || f.queue === !1 ? this.each(g) : this.queue(f.queue, g);1696        }, stop: function (a, b, c) {1697            var d = function (a) {1698                var b = a.stop;1699                delete a.stop, b(c);1700            };1701            return "string" != typeof a && (c = b, b = a, a = void 0), b && a !== !1 && this.queue(a || "fx", []), this.each(function () {1702                var b = !0, e = null != a && a + "queueHooks", f = n.timers, g = N.get(this);1703                if (e) g[e] && g[e].stop && d(g[e]); else for (e in g) g[e] && g[e].stop && Va.test(e) && d(g[e]);1704                for (e = f.length; e--;) f[e].elem !== this || null != a && f[e].queue !== a || (f[e].anim.stop(c), b = !1, f.splice(e, 1));1705                !b && c || n.dequeue(this, a);1706            });1707        }, finish: function (a) {1708            return a !== !1 && (a = a || "fx"), this.each(function () {1709                var b, c = N.get(this), d = c[a + "queue"], e = c[a + "queueHooks"], f = n.timers, g = d ? d.length : 0;1710                for (c.finish = !0, n.queue(this, a, []), e && e.stop && e.stop.call(this, !0), b = f.length; b--;) f[b].elem === this && f[b].queue === a && (f[b].anim.stop(!0), f.splice(b, 1));1711                for (b = 0; g > b; b++) d[b] && d[b].finish && d[b].finish.call(this);1712                delete c.finish;1713            });1714        }1715    }), n.each(["toggle", "show", "hide"], function (a, b) {1716        var c = n.fn[b];1717        n.fn[b] = function (a, d, e) {1718            return null == a || "boolean" == typeof a ? c.apply(this, arguments) : this.animate(Xa(b, !0), a, d, e);1719        };1720    }), n.each({1721        slideDown: Xa("show"),1722        slideUp: Xa("hide"),1723        slideToggle: Xa("toggle"),1724        fadeIn: {opacity: "show"},1725        fadeOut: {opacity: "hide"},1726        fadeToggle: {opacity: "toggle"}1727    }, function (a, b) {1728        n.fn[a] = function (a, c, d) {1729            return this.animate(b, a, c, d);1730        };1731    }), n.timers = [], n.fx.tick = function () {1732        var a, b = 0, c = n.timers;1733        for (Sa = n.now(); b < c.length; b++) a = c[b], a() || c[b] !== a || c.splice(b--, 1);1734        c.length || n.fx.stop(), Sa = void 0;1735    }, n.fx.timer = function (a) {1736        n.timers.push(a), a() ? n.fx.start() : n.timers.pop();1737    }, n.fx.interval = 13, n.fx.start = function () {1738        Ta || (Ta = a.setInterval(n.fx.tick, n.fx.interval));1739    }, n.fx.stop = function () {1740        a.clearInterval(Ta), Ta = null;1741    }, n.fx.speeds = {slow: 600, fast: 200, _default: 400}, n.fn.delay = function (b, c) {1742        return b = n.fx ? n.fx.speeds[b] || b : b, c = c || "fx", this.queue(c, function (c, d) {1743            var e = a.setTimeout(c, b);1744            d.stop = function () {1745                a.clearTimeout(e);1746            };1747        });1748    }, function () {1749        var a = d.createElement("input"), b = d.createElement("select"), c = b.appendChild(d.createElement("option"));1750        a.type = "checkbox", l.checkOn = "" !== a.value, l.optSelected = c.selected, b.disabled = !0, l.optDisabled = !c.disabled, a = d.createElement("input"), a.value = "t", a.type = "radio", l.radioValue = "t" === a.value;1751    }();1752    var ab, bb = n.expr.attrHandle;1753    n.fn.extend({1754        attr: function (a, b) {1755            return K(this, n.attr, a, b, arguments.length > 1);1756        }, removeAttr: function (a) {1757            return this.each(function () {1758                n.removeAttr(this, a);1759            });1760        }1761    }), n.extend({1762        attr: function (a, b, c) {1763            var d, e, f = a.nodeType;1764            if (3 !== f && 8 !== f && 2 !== f) return "undefined" == typeof a.getAttribute ? n.prop(a, b, c) : (1 === f && n.isXMLDoc(a) || (b = b.toLowerCase(), e = n.attrHooks[b] || (n.expr.match.bool.test(b) ? ab : void 0)), void 0 !== c ? null === c ? void n.removeAttr(a, b) : e && "set" in e && void 0 !== (d = e.set(a, c, b)) ? d : (a.setAttribute(b, c + ""), c) : e && "get" in e && null !== (d = e.get(a, b)) ? d : (d = n.find.attr(a, b), null == d ? void 0 : d));1765        }, attrHooks: {1766            type: {1767                set: function (a, b) {1768                    if (!l.radioValue && "radio" === b && n.nodeName(a, "input")) {1769                        var c = a.value;1770                        return a.setAttribute("type", b), c && (a.value = c), b;1771                    }1772                }1773            }1774        }, removeAttr: function (a, b) {1775            var c, d, e = 0, f = b && b.match(G);1776            if (f && 1 === a.nodeType) while (c = f[e++]) d = n.propFix[c] || c, n.expr.match.bool.test(c) && (a[d] = !1), a.removeAttribute(c);1777        }1778    }), ab = {1779        set: function (a, b, c) {1780            return b === !1 ? n.removeAttr(a, c) : a.setAttribute(c, c), c;1781        }1782    }, n.each(n.expr.match.bool.source.match(/\w+/g), function (a, b) {1783        var c = bb[b] || n.find.attr;1784        bb[b] = function (a, b, d) {1785            var e, f;1786            return d || (f = bb[b], bb[b] = e, e = null != c(a, b, d) ? b.toLowerCase() : null, bb[b] = f), e;1787        };1788    });1789    var cb = /^(?:input|select|textarea|button)$/i, db = /^(?:a|area)$/i;1790    n.fn.extend({1791        prop: function (a, b) {1792            return K(this, n.prop, a, b, arguments.length > 1);1793        }, removeProp: function (a) {1794            return this.each(function () {1795                delete this[n.propFix[a] || a];1796            });1797        }1798    }), n.extend({1799        prop: function (a, b, c) {1800            var d, e, f = a.nodeType;1801            if (3 !== f && 8 !== f && 2 !== f) return 1 === f && n.isXMLDoc(a) || (b = n.propFix[b] || b, e = n.propHooks[b]), void 0 !== c ? e && "set" in e && void 0 !== (d = e.set(a, c, b)) ? d : a[b] = c : e && "get" in e && null !== (d = e.get(a, b)) ? d : a[b];1802        }, propHooks: {1803            tabIndex: {1804                get: function (a) {1805                    var b = n.find.attr(a, "tabindex");1806                    return b ? parseInt(b, 10) : cb.test(a.nodeName) || db.test(a.nodeName) && a.href ? 0 : -1;1807                }1808            }1809        }, propFix: {"for": "htmlFor", "class": "className"}1810    }), l.optSelected || (n.propHooks.selected = {1811        get: function (a) {1812            var b = a.parentNode;1813            return b && b.parentNode && b.parentNode.selectedIndex, null;1814        }, set: function (a) {1815            var b = a.parentNode;1816            b && (b.selectedIndex, b.parentNode && b.parentNode.selectedIndex);1817        }1818    }), n.each(["tabIndex", "readOnly", "maxLength", "cellSpacing", "cellPadding", "rowSpan", "colSpan", "useMap", "frameBorder", "contentEditable"], function () {1819        n.propFix[this.toLowerCase()] = this;1820    });1821    var eb = /[\t\r\n\f]/g;1822    function fb(a) {1823        return a.getAttribute && a.getAttribute("class") || "";1824    }1825    n.fn.extend({1826        addClass: function (a) {1827            var b, c, d, e, f, g, h, i = 0;1828            if (n.isFunction(a)) return this.each(function (b) {1829                n(this).addClass(a.call(this, b, fb(this)));1830            });1831            if ("string" == typeof a && a) {1832                b = a.match(G) || [];1833                while (c = this[i++]) if (e = fb(c), d = 1 === c.nodeType && (" " + e + " ").replace(eb, " ")) {1834                    g = 0;1835                    while (f = b[g++]) d.indexOf(" " + f + " ") < 0 && (d += f + " ");1836                    h = n.trim(d), e !== h && c.setAttribute("class", h);1837                }1838            }1839            return this;1840        }, removeClass: function (a) {1841            var b, c, d, e, f, g, h, i = 0;1842            if (n.isFunction(a)) return this.each(function (b) {1843                n(this).removeClass(a.call(this, b, fb(this)));1844            });1845            if (!arguments.length) return this.attr("class", "");1846            if ("string" == typeof a && a) {1847                b = a.match(G) || [];1848                while (c = this[i++]) if (e = fb(c), d = 1 === c.nodeType && (" " + e + " ").replace(eb, " ")) {1849                    g = 0;1850                    while (f = b[g++]) while (d.indexOf(" " + f + " ") > -1) d = d.replace(" " + f + " ", " ");1851                    h = n.trim(d), e !== h && c.setAttribute("class", h);1852                }1853            }1854            return this;1855        }, toggleClass: function (a, b) {1856            var c = typeof a;1857            return "boolean" == typeof b && "string" === c ? b ? this.addClass(a) : this.removeClass(a) : n.isFunction(a) ? this.each(function (c) {1858                n(this).toggleClass(a.call(this, c, fb(this), b), b);1859            }) : this.each(function () {1860                var b, d, e, f;1861                if ("string" === c) {1862                    d = 0, e = n(this), f = a.match(G) || [];1863                    while (b = f[d++]) e.hasClass(b) ? e.removeClass(b) : e.addClass(b);1864                } else void 0 !== a && "boolean" !== c || (b = fb(this), b && N.set(this, "__className__", b), this.setAttribute && this.setAttribute("class", b || a === !1 ? "" : N.get(this, "__className__") || ""));1865            });1866        }, hasClass: function (a) {1867            var b, c, d = 0;1868            b = " " + a + " ";1869            while (c = this[d++]) if (1 === c.nodeType && (" " + fb(c) + " ").replace(eb, " ").indexOf(b) > -1) return !0;1870            return !1;1871        }1872    });1873    var gb = /\r/g, hb = /[\x20\t\r\n\f]+/g;1874    n.fn.extend({1875        val: function (a) {1876            var b, c, d, e = this[0];1877            {1878                if (arguments.length) return d = n.isFunction(a), this.each(function (c) {1879                    var e;1880                    1 === this.nodeType && (e = d ? a.call(this, c, n(this).val()) : a, null == e ? e = "" : "number" == typeof e ? e += "" : n.isArray(e) && (e = n.map(e, function (a) {1881                        return null == a ? "" : a + "";1882                    })), b = n.valHooks[this.type] || n.valHooks[this.nodeName.toLowerCase()], b && "set" in b && void 0 !== b.set(this, e, "value") || (this.value = e));1883                });1884                if (e) return b = n.valHooks[e.type] || n.valHooks[e.nodeName.toLowerCase()], b && "get" in b && void 0 !== (c = b.get(e, "value")) ? c : (c = e.value, "string" == typeof c ? c.replace(gb, "") : null == c ? "" : c);1885            }1886        }1887    }), n.extend({1888        valHooks: {1889            option: {1890                get: function (a) {1891                    var b = n.find.attr(a, "value");1892                    return null != b ? b : n.trim(n.text(a)).replace(hb, " ");1893                }1894            }, select: {1895                get: function (a) {1896                    for (var b, c, d = a.options, e = a.selectedIndex, f = "select-one" === a.type || 0 > e, g = f ? null : [], h = f ? e + 1 : d.length, i = 0 > e ? h : f ? e : 0; h > i; i++) if (c = d[i], (c.selected || i === e) && (l.optDisabled ? !c.disabled : null === c.getAttribute("disabled")) && (!c.parentNode.disabled || !n.nodeName(c.parentNode, "optgroup"))) {1897                        if (b = n(c).val(), f) return b;1898                        g.push(b);1899                    }1900                    return g;1901                }, set: function (a, b) {1902                    var c, d, e = a.options, f = n.makeArray(b), g = e.length;1903                    while (g--) d = e[g], (d.selected = n.inArray(n.valHooks.option.get(d), f) > -1) && (c = !0);1904                    return c || (a.selectedIndex = -1), f;1905                }1906            }1907        }1908    }), n.each(["radio", "checkbox"], function () {1909        n.valHooks[this] = {1910            set: function (a, b) {1911                return n.isArray(b) ? a.checked = n.inArray(n(a).val(), b) > -1 : void 0;1912            }1913        }, l.checkOn || (n.valHooks[this].get = function (a) {1914            return null === a.getAttribute("value") ? "on" : a.value;1915        });1916    });1917    var ib = /^(?:focusinfocus|focusoutblur)$/;1918    n.extend(n.event, {1919        trigger: function (b, c, e, f) {1920            var g, h, i, j, l, m, o, p = [e || d], q = k.call(b, "type") ? b.type : b,1921                r = k.call(b, "namespace") ? b.namespace.split(".") : [];1922            if (h = i = e = e || d, 3 !== e.nodeType && 8 !== e.nodeType && !ib.test(q + n.event.triggered) && (q.indexOf(".") > -1 && (r = q.split("."), q = r.shift(), r.sort()), l = q.indexOf(":") < 0 && "on" + q, b = b[n.expando] ? b : new n.Event(q, "object" == typeof b && b), b.isTrigger = f ? 2 : 3, b.namespace = r.join("."), b.rnamespace = b.namespace ? new RegExp("(^|\\.)" + r.join("\\.(?:.*\\.|)") + "(\\.|$)") : null, b.result = void 0, b.target || (b.target = e), c = null == c ? [b] : n.makeArray(c, [b]), o = n.event.special[q] || {}, f || !o.trigger || o.trigger.apply(e, c) !== !1)) {1923                if (!f && !o.noBubble && !n.isWindow(e)) {1924                    for (j = o.delegateType || q, ib.test(j + q) || (h = h.parentNode); h; h = h.parentNode) p.push(h), i = h;1925                    i === (e.ownerDocument || d) && p.push(i.defaultView || i.parentWindow || a);1926                }1927                g = 0;1928                while ((h = p[g++]) && !b.isPropagationStopped()) b.type = g > 1 ? j : o.bindType || q, m = (N.get(h, "events") || {})[b.type] && N.get(h, "handle"), m && m.apply(h, c), m = l && h[l], m && m.apply && L(h) && (b.result = m.apply(h, c), b.result === !1 && b.preventDefault());1929                return b.type = q, f || b.isDefaultPrevented() || o._default && o._default.apply(p.pop(), c) !== !1 || !L(e) || l && n.isFunction(e[q]) && !n.isWindow(e) && (i = e[l], i && (e[l] = null), n.event.triggered = q, e[q](), n.event.triggered = void 0, i && (e[l] = i)), b.result;1930            }1931        }, simulate: function (a, b, c) {1932            var d = n.extend(new n.Event, c, {type: a, isSimulated: !0});1933            n.event.trigger(d, null, b);1934        }1935    }), n.fn.extend({1936        trigger: function (a, b) {1937            return this.each(function () {1938                n.event.trigger(a, b, this);1939            });1940        }, triggerHandler: function (a, b) {1941            var c = this[0];1942            return c ? n.event.trigger(a, b, c, !0) : void 0;1943        }1944    }), n.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "), function (a, b) {1945        n.fn[b] = function (a, c) {1946            return arguments.length > 0 ? this.on(b, null, a, c) : this.trigger(b);1947        };1948    }), n.fn.extend({1949        hover: function (a, b) {1950            return this.mouseenter(a).mouseleave(b || a);1951        }1952    }), l.focusin = "onfocusin" in a, l.focusin || n.each({focus: "focusin", blur: "focusout"}, function (a, b) {1953        var c = function (a) {1954            n.event.simulate(b, a.target, n.event.fix(a));1955        };1956        n.event.special[b] = {1957            setup: function () {1958                var d = this.ownerDocument || this, e = N.access(d, b);1959                e || d.addEventListener(a, c, !0), N.access(d, b, (e || 0) + 1);1960            }, teardown: function () {1961                var d = this.ownerDocument || this, e = N.access(d, b) - 1;1962                e ? N.access(d, b, e) : (d.removeEventListener(a, c, !0), N.remove(d, b));1963            }1964        };1965    });1966    var jb = a.location, kb = n.now(), lb = /\?/;1967    n.parseJSON = function (a) {1968        return JSON.parse(a + "");1969    }, n.parseXML = function (b) {1970        var c;1971        if (!b || "string" != typeof b) return null;1972        try {1973            c = (new a.DOMParser).parseFromString(b, "text/xml");1974        } catch (d) {1975            c = void 0;1976        }1977        return c && !c.getElementsByTagName("parsererror").length || n.error("Invalid XML: " + b), c;1978    };1979    var mb = /#.*$/, nb = /([?&])_=[^&]*/, ob = /^(.*?):[ \t]*([^\r\n]*)$/gm,1980        pb = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, qb = /^(?:GET|HEAD)$/, rb = /^\/\//, sb = {},1981        tb = {}, ub = "*/".concat("*"), vb = d.createElement("a");1982    vb.href = jb.href;1983    function wb(a) {1984        return function (b, c) {1985            "string" != typeof b && (c = b, b = "*");1986            var d, e = 0, f = b.toLowerCase().match(G) || [];1987            if (n.isFunction(c)) while (d = f[e++]) "+" === d[0] ? (d = d.slice(1) || "*", (a[d] = a[d] || []).unshift(c)) : (a[d] = a[d] || []).push(c);1988        };1989    }1990    function xb(a, b, c, d) {1991        var e = {}, f = a === tb;1992        function g(h) {1993            var i;1994            return e[h] = !0, n.each(a[h] || [], function (a, h) {1995                var j = h(b, c, d);1996                return "string" != typeof j || f || e[j] ? f ? !(i = j) : void 0 : (b.dataTypes.unshift(j), g(j), !1);1997            }), i;1998        }1999        return g(b.dataTypes[0]) || !e["*"] && g("*");2000    }2001    function yb(a, b) {2002        var c, d, e = n.ajaxSettings.flatOptions || {};2003        for (c in b) void 0 !== b[c] && ((e[c] ? a : d || (d = {}))[c] = b[c]);2004        return d && n.extend(!0, a, d), a;2005    }2006    function zb(a, b, c) {2007        var d, e, f, g, h = a.contents, i = a.dataTypes;2008        while ("*" === i[0]) i.shift(), void 0 === d && (d = a.mimeType || b.getResponseHeader("Content-Type"));2009        if (d) for (e in h) if (h[e] && h[e].test(d)) {2010            i.unshift(e);2011            break;2012        }2013        if (i[0] in c) f = i[0]; else {2014            for (e in c) {2015                if (!i[0] || a.converters[e + " " + i[0]]) {2016                    f = e;2017                    break;2018                }2019                g || (g = e);2020            }2021            f = f || g;2022        }2023        return f ? (f !== i[0] && i.unshift(f), c[f]) : void 0;2024    }2025    function Ab(a, b, c, d) {2026        var e, f, g, h, i, j = {}, k = a.dataTypes.slice();2027        if (k[1]) for (g in a.converters) j[g.toLowerCase()] = a.converters[g];2028        f = k.shift();2029        while (f) if (a.responseFields[f] && (c[a.responseFields[f]] = b), !i && d && a.dataFilter && (b = a.dataFilter(b, a.dataType)), i = f, f = k.shift()) if ("*" === f) f = i; else if ("*" !== i && i !== f) {2030            if (g = j[i + " " + f] || j["* " + f], !g) for (e in j) if (h = e.split(" "), h[1] === f && (g = j[i + " " + h[0]] || j["* " + h[0]])) {2031                g === !0 ? g = j[e] : j[e] !== !0 && (f = h[0], k.unshift(h[1]));2032                break;2033            }2034            if (g !== !0) if (g && a["throws"]) b = g(b); else try {2035                b = g(b);2036            } catch (l) {2037                return {state: "parsererror", error: g ? l : "No conversion from " + i + " to " + f};2038            }2039        }2040        return {state: "success", data: b};2041    }2042    n.extend({2043        active: 0,2044        lastModified: {},2045        etag: {},2046        ajaxSettings: {2047            url: jb.href,2048            type: "GET",2049            isLocal: pb.test(jb.protocol),2050            global: !0,2051            processData: !0,2052            async: !0,2053            contentType: "application/x-www-form-urlencoded; charset=UTF-8",2054            accepts: {2055                "*": ub,2056                text: "text/plain",2057                html: "text/html",2058                xml: "application/xml, text/xml",2059                json: "application/json, text/javascript"2060            },2061            contents: {xml: /\bxml\b/, html: /\bhtml/, json: /\bjson\b/},2062            responseFields: {xml: "responseXML", text: "responseText", json: "responseJSON"},2063            converters: {"* text": String, "text html": !0, "text json": n.parseJSON, "text xml": n.parseXML},2064            flatOptions: {url: !0, context: !0}2065        },2066        ajaxSetup: function (a, b) {2067            return b ? yb(yb(a, n.ajaxSettings), b) : yb(n.ajaxSettings, a);2068        },2069        ajaxPrefilter: wb(sb),2070        ajaxTransport: wb(tb),2071        ajax: function (b, c) {2072            "object" == typeof b && (c = b, b = void 0), c = c || {};2073            var e, f, g, h, i, j, k, l, m = n.ajaxSetup({}, c), o = m.context || m,2074                p = m.context && (o.nodeType || o.jquery) ? n(o) : n.event, q = n.Deferred(),2075                r = n.Callbacks("once memory"), s = m.statusCode || {}, t = {}, u = {}, v = 0, w = "canceled", x = {2076                    readyState: 0, getResponseHeader: function (a) {2077                        var b;2078                        if (2 === v) {2079                            if (!h) {2080                                h = {};2081                                while (b = ob.exec(g)) h[b[1].toLowerCase()] = b[2];2082                            }2083                            b = h[a.toLowerCase()];2084                        }2085                        return null == b ? null : b;2086                    }, getAllResponseHeaders: function () {2087                        return 2 === v ? g : null;2088                    }, setRequestHeader: function (a, b) {2089                        var c = a.toLowerCase();2090                        return v || (a = u[c] = u[c] || a, t[a] = b), this;2091                    }, overrideMimeType: function (a) {2092                        return v || (m.mimeType = a), this;2093                    }, statusCode: function (a) {2094                        var b;2095                        if (a) if (2 > v) for (b in a) s[b] = [s[b], a[b]]; else x.always(a[x.status]);2096                        return this;2097                    }, abort: function (a) {2098                        var b = a || w;2099                        return e && e.abort(b), z(0, b), this;2100                    }2101                };2102            if (q.promise(x).complete = r.add, x.success = x.done, x.error = x.fail, m.url = ((b || m.url || jb.href) + "").replace(mb, "").replace(rb, jb.protocol + "//"), m.type = c.method || c.type || m.method || m.type, m.dataTypes = n.trim(m.dataType || "*").toLowerCase().match(G) || [""], null == m.crossDomain) {2103                j = d.createElement("a");2104                try {2105                    j.href = m.url, j.href = j.href, m.crossDomain = vb.protocol + "//" + vb.host != j.protocol + "//" + j.host;2106                } catch (y) {2107                    m.crossDomain = !0;2108                }2109            }2110            if (m.data && m.processData && "string" != typeof m.data && (m.data = n.param(m.data, m.traditional)), xb(sb, m, c, x), 2 === v) return x;2111            k = n.event && m.global, k && 0 === n.active++ && n.event.trigger("ajaxStart"), m.type = m.type.toUpperCase(), m.hasContent = !qb.test(m.type), f = m.url, m.hasContent || (m.data && (f = m.url += (lb.test(f) ? "&" : "?") + m.data, delete m.data), m.cache === !1 && (m.url = nb.test(f) ? f.replace(nb, "$1_=" + kb++) : f + (lb.test(f) ? "&" : "?") + "_=" + kb++)), m.ifModified && (n.lastModified[f] && x.setRequestHeader("If-Modified-Since", n.lastModified[f]), n.etag[f] && x.setRequestHeader("If-None-Match", n.etag[f])), (m.data && m.hasContent && m.contentType !== !1 || c.contentType) && x.setRequestHeader("Content-Type", m.contentType), x.setRequestHeader("Accept", m.dataTypes[0] && m.accepts[m.dataTypes[0]] ? m.accepts[m.dataTypes[0]] + ("*" !== m.dataTypes[0] ? ", " + ub + "; q=0.01" : "") : m.accepts["*"]);2112            for (l in m.headers) x.setRequestHeader(l, m.headers[l]);2113            if (m.beforeSend && (m.beforeSend.call(o, x, m) === !1 || 2 === v)) return x.abort();2114            w = "abort";2115            for (l in{success: 1, error: 1, complete: 1}) x[l](m[l]);2116            if (e = xb(tb, m, c, x)) {2117                if (x.readyState = 1, k && p.trigger("ajaxSend", [x, m]), 2 === v) return x;2118                m.async && m.timeout > 0 && (i = a.setTimeout(function () {2119                    x.abort("timeout");2120                }, m.timeout));2121                try {2122                    v = 1, e.send(t, z);2123                } catch (y) {2124                    if (!(2 > v)) throw y;2125                    z(-1, y);2126                }2127            } else z(-1, "No Transport");2128            function z(b, c, d, h) {2129                var j, l, t, u, w, y = c;2130                2 !== v && (v = 2, i && a.clearTimeout(i), e = void 0, g = h || "", x.readyState = b > 0 ? 4 : 0, j = b >= 200 && 300 > b || 304 === b, d && (u = zb(m, x, d)), u = Ab(m, u, x, j), j ? (m.ifModified && (w = x.getResponseHeader("Last-Modified"), w && (n.lastModified[f] = w), w = x.getResponseHeader("etag"), w && (n.etag[f] = w)), 204 === b || "HEAD" === m.type ? y = "nocontent" : 304 === b ? y = "notmodified" : (y = u.state, l = u.data, t = u.error, j = !t)) : (t = y, !b && y || (y = "error", 0 > b && (b = 0))), x.status = b, x.statusText = (c || y) + "", j ? q.resolveWith(o, [l, y, x]) : q.rejectWith(o, [x, y, t]), x.statusCode(s), s = void 0, k && p.trigger(j ? "ajaxSuccess" : "ajaxError", [x, m, j ? l : t]), r.fireWith(o, [x, y]), k && (p.trigger("ajaxComplete", [x, m]), --n.active || n.event.trigger("ajaxStop")));2131            }2132            return x;2133        },2134        getJSON: function (a, b, c) {2135            return n.get(a, b, c, "json");2136        },2137        getScript: function (a, b) {2138            return n.get(a, void 0, b, "script");2139        }2140    }), n.each(["get", "post"], function (a, b) {2141        n[b] = function (a, c, d, e) {2142            return n.isFunction(c) && (e = e || d, d = c, c = void 0), n.ajax(n.extend({2143                url: a,2144                type: b,2145                dataType: e,2146                data: c,2147                success: d2148            }, n.isPlainObject(a) && a));2149        };2150    }), n._evalUrl = function (a) {2151        return n.ajax({url: a, type: "GET", dataType: "script", async: !1, global: !1, "throws": !0});2152    }, n.fn.extend({2153        wrapAll: function (a) {2154            var b;2155            return n.isFunction(a) ? this.each(function (b) {2156                n(this).wrapAll(a.call(this, b));2157            }) : (this[0] && (b = n(a, this[0].ownerDocument).eq(0).clone(!0), this[0].parentNode && b.insertBefore(this[0]), b.map(function () {2158                var a = this;2159                while (a.firstElementChild) a = a.firstElementChild;2160                return a;2161            }).append(this)), this);2162        }, wrapInner: function (a) {2163            return n.isFunction(a) ? this.each(function (b) {2164                n(this).wrapInner(a.call(this, b));2165            }) : this.each(function () {2166                var b = n(this), c = b.contents();2167                c.length ? c.wrapAll(a) : b.append(a);2168            });2169        }, wrap: function (a) {2170            var b = n.isFunction(a);2171            return this.each(function (c) {2172                n(this).wrapAll(b ? a.call(this, c) : a);2173            });2174        }, unwrap: function () {2175            return this.parent().each(function () {2176                n.nodeName(this, "body") || n(this).replaceWith(this.childNodes);2177            }).end();2178        }2179    }), n.expr.filters.hidden = function (a) {2180        return !n.expr.filters.visible(a);2181    }, n.expr.filters.visible = function (a) {2182        return a.offsetWidth > 0 || a.offsetHeight > 0 || a.getClientRects().length > 0;2183    };2184    var Bb = /%20/g, Cb = /\[\]$/, Db = /\r?\n/g, Eb = /^(?:submit|button|image|reset|file)$/i,2185        Fb = /^(?:input|select|textarea|keygen)/i;2186    function Gb(a, b, c, d) {2187        var e;2188        if (n.isArray(b)) n.each(b, function (b, e) {2189            c || Cb.test(a) ? d(a, e) : Gb(a + "[" + ("object" == typeof e && null != e ? b : "") + "]", e, c, d);2190        }); else if (c || "object" !== n.type(b)) d(a, b); else for (e in b) Gb(a + "[" + e + "]", b[e], c, d);2191    }2192    n.param = function (a, b) {2193        var c, d = [], e = function (a, b) {2194            b = n.isFunction(b) ? b() : null == b ? "" : b, d[d.length] = encodeURIComponent(a) + "=" + encodeURIComponent(b);2195        };2196        if (void 0 === b && (b = n.ajaxSettings && n.ajaxSettings.traditional), n.isArray(a) || a.jquery && !n.isPlainObject(a)) n.each(a, function () {2197            e(this.name, this.value);2198        }); else for (c in a) Gb(c, a[c], b, e);2199        return d.join("&").replace(Bb, "+");2200    }, n.fn.extend({2201        serialize: function () {2202            return n.param(this.serializeArray());2203        }, serializeArray: function () {2204            return this.map(function () {2205                var a = n.prop(this, "elements");2206                return a ? n.makeArray(a) : this;2207            }).filter(function () {2208                var a = this.type;2209                return this.name && !n(this).is(":disabled") && Fb.test(this.nodeName) && !Eb.test(a) && (this.checked || !X.test(a));2210            }).map(function (a, b) {2211                var c = n(this).val();2212                return null == c ? null : n.isArray(c) ? n.map(c, function (a) {2213                    return {name: b.name, value: a.replace(Db, "\r\n")};2214                }) : {name: b.name, value: c.replace(Db, "\r\n")};2215            }).get();2216        }2217    }), n.ajaxSettings.xhr = function () {2218        try {2219            return new a.XMLHttpRequest;2220        } catch (b) {2221        }2222    };2223    var Hb = {0: 200, 1223: 204}, Ib = n.ajaxSettings.xhr();2224    l.cors = !!Ib && "withCredentials" in Ib, l.ajax = Ib = !!Ib, n.ajaxTransport(function (b) {2225        var c, d;2226        return l.cors || Ib && !b.crossDomain ? {2227            send: function (e, f) {2228                var g, h = b.xhr();2229                if (h.open(b.type, b.url, b.async, b.username, b.password), b.xhrFields) for (g in b.xhrFields) h[g] = b.xhrFields[g];2230                b.mimeType && h.overrideMimeType && h.overrideMimeType(b.mimeType), b.crossDomain || e["X-Requested-With"] || (e["X-Requested-With"] = "XMLHttpRequest");2231                for (g in e) h.setRequestHeader(g, e[g]);2232                c = function (a) {2233                    return function () {2234                        c && (c = d = h.onload = h.onerror = h.onabort = h.onreadystatechange = null, "abort" === a ? h.abort() : "error" === a ? "number" != typeof h.status ? f(0, "error") : f(h.status, h.statusText) : f(Hb[h.status] || h.status, h.statusText, "text" !== (h.responseType || "text") || "string" != typeof h.responseText ? {binary: h.response} : {text: h.responseText}, h.getAllResponseHeaders()));2235                    };2236                }, h.onload = c(), d = h.onerror = c("error"), void 0 !== h.onabort ? h.onabort = d : h.onreadystatechange = function () {2237                    4 === h.readyState && a.setTimeout(function () {2238                        c && d();2239                    });2240                }, c = c("abort");2241                try {2242                    h.send(b.hasContent && b.data || null);2243                } catch (i) {2244                    if (c) throw i;2245                }2246            }, abort: function () {2247                c && c();2248            }2249        } : void 0;2250    }), n.ajaxSetup({2251        accepts: {script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},2252        contents: {script: /\b(?:java|ecma)script\b/},2253        converters: {2254            "text script": function (a) {2255                return n.globalEval(a), a;2256            }2257        }2258    }), n.ajaxPrefilter("script", function (a) {2259        void 0 === a.cache && (a.cache = !1), a.crossDomain && (a.type = "GET");2260    }), n.ajaxTransport("script", function (a) {2261        if (a.crossDomain) {2262            var b, c;2263            return {2264                send: function (e, f) {2265                    b = n("<script>").prop({charset: a.scriptCharset, src: a.url}).on("load error", c = function (a) {2266                        b.remove(), c = null, a && f("error" === a.type ? 404 : 200, a.type);2267                    }), d.head.appendChild(b[0]);2268                }, abort: function () {2269                    c && c();2270                }2271            };2272        }2273    });2274    var Jb = [], Kb = /(=)\?(?=&|$)|\?\?/;2275    n.ajaxSetup({2276        jsonp: "callback", jsonpCallback: function () {2277            var a = Jb.pop() || n.expando + "_" + kb++;2278            return this[a] = !0, a;2279        }2280    }), n.ajaxPrefilter("json jsonp", function (b, c, d) {2281        var e, f, g,2282            h = b.jsonp !== !1 && (Kb.test(b.url) ? "url" : "string" == typeof b.data && 0 === (b.contentType || "").indexOf("application/x-www-form-urlencoded") && Kb.test(b.data) && "data");2283        return h || "jsonp" === b.dataTypes[0] ? (e = b.jsonpCallback = n.isFunction(b.jsonpCallback) ? b.jsonpCallback() : b.jsonpCallback, h ? b[h] = b[h].replace(Kb, "$1" + e) : b.jsonp !== !1 && (b.url += (lb.test(b.url) ? "&" : "?") + b.jsonp + "=" + e), b.converters["script json"] = function () {2284            return g || n.error(e + " was not called"), g[0];2285        }, b.dataTypes[0] = "json", f = a[e], a[e] = function () {2286            g = arguments;2287        }, d.always(function () {2288            void 0 === f ? n(a).removeProp(e) : a[e] = f, b[e] && (b.jsonpCallback = c.jsonpCallback, Jb.push(e)), g && n.isFunction(f) && f(g[0]), g = f = void 0;2289        }), "script") : void 0;2290    }), n.parseHTML = function (a, b, c) {2291        if (!a || "string" != typeof a) return null;2292        "boolean" == typeof b && (c = b, b = !1), b = b || d;2293        var e = x.exec(a), f = !c && [];2294        return e ? [b.createElement(e[1])] : (e = ca([a], b, f), f && f.length && n(f).remove(), n.merge([], e.childNodes));2295    };2296    var Lb = n.fn.load;2297    n.fn.load = function (a, b, c) {2298        if ("string" != typeof a && Lb) return Lb.apply(this, arguments);2299        var d, e, f, g = this, h = a.indexOf(" ");2300        return h > -1 && (d = n.trim(a.slice(h)), a = a.slice(0, h)), n.isFunction(b) ? (c = b, b = void 0) : b && "object" == typeof b && (e = "POST"), g.length > 0 && n.ajax({2301            url: a,2302            type: e || "GET",2303            dataType: "html",2304            data: b2305        }).done(function (a) {2306            f = arguments, g.html(d ? n("<div>").append(n.parseHTML(a)).find(d) : a);2307        }).always(c && function (a, b) {2308            g.each(function () {2309                c.apply(this, f || [a.responseText, b, a]);2310            });2311        }), this;2312    }, n.each(["ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend"], function (a, b) {2313        n.fn[b] = function (a) {2314            return this.on(b, a);2315        };2316    }), n.expr.filters.animated = function (a) {2317        return n.grep(n.timers, function (b) {2318            return a === b.elem;2319        }).length;2320    };2321    function Mb(a) {2322        return n.isWindow(a) ? a : 9 === a.nodeType && a.defaultView;2323    }2324    n.offset = {2325        setOffset: function (a, b, c) {2326            var d, e, f, g, h, i, j, k = n.css(a, "position"), l = n(a), m = {};2327            "static" === k && (a.style.position = "relative"), h = l.offset(), f = n.css(a, "top"), i = n.css(a, "left"), j = ("absolute" === k || "fixed" === k) && (f + i).indexOf("auto") > -1, j ? (d = l.position(), g = d.top, e = d.left) : (g = parseFloat(f) || 0, e = parseFloat(i) || 0), n.isFunction(b) && (b = b.call(a, c, n.extend({}, h))), null != b.top && (m.top = b.top - h.top + g), null != b.left && (m.left = b.left - h.left + e), "using" in b ? b.using.call(a, m) : l.css(m);2328        }2329    }, n.fn.extend({2330        offset: function (a) {2331            if (arguments.length) return void 0 === a ? this : this.each(function (b) {2332                n.offset.setOffset(this, a, b);2333            });2334            var b, c, d = this[0], e = {top: 0, left: 0}, f = d && d.ownerDocument;2335            if (f) return b = f.documentElement, n.contains(b, d) ? (e = d.getBoundingClientRect(), c = Mb(f), {2336                top: e.top + c.pageYOffset - b.clientTop,2337                left: e.left + c.pageXOffset - b.clientLeft2338            }) : e;2339        }, position: function () {2340            if (this[0]) {2341                var a, b, c = this[0], d = {top: 0, left: 0};2342                return "fixed" === n.css(c, "position") ? b = c.getBoundingClientRect() : (a = this.offsetParent(), b = this.offset(), n.nodeName(a[0], "html") || (d = a.offset()), d.top += n.css(a[0], "borderTopWidth", !0), d.left += n.css(a[0], "borderLeftWidth", !0)), {2343                    top: b.top - d.top - n.css(c, "marginTop", !0),2344                    left: b.left - d.left - n.css(c, "marginLeft", !0)2345                };2346            }2347        }, offsetParent: function () {2348            return this.map(function () {2349                var a = this.offsetParent;2350                while (a && "static" === n.css(a, "position")) a = a.offsetParent;2351                return a || Ea;2352            });2353        }2354    }), n.each({scrollLeft: "pageXOffset", scrollTop: "pageYOffset"}, function (a, b) {2355        var c = "pageYOffset" === b;2356        n.fn[a] = function (d) {2357            return K(this, function (a, d, e) {2358                var f = Mb(a);2359                return void 0 === e ? f ? f[b] : a[d] : void(f ? f.scrollTo(c ? f.pageXOffset : e, c ? e : f.pageYOffset) : a[d] = e);2360            }, a, d, arguments.length);2361        };2362    }), n.each(["top", "left"], function (a, b) {2363        n.cssHooks[b] = Ga(l.pixelPosition, function (a, c) {2364            return c ? (c = Fa(a, b), Ba.test(c) ? n(a).position()[b] + "px" : c) : void 0;2365        });2366    }), n.each({Height: "height", Width: "width"}, function (a, b) {2367        n.each({padding: "inner" + a, content: b, "": "outer" + a}, function (c, d) {2368            n.fn[d] = function (d, e) {2369                var f = arguments.length && (c || "boolean" != typeof d),2370                    g = c || (d === !0 || e === !0 ? "margin" : "border");2371                return K(this, function (b, c, d) {2372                    var e;2373                    return n.isWindow(b) ? b.document.documentElement["client" + a] : 9 === b.nodeType ? (e = b.documentElement, Math.max(b.body["scroll" + a], e["scroll" + a], b.body["offset" + a], e["offset" + a], e["client" + a])) : void 0 === d ? n.css(b, c, g) : n.style(b, c, d, g);2374                }, b, f ? d : void 0, f, null);2375            };2376        });2377    }), n.fn.extend({2378        bind: function (a, b, c) {2379            return this.on(a, null, b, c);2380        }, unbind: function (a, b) {2381            return this.off(a, null, b);2382        }, delegate: function (a, b, c, d) {2383            return this.on(b, a, c, d);2384        }, undelegate: function (a, b, c) {2385            return 1 === arguments.length ? this.off(a, "**") : this.off(b, a || "**", c);2386        }, size: function () {2387            return this.length;2388        }2389    }), n.fn.andSelf = n.fn.addBack, "function" == typeof define && define.amd && define("jquery", [], function () {2390        return n;2391    });2392    var Nb = a.jQuery, Ob = a.$;2393    return n.noConflict = function (b) {2394        return a.$ === n && (a.$ = Ob), b && a.jQuery === n && (a.jQuery = Nb), n;2395    }, b || (a.jQuery = a.$ = n), n;2396});2397var srv = function () {2398    var show_log = !1, user_touching = !1,2399        isIE = document.documentMode && (8 == document.documentMode || 9 == document.documentMode),2400        eventsHandlers = {form_loaded: []},2401        touch_css = {"-ms-touch-action": "manipulation", "touch-action": "manipulation"},2402        isPreview = -1 < document.location.pathname.indexOf("/survey/manage/preview/"),2403        PUBLIC_LANDING = -1 < document.location.pathname.indexOf("/survey/public/take-survey/"),2404        LOCATION_REF = PUBLIC_LANDING ? document.location.href + (document.querySelector("#public-survey-page-querystring") && document.querySelector("#public-survey-page-querystring").value) : document.location.href,2405        ALL_KEYS = [], FROM_DOMAIN = "", FIRST_INIT = !0, PM_INIT = !1;2406    function base() {2407        return {2408            current_block: "",2409            resize_int: 0,2410            modalFirst: !0,2411            modal_open: !1,2412            modal_dismissed: !1,2413            followUpId: !1,2414            sendMode: "insert",2415            hide_on_init: [],2416            lock_submit: !1,2417            required_when_visible: [],2418            version: "1.3",2419            domain: "mopinion",2420            div_name: "surveyContent",2421            remote: !0,2422            outer_modal: "",2423            prev_page: "",2424            next_page: "",2425            current_page: 1,2426            page_count: 1,2427            page_history: {},2428            rules_set: [],2429            show_progress: !1,2430            window_viewport: "",2431            document_title: "",2432            form_completion_ratio: 0,2433            trigger_method: "passive",2434            is_loading: !0,2435            show_button: !1,2436            cookie_expire: 365,2437            slider: {},2438            button: {},2439            ga_id: "",2440            error_messages: {2441                deflt: "Something went wrong",2442                required: "This field is required",2443                required_multi: "All fields are required",2444                invalid_number: "This is not a valid number",2445                invalid_phone: "This is not a valid phone number",2446                invalid_email: "This is not a valid email address",2447                too_short: "The answer is too short",2448                too_long: "The answer is too long"2449            }2450        };2451    }2452    function opener(e) {2453        var r, t, a = (e = e || {}).key;2454        if (void 0 === a) return srv.log("Formkey required", !0, "warn"), !1;2455        if (srv.hasOwnProperty(a)) {2456            r = a, (t = function () {2457                setTimeout(function () {2458                    srv[r].is_loading ? t() : (srv[r] = __MS.extend({}, srv[r], e), "proactive" === srv[r].trigger_method || "exit" === srv[r].trigger_method || "force" === srv[r].trigger_method || "preview" === srv[r].trigger_method ? "slide" == srv[r].slider.type ? srv.preloadSlider(r, "open") : srv.openModal(!0, r) : "passive" === srv[r].trigger_method && void 0 === srv[r].survey_properties && srv.showButton(r));2459                }, 50);2460            })();2461        } else srv.hasOwnProperty(a) || srv.loadSurvey(e, function () {2462            srv.open(e);2463        });2464    }2465    function loadSurvey(e, r) {2466        if ("true" == getCookie("Mopinion_Debug") && (this.show_log = !0), !srv.hasOwnProperty(e.key) || srv[e.key].is_loading) {2467            if ("object" != typeof e) return srv.log("Form key required", !0, "warn"), !1;2468            FROM_DOMAIN ? e.domain = FROM_DOMAIN : FROM_DOMAIN = e.domain;2469            var t = e.key;2470            if (-1 == ALL_KEYS.indexOf(t) && ALL_KEYS.push(t), void 0 === e.testMode && (e.testMode = !1), this[t] = __MS.extend({}, base(), e), this[t].url = "https://" + this[t].domain + "/survey/public/stream?key=" + t + "&domain=" + this[t].domain, void 0 !== e.modal ? (this[t].outer_modal = e.modal, this[t].url += "&modal=" + this[t].outer_modal) : this[t].outer_modal = !0, this[t].url += "&version=" + this[t].version, !this[t].div_name) return srv.log("Output div is not set", !0, "warn"), !1;2471            if (srv.log("Loading Mopinion Feedback Form with key " + t, !1, "info"), FIRST_INIT) this.loadjQuery(t), FIRST_INIT = !1; else {2472                var a = this, s = function () {2473                    "function" == typeof srv.jQuery ? a.loadJSON(t, r) : setTimeout(s, 50);2474                };2475                s();2476            }2477        } else "function" == typeof r && r();2478    }2479    function loadjQuery(e, r) {2480        var t = this, a = "https://" + this[e].domain + "/assets/js/jquery-2.2.4.min.js", s = function () {2481            return void 0 !== window.jQuery ? "jQuery" : void 0 !== window.$ && window.$.fn && window.$.fn.jquery ? "$" : void 0;2482        }, o = s();2483        o ? !function (e) {2484            var r = e.split(".");2485            if (1 < r.length) {2486                if (1 == Number(r[0])) {2487                    if (10 <= Number(r[1])) return !0;2488                } else if (2 <= Number(r[0])) return !0;2489                return !1;2490            }2491            return !1;2492        }(window[s()].fn.jquery) ? srv.appendScript(a, "SRVQUERY", !1, !1, function () {2493            t.loadjQueryHandler(!0, e, r);2494        }) : (t.jQuery = window[o], t.loadHelpers(e), t.loadJSON(e, r)) : srv.appendScript(a, "SRVQUERY", !1, !1, function () {2495            t.loadjQueryHandler(!1, e, r);2496        });2497    }2498    function loadjQueryHandler(e, r, t) {2499        e ? srv.jQuery = window.jQuery.noConflict(!0) : (jQuery = window.jQuery.noConflict(!0), srv.jQuery = jQuery), this.loadHelpers(r), this.loadJSON(r, t);2500    }2501    function loadHelpers(e) {2502        var r = "https://" + srv[e].domain;2503        if (isIE) {2504            var t = r + "/assets/surveys/" + srv[e].version + "/js/jquery.xdomainrequest.min.js";2505            this.appendScript(t, "#XDOMAINHELPER#", !1, "jQuery");2506        }2507        document.documentMode < 9 && (srv.appendScript(r + "/assets/js/selectivzr.min.js", "selectivzr"), srv.appendScript(r + "/assets/js/html5shiv.min.js", "html5shiv"), srv.appendScript(r + "/assets/js/respond.min.js", "respond"), srv.appendStyle(r + "/assets/css/surveys/survey-IE8.css", "ie8style"));2508    }2509    function loadJSON(e, r) {2510        r = "function" == typeof r && r, this.appendScript(srv[e].url, "SRVvars" + e, !1, !1, r);2511    }2512    function generateHTML(e, a) {2513        var r = !1, t = current_block.properties, s = t.elements || !1, o = t.required, n = "req",2514            i = t.format ? t.format : "", l = t.placeholder ? t.placeholder : "", d = current_block.id, c = t.value,2515            u = srv.jQuery("<span>").addClass("required-mark").html("*"), v = "section_break" === e ? "h3" : "legend",2516            p = "section_break" === e ? "section-title" : "block-title";2517        if (current_block.tooltip) {2518            r = srv.jQuery("<a>").addClass("tooltip").attr("href", "#").css(touch_css).html(' <i class="fa fa-question"></i> <span>' + current_block.tooltip + "</span>");2519            p += " has-tooltip";2520        }2521        var f = srv.jQuery("<" + v + ">").addClass(p).html(current_block.title).append(r);2522        if (o && f.append(u), $block = srv.jQuery("<div>").attr("id", d).addClass("control-group question").append(f), "input" === e) X = srv.jQuery("<input>").attr("id", e + "_" + d).attr("type", "text").addClass(i).prop("placeholder", l).css(touch_css).val(c), o && X.addClass(n), iOSTest("fixed_positioning") && X.on("focus", function (e) {2523            srv[a].outer_modal || srv.callParentWindow({fn: '(function(){ srv.jQuery("[data-key=' + a + ']").closest(".surveyWindowWrap").css({top:srv.jQuery(document).scrollTop(),bottom:"auto"}) })'});2524        }).on("blur", function (e) {2525            srv[a].outer_modal || srv.callParentWindow({fn: '(function(){ srv.jQuery("[data-key=' + a + ']").closest(".surveyWindowWrap").css({position:"fixed",top:0,bottom:0}); setTimeout(function() { srv.resizeForm({update:true}); },100); })'});2526        }), iOSTest("scroll_on_input") && X.on("focus", function (e) {2527            if (!srv[a].outer_modal) {2528                var r = "slide" == srv[a].slider.type ? 'srv.jQuery("[data-key=' + a + ']").closest(".surveySliderScroller")' : 'srv.jQuery("[data-key=' + a + ']").closest(".surveyWindowWrap")';2529                setTimeout(function () {2530                    srv.callParentWindow({fn: "(function() { srv.scrollPos = " + r + '.scrollTop(); srv.jQuery(window).on("scroll.fix_scroll", function() { srv.scrollTop = ' + r + ".scrollTop() }); })"});2531                });2532            }2533        }).on("input", function (e) {2534            if (!srv[a].outer_modal) {2535                var r = "slide" == srv[a].slider.type ? 'srv.jQuery("[data-key=' + a + ']").closest(".surveySliderScroller")' : 'srv.jQuery("[data-key=' + a + ']").closest(".surveyWindowWrap")';2536                srv.callParentWindow({fn: "(function() { " + r + ".scrollTop(srv.scrollPos) })"});2537            }2538        }).on("blur", function () {2539            srv[a].outer_modal || srv.callParentWindow({fn: '(function() { srv.jQuery(window).off("scroll.fix_scroll") })'});2540        }), $block.append(X); else if ("textarea" === e) X = srv.jQuery("<textarea>").attr("id", e + "_" + d).addClass(i).prop("placeholder", l).css(touch_css).html(c), iOSTest("fixed_positioning") && X.on("focus", function (e) {2541            srv[a].outer_modal || srv.callParentWindow({fn: '(function(){ srv.jQuery("[data-key=' + a + ']").closest(".surveyWindowWrap").css({top:srv.jQuery(document).scrollTop(),bottom:"auto"}) })'});2542        }).on("blur", function (e) {2543            srv[a].outer_modal || srv.callParentWindow({fn: '(function(){ srv.jQuery("[data-key=' + a + ']").closest(".surveyWindowWrap").css({position:"fixed",top:0,bottom:0}); setTimeout(function() { srv.resizeForm({update:true}); },100); })'});2544        }), iOSTest("scroll_on_input") && X.on("focus", function (e) {2545            if (!srv[a].outer_modal) {2546                var r = "slide" == srv[a].slider.type ? 'srv.jQuery("[data-key=' + a + ']").closest(".surveySliderScroller")' : 'srv.jQuery("[data-key=' + a + ']").closest(".surveyWindowWrap")';2547                setTimeout(function () {2548                    srv.callParentWindow({fn: "(function() { srv.scrollPos = " + r + '.scrollTop(); srv.jQuery(window).on("scroll.fix_scroll", function() { srv.scrollTop = ' + r + ".scrollTop() }); })"});2549                });2550            }2551        }).on("input", function (e) {2552            if (!srv[a].outer_modal) {2553                var r = "slide" == srv[a].slider.type ? 'srv.jQuery("[data-key=' + a + ']").closest(".surveySliderScroller")' : 'srv.jQuery("[data-key=' + a + ']").closest(".surveyWindowWrap")';2554                srv.callParentWindow({fn: "(function() { " + r + ".scrollTop(srv.scrollPos) })"});2555            }2556        }).on("blur", function () {2557            srv[a].outer_modal || srv.callParentWindow({fn: '(function() { srv.jQuery(window).off("scroll.fix_scroll") })'});2558        }), o && X.addClass(n), $block.append(X); else if ("select" === e) {2559            for (var y in X = srv.jQuery("<select>").attr("id", e + "_" + d), o && X.addClass(n), "" != l && (X.attr("data-placeholder", "true"), $placeholder = srv.jQuery("<option>").addClass("option_placeholder").attr({2560                id: "option_" + d + "_0",2561                disabled: !02562            }).prop("selected", !0).val("").css(touch_css).html(l), X.append($placeholder)), s) {2563                "function" != typeof(k = s[y]) && (Pe = srv.jQuery("<option>").attr("id", "option_" + d + "_" + y).val(k.label).css(touch_css).html(k.label), t.selected == y && Pe.prop("selected", !0), X.append(Pe));2564            }2565            (_ = void 0 !== t.setScoreCookie && t.setScoreCookie) && X.on("change", function () {2566                var e = X.parents(".control-group").attr("id");2567                srv[a].outer_modal ? srv.setCookie("MSanswer." + a + "." + e, X.find("option:selected").val(), 0, "/", void 0, !1) : srv.callParentWindow({fn: "srv.setCookie('MSanswer." + a + "." + e + "','" + X.find("option:selected").val() + "',0,'/',undefined,false )"});2568            }), $block.append(X);2569        } else if (-1 < ["checkbox", "radio", "category", "gcr"].indexOf(e)) {2570            var m = "radio" === e ? "rdo_" : "chk_", h = "category" === e || "gcr" === e ? "radio" : e,2571                _ = void 0 !== t.setScoreCookie && t.setScoreCookie;2572            if ("gcr" == e) var g = !!t.reverseScore && t.reverseScore; else g = !1;2573            var b = {}, j = !1;2574            for (var y in X = srv.jQuery("<div>"), s) {2575                var k = s[y], Q = !1, w = d + "_" + y;2576                if ("function" != typeof k) {2577                    if (k.icon) Q = srv.jQuery("<i>").addClass(k.icon);2578                    var C = k.value || k.label,2579                        S = srv.jQuery("<input>").attr("type", h).attr("id", e + "_" + w).attr("name", e + "Group_" + d).on("click", function () {2580                            srv.setValue(this, e + "_" + d, "radio" !== h);2581                        }).css(touch_css).val(C);2582                    isActive(y, current_block) && (S.prop("checked", "checked"), b[m + y] = k.label, 0, j = !0);2583                    var x = srv.jQuery("<label>").attr("id", "label_" + w).attr("for", e + "_" + w).addClass(e + " inline").append(Q).css(touch_css).append(" " + k.label),2584                        T = srv.jQuery("<div>").addClass(e + "-wrapper").append(S).append(x);2585                    1 == t.show_as_buttons && (T.addClass("button"), X.addClass("button-container")), X.append(T);2586                }2587            }2588            var M = j ? JSON.stringify(b) : "";2589            I = srv.jQuery("<input>").attr("type", "hidden").attr("id", e + "_" + d).on("blur", function () {2590                showError(srv.jQuery(this), __MS.validateField(this));2591            }).val(M), o && I.addClass(n), _ && I.on("change", function () {2592                var e = I.parents(".control-group").attr("id");2593                srv[a].outer_modal ? srv.setCookie("MSanswer." + a + "." + e, I.val(), 0, "/", void 0, !1) : srv.callParentWindow({fn: "srv.setCookie('MSanswer." + a + "." + e + "','" + I.val() + "',0,'/',undefined,false )"});2594            }), $block.addClass("clearfix").append(X).append(I).append('<p class="clearfix"></p>'), "gcr" == e && g && setTimeout(function () {2595                var e = jQuery("#gcr_" + d + "_1").parent(), r = jQuery("#gcr_" + d + "_2").parent(),2596                    t = jQuery("#gcr_" + d + "_3").parent();2597                r.insertBefore(e), t.insertBefore(r);2598            });2599        } else if ("thumbs" === e) {2600            X = srv.jQuery("<div>").addClass("button-container thumbs-container");2601            var E = "", P = "";2602            for (var y in s) {2603                var $ = getPreselectValue("thumbs", a);2604                (Z = t.preselectScore && $ && $ == s[y].value) && (E = s[y].value, P = d);2605                var N = srv.jQuery("<div>").addClass("thumbs-wrapper button"),2606                    O = srv.jQuery("<input>").attr("type", "radio").attr("id", "thumbs_" + d + "_" + y).attr("name", "thumbsGroup_" + d).attr("value", s[y].value).on("click", function () {2607                        srv.setValue(this, e + "_" + d);2608                    }).prop("checked", Z),2609                    W = srv.jQuery("<label>").addClass("label_thumbs_" + s[y].value).attr("id", "label_thumbs_" + d + "_" + y).attr("for", "thumbs_" + d + "_" + y).css(touch_css).html('<i class="fa ' + s[y].icon + '" aria-hidden="true"></i>');2610                s[y].label && t.labelsAsValue && W.append('<span class="thumbs_lbl_' + y + '">' + s[y].label + "</span>"), N.append(O, W), X.append(N);2611            }2612            if (I = srv.jQuery("<input>").attr("type", "hidden").attr("id", e + "_" + d).on("blur", function () {2613                showError(srv.jQuery(this), __MS.validateField(this));2614            }), (_ = void 0 !== t.setScoreCookie && t.setScoreCookie) && I.on("change", function () {2615                var e = I.parents(".control-group").attr("id");2616                srv[a].outer_modal ? srv.setCookie("MSanswer." + a + "." + e, I.val(), 0, "/", void 0, !1) : srv.callParentWindow({fn: "srv.setCookie('MSanswer." + a + "." + e + "','" + I.val() + "',0,'/',undefined,false )"});2617            }), "" !== E) {2618                I.val(E);2619                var L = !!sessionStorage.getItem("emailscore");2620                srv.jQuery(document).one("mopinion_ready", function (e) {2621                    e.detail.key === a && setTimeout(function () {2622                        jQuery("#thumbs_" + P).trigger("change"), L || (srv.send(!1, a), sessionStorage.setItem("emailscore", !0));2623                    }, 500);2624                });2625            }2626            o && I.addClass(n), $block.append(X).append(I);2627        } else if ("rating" === e) {2628            var A = srv.jQuery("<div>").addClass("choice-row"),2629                I = srv.jQuery("<input>").attr("type", "hidden").attr("id", "rating_" + d);2630            (_ = void 0 !== t.setScoreCookie && t.setScoreCookie) && I.on("change", function () {2631                var e = I.parents(".control-group").attr("id");2632                srv[a].outer_modal ? setCookie("MSanswer." + a + "." + e, I.val(), "session", "/", void 0, !1) : srv.callParentWindow({fn: "srv.setCookie('MSanswer." + a + "." + e + "','" + I.val() + "','session','/',undefined,false )"});2633            });2634            E = "", P = "";2635            if (o && I.addClass(n), "numeric" == t.type) {2636                var F = t.includeZero ? 0 : 1;2637                for (M = t.checked && "number" == typeof t.checked[0] ? t.checked[0] : "", y = F; y < parseInt(t.scale) + 1; y++) {2638                    $ = getPreselectValue("score", a);2639                    (Z = t.preselectScore && $ && $ == y) && (E = y, P = d);2640                    w = d + "_" + y;2641                    var B = srv.jQuery("<input>").attr("type", "radio").attr("id", "rating_" + w).attr("name", "radioGroup_" + d).prop("checked", Z).on("click", function () {2642                        srv.setValue(this, e + "_" + d);2643                    }).css(touch_css).val(y);2644                    t.checked && t.checked[0] == y && B.prop("checked", !0);2645                    var q = srv.jQuery("<label>").attr("id", "label_" + w).attr("for", "rating_" + w).css(touch_css).html(y),2646                        R = srv.jQuery("<div>").addClass("rating-choice").append(B).append(q);2647                    A.append(R);2648                }2649                X = srv.jQuery("<div>").addClass("rating-group numeric").append('<span class="rating-prefix"></span>').append(A).append('<span class="rating-suffix"></span>');2650            } else if ("bar" == t.type) {2651                for (M = "", y = 1; y < 6; y++) {2652                    if (1 == y) var H = "--"; else if (2 == y) H = "-"; else if (3 == y) H = "0"; else if (4 == y) H = "+"; else if (5 == y) H = "++";2653                    w = d + "_" + y, B = srv.jQuery("<input>").attr("type", "radio").attr("id", "rating_" + w).attr("name", "radioGroup_" + d).on("click", function () {2654                        srv.setValue(this, e + "_" + d);2655                    }).css(touch_css).val(y), q = srv.jQuery("<label>").attr("id", "label_" + w).attr("for", "rating_" + w).css(touch_css).html("<span>" + H + "</span>"), R = srv.jQuery("<div>").addClass("rating-choice").append(B).append(q);2656                    A.append(R);2657                }2658                X = srv.jQuery("<div>").addClass("rating-group bar").append('<span class="rating-prefix"></span>').append(A).append('<span class="rating-suffix"></span>');2659            } else if ("emoji" == t.type) {2660                for (var V = ["angry", "sad", "neutral", "happy", "extra-happy"], D = ($ = getPreselectValue("smiley", a), 0); D < V.length; D++) {2661                    y = Number(D) + 1;2662                    (Z = t.preselectScore && $ && $ == y) && (E = y, P = d);2663                    w = d + "_" + y, B = srv.jQuery("<input>").attr("type", "radio").attr("id", "rating_" + w).prop("checked", Z).attr("name", "radioGroup_" + d).on("click", function () {2664                        srv.setValue(this, e + "_" + d);2665                    }).css(touch_css);2666                    t.labelsAsValue ? B.val(t.emoji[y].label) : B.val(y);2667                    q = srv.jQuery("<label>").attr("id", "label_" + w).attr("for", "rating_" + w).css(touch_css);2668                    if (t.showCaptions && q.attr("data-label", t.emoji[y].label), supportsSvg()) !function (r, t) {2669                        srv.jQuery.ajax({2670                            url: "https://" + srv[a].domain + "/assets/img/surveys/emoji/" + t + ".svg",2671                            type: "get",2672                            dataType: "text"2673                        }).done(function (e) {2674                            r.addClass("emoji-" + t).html(e);2675                        });2676                    }(q, V[D]); else srv[a].jQuery("<img>").attr({2677                        src: "https://" + srv[a].domain + "/assets/img/surveys/emoji/" + V[D] + ".png",2678                        height: "100%",2679                        width: "100%"2680                    }).appendTo(q);2681                    R = srv.jQuery("<div>").addClass("rating-choice").append(B).append(q);2682                    A.append(R);2683                }2684                X = srv.jQuery("<div>").addClass("rating-group emoji").append('<span class="rating-prefix"></span>').append(A).append('<span class="rating-suffix"></span>'), t.showCaptions && X.addClass("show-labels");2685            } else {2686                var z = t.checked;2687                M = "";2688                $ = getPreselectValue("score", a);2689                for (var y in s) {2690                    if ("function" != typeof(k = s[y])) {2691                        var U = t.labelsAsValue && "" !== k.label ? k.label : y;2692                        (Z = t.preselectScore && $ && $ == y) && (E = y, P = d);2693                        R = srv.jQuery("<input>").attr("type", "radio").attr("id", "Jrating").attr("name", "Jrating").prop("title", k.label).prop("checked", Z).css(touch_css).val(U);2694                        z && z[0] == y && (R.attr("checked", "checked"), M = z[0]), A.append(R);2695                    }2696                }2697                X = srv.jQuery("<div>").attr("id", "star_rating_" + d).addClass("rating-group stars").append('<span class="rating-prefix"></span>').append(A).append('<span class="rating-suffix"></span>');2698                var Y = function (e) {2699                    var r = srv.jQuery("#rating_" + d);2700                    __MS.validateField(r[0]), enableNext(e);2701                }, G = {2702                    type: "rating",2703                    block_id: d,2704                    showCaptions: !!t.showCaptions,2705                    callback: Y,2706                    callback_data: a,2707                    hidden: I2708                };2709                srv.makeStars(X, G);2710            }2711            if ("" !== E) {2712                I.val(E);2713                L = !!sessionStorage.getItem("emailscore");2714                srv.jQuery(document).one("mopinion_ready", function (e) {2715                    e.detail.key === a && setTimeout(function () {2716                        "stars" == t.type && srv.jQuery("#star_rating_" + d).find('.ui-stars-star[data-value="' + E + '"]').click();2717                        jQuery("#rating_" + P).trigger("change"), L || (srv.send(!1, a), sessionStorage.setItem("emailscore", !0));2718                    }, 500);2719                });2720            } else M && I.val(M);2721            $block.append(I).append(X);2722        } else if ("nps" === e) {2723            M = "";2724            var J = srv.jQuery("<div>").addClass("choice-row");2725            E = "", P = "", g = !!t.reverseScore && t.reverseScore, _ = void 0 !== t.setScoreCookie && t.setScoreCookie;2726            if (g) for (y = 10; 0 <= y; y--) {2727                $ = getPreselectValue("nps", a);2728                (Z = t.preselectScore && $ && $ == y) && (E = y, P = d);2729                w = d + "_" + y, S = srv.jQuery("<input>").attr("type", "radio").attr("id", "nps_" + w).attr("name", "radioGroup_" + d).prop("checked", Z).on("click", function () {2730                    srv.setValue(this, e + "_" + d);2731                }).css(touch_css).val(y);2732                isActive(y, current_block) && (S.prop("checked", "checked"), M = y);2733                x = srv.jQuery("<label>").attr("for", "nps_" + w).attr("id", "label_" + w).css(touch_css).html(y);2734                var K = srv.jQuery("<div>").addClass("nps-choice").append(S).append(x);2735                J.append(K);2736            } else for (y = 0; y < 11; y++) {2737                var Z;2738                $ = getPreselectValue("nps", a);2739                (Z = t.preselectScore && $ && $ == y) && (E = y, P = d);2740                w = d + "_" + y, S = srv.jQuery("<input>").attr("type", "radio").attr("id", "nps_" + w).attr("name", "radioGroup_" + d).prop("checked", Z).on("click", function () {2741                    srv.setValue(this, e + "_" + d);2742                }).css(touch_css).val(y);2743                isActive(y, current_block) && (S.prop("checked", "checked"), M = y);2744                x = srv.jQuery("<label>").attr("for", "nps_" + w).attr("id", "label_" + w).css(touch_css).html(y), K = srv.jQuery("<div>").addClass("nps-choice").append(S).append(x);2745                J.append(K);2746            }2747            var X = srv.jQuery("<div>").addClass("rating-group nps-group").append(J);2748            I = srv.jQuery("<input>").attr("type", "hidden").attr("id", e + "_" + d).on("click", function () {2749                showError(srv.jQuery(this), __MS.validateField(this));2750            }).val(M);2751            if (o && I.addClass(n), _ && I.on("change", function () {2752                var e = I.parents(".control-group").attr("id");2753                srv[a].outer_modal ? setCookie("MSanswer." + a + "." + e, I.val(), "session", "/", void 0, !1) : srv.callParentWindow({fn: "srv.setCookie('MSanswer." + a + "." + e + "','" + I.val() + "','session','/',undefined,false )"});2754            }), $block.append(X).append(I), "" !== E) {2755                I.val(E);2756                L = !!sessionStorage.getItem("emailscore");2757                srv.jQuery(document).one("mopinion_ready", function (e) {2758                    e.detail.key === a && setTimeout(function () {2759                        jQuery("#nps_" + P).trigger("change"), L || (srv.send(!1, a), sessionStorage.setItem("emailscore", !0));2760                    }, 500);2761                });2762            }2763        } else if ("ces" === e) {2764            z = t.checked, M = "", g = !!t.reverseScore && t.reverseScore, _ = void 0 !== t.setScoreCookie && t.setScoreCookie, A = srv.jQuery("<div>").addClass("choice-row");2765            for (var y in s) {2766                if ("function" != typeof(k = s[y])) {2767                    checked = !1, z && z[0] == y && (checked = !0, M = z[0]);2768                    R = srv.jQuery("<input>").attr("type", "radio").attr("id", "Jrating").attr("name", "Jrating").prop("title", k.label).css(touch_css).val(y);2769                    checked && R.attr("checked", checked), A.append(R);2770                }2771            }2772            Y = function (e) {2773                var r = srv.jQuery("#ces_" + d);2774                __MS.validateField(r[0]), enableNext(e);2775            };2776            X = srv.jQuery("<div>").attr("id", "ces_rating_" + d).addClass("rating-group ces").append('<span class="ces-prefix"></span>').append(A).append('<span class="ces-suffix"></span>'), I = srv.jQuery("<input>").attr("type", "hidden").attr("id", "ces_" + d).val(M), _ && I.on("change", function () {2777                var e = I.parents(".control-group").attr("id");2778                srv[a].outer_modal ? setCookie("MSanswer." + a + "." + e, I.val(), "session", "/", void 0, !1) : srv.callParentWindow({fn: "srv.setCookie('MSanswer." + a + "." + e + "','" + I.val() + "','session','/',undefined,false )"});2779            }), o && I.addClass(n);2780            G = {type: "ces", block_id: d, showCaptions: !!t.showCaptions, callback: Y, callback_data: a, hidden: I};2781            srv.makeStars(X, G), $block.append(X).append(I), g && setTimeout(function () {2782                for (y = 1; y <= 5; y++) {2783                    var e = jQuery("#ces_rating_" + d + ' div[data-value="' + y + '"]'),2784                        r = jQuery("#ces_rating_" + d + ' div[data-value="' + (y - 1) + '"]');2785                    e.insertBefore(r);2786                }2787                jQuery("#ces_rating_" + d).addClass("reversed");2788            });2789        } else if ("section_break" === e) X = srv.jQuery("<div>").attr("id", "section_description_" + d).addClass("section-description").html(t.description), $block.addClass("section").append(X); else if ("matrix" === e) {2790            var ee = t.values, re = t.weights, te = srv.jQuery("<th>").addClass("matrix-subject-label"),2791                ae = srv.jQuery("<tr>").append(te), se = srv.jQuery("<thead>").append(ae), oe = srv.jQuery("<tbody>");2792            for (var ne in ee) if ("function" != typeof ee[ne]) {2793                var ie = srv.jQuery("<th>").addClass("matrix-answer-label").html("<div><span>" + ee[ne].label + "</span></div>");2794                ae.append(ie);2795            }2796            for (var le in ae.append('<th class="matrix-spacer"></th>'), re) if ("function" != typeof re[le]) {2797                var de = srv.jQuery("<th>").addClass("matrix-answer-label").html("<div><span>" + re[le].label + "</span></div>");2798                ae.append(de);2799            }2800            for (var y in s) {2801                if ("function" != typeof(k = s[y])) {2802                    var ce = srv.jQuery("<td>").addClass("matrix-subject").html(k.label);2803                    je = srv.jQuery("<tr>").append(ce);2804                    I = srv.jQuery("<input>").attr("type", "hidden").attr("id", "matrix_" + d + "_" + y).on("blur", function () {2805                        showError(srv.jQuery(this), __MS.validateField(this));2806                    });2807                    for (var ne in o && I.addClass(n), ee) if ("function" != typeof ee[ne]) {2808                        var ue = srv.jQuery("<input>").attr("type", "radio").attr("name", "matrix_" + d + "_" + y + "_value").attr("id", "matrix_" + d + "_" + y + "_value_" + ne).attr("title", ee[ne].label).on("click", function () {2809                                setMatrix(this);2810                            }).css(touch_css).val(ee[ne].label),2811                            ve = srv.jQuery("<label>").attr("for", "matrix_" + d + "_" + y + "_value_" + ne).css(touch_css),2812                            pe = srv.jQuery("<div>").addClass("matrix-answer-inner").append(ue).append(ve),2813                            fe = srv.jQuery("<td>").addClass("matrix-answer").attr("data-label", ee[ne].label).append(pe);2814                        je.append(fe);2815                    }2816                    for (var le in je.append('<td class="matrix-spacer"></td>'), re) if ("function" != typeof re[le]) {2817                        var ye = srv.jQuery("<input>").attr("type", "radio").attr("name", "matrix_" + d + "_" + y + "_weight").attr("id", "matrix_" + d + "_" + y + "_weight_" + le).attr("title", re[le].label).on("click", function () {2818                                setMatrix(this);2819                            }).css(touch_css).val(re[le].label),2820                            me = srv.jQuery("<label>").attr("for", "matrix_" + d + "_" + y + "_weight_" + le).css(touch_css),2821                            he = srv.jQuery("<div>").addClass("matrix-answer-inner").append(ye).append(me),2822                            _e = srv.jQuery("<td>").addClass("matrix-answer").attr("data-label", re[le].label).append(he);2823                        je.append(_e);2824                    }2825                    je.append(I), oe.append(je);2826                }2827            }2828            X = srv.jQuery("<div>").attr("id", "matrix_" + d).addClass("matrix-group");2829            var ge = srv.jQuery("<table>").addClass("table table-striped matrix-table").append(se).append(oe);2830            X.append(ge), $block.append(X);2831        } else if ("likert" === e) {2832            ee = t.values, te = srv.jQuery("<th>").addClass("likert-subject-label"), ae = srv.jQuery("<tr>").append(te), se = srv.jQuery("<thead>").append(ae), oe = srv.jQuery("<tbody>");2833            for (var ne in ee) if ("function" != typeof ee[ne]) {2834                var be = srv.jQuery("<th>").addClass("likert-answer-label").html("<div><span>" + ee[ne].label + "</span></div>");2835                ae.append(be);2836            }2837            for (var y in s) {2838                if ("function" != typeof(k = s[y])) {2839                    ce = srv.jQuery("<td>").addClass("likert-subject").html(k.label), I = srv.jQuery("<input>").attr("type", "hidden").attr("id", "likert_" + d + "_" + y).on("blur", function () {2840                        showError(srv.jQuery(this), __MS.validateField(this));2841                    });2842                    o && I.addClass(n);2843                    var je = srv.jQuery("<tr>").append(ce);2844                    for (var ne in ee) {2845                        C = ee[ne];2846                        var ke = srv.jQuery("<input>").attr("type", "radio").attr("name", "likert_" + d + "_" + y).attr("id", "likert_" + d + "_" + y + "_rdo_" + ne).attr("title", C.label).on("click", function () {2847                                setLikert(this);2848                            }).css(touch_css).val(C.label),2849                            Qe = srv.jQuery("<label>").attr("for", "likert_" + d + "_" + y + "_rdo_" + ne).css(touch_css),2850                            we = srv.jQuery("<div>").addClass("likert-answer-inner").append(ke).append(Qe);2851                        $cell = srv.jQuery("<td>").addClass("likert-answer").attr("data-label", C.label).append(we), je.append($cell);2852                    }2853                    je.append(I), oe.append(je);2854                }2855            }2856            X = srv.jQuery("<div>").attr("id", "likert_" + d).addClass("likert-group"), ge = srv.jQuery("<table>").addClass("table table-striped likert-table").append(se).append(oe);2857            X.append(ge), $block.append(X);2858        } else if ("contact" === e) {2859            var Ce = srv.jQuery("<div>").addClass("contact-wrapper");2860            if (s.name.show) {2861                var Se = srv.jQuery("<div>").addClass("name-wrapper");2862                if (s.title.show) {2863                    var xe = srv.jQuery("<select>").attr("id", "contact_" + d + "_title").attr("data-contact", !0).addClass("span2").css(touch_css),2864                        Te = Object.keys(s.title.options)[0];2865                    for (var Me in"" !== s.title.options[Te] && (s.title.options[0] = ""), s.title.required && (xe.addClass(n), f.append(u)), s.title.options) {2866                        var Ee = s.title.options[Me], Pe = srv.jQuery("<option>").val(Ee).html(Ee);2867                        xe.append(Pe);2868                    }2869                    xe = srv.jQuery("<div>").addClass("title").append(xe);2870                    Se.append(xe);2871                }2872                if (s.name.combine) name_placeholder = s.name.placeholder || ""; else {2873                    var $e = srv.jQuery("<input>").attr("id", "contact_" + d + "_firstname").attr("data-contact", !0).attr("type", "text").attr("placeholder", s.name.subelements.firstname.placeholder || "").css(touch_css);2874                    s.name.required && $e.addClass(n), $e = srv.jQuery("<div>").append($e), Se.append($e), name_placeholder = s.name.subelements.lastname.placeholder || "";2875                }2876                var Ne = srv.jQuery("<input>").attr("id", "contact_" + d + "_name").attr("data-contact", !0).attr("type", "text").attr("placeholder", name_placeholder).css(touch_css);2877                s.name.required && (Ne.addClass(n), f.append(u)), Ne = srv.jQuery("<div>").append(Ne), Se.append(Ne);2878            }2879            if (s.email.show) {2880                var Oe = srv.jQuery("<input>").attr("id", "contact_" + d + "_email").attr("type", "text").attr("data-contact", !0).attr("placeholder", s.email.placeholder || "").addClass("email").css(touch_css);2881                s.email.required && Oe.addClass(n), Oe = srv.jQuery("<div>").append(Oe);2882                var We = srv.jQuery("<div>").addClass("email-wrapper").append(Oe);2883            }2884            if (s.phone.show) {2885                var Le = srv.jQuery("<input>").attr("id", "contact_" + d + "_phone").attr("type", "text").attr("data-contact", !0).attr("placeholder", s.phone.placeholder || "").addClass("phone").css(touch_css);2886                if (s.phone.required && Le.addClass(n), s.phone2.show) {2887                    var Ae = srv.jQuery("<input>").attr("id", "contact_" + d + "_phone2").attr("type", "text").attr("data-contact", !0).attr("placeholder", s.phone2.placeholder || "").addClass("phone").css(touch_css);2888                    s.phone2.required && Ae.addClass(n), Ae = srv.jQuery("<div>").append(Ae);2889                }2890                Le = srv.jQuery("<div>").append(Le);2891                var Ie = srv.jQuery("<div>").addClass("phone-wrapper").append(Le).append(Ae);2892            }2893            Ce.append(Se).append(We).append(Ie), $block.append(Ce);2894        } else if ("screenshot" === e) {2895            X = jQuery("<div>").attr("id", "screenshot_element_" + d).addClass("section-screenshot").html('<i class="fa fa-camera"></i>').on("click", function (e) {2896                e.preventDefault();2897                var r = srv[a].block_params[d].properties.hasOwnProperty("maskedSelectors") ? srv[a].block_params[d].properties.maskedSelectors : [];2898                srv[a].outer_modal ? setTimeout(function () {2899                    srv.initCapture({embedded: !0, block_id: d, key: a, maskSelectors: r});2900                }) : setTimeout(function () {2901                    srv.callParentWindow({2902                        fn: "srv.initCapture",2903                        data: {block_id: d, supportsPointerEvents: supportsPointerEvents(), key: a, maskedSelectors: r}2904                    });2905                });2906            });2907            srv.jQuery("<div>").addClass("remove-capture").html('<i class="fa fa-times"></i>').appendTo(X), srv.jQuery("<div>").addClass("detect-capture").html('<i class="fa fa-check"></i>').appendTo(X);2908            $block.addClass("section").append(X), 1 == t.bottomScreen && ($block.addClass("absolute"), r && X.addClass("tooltip").append('<span class="tooltip">' + current_block.tooltip + "</span>"), o && X.append(u));2909            srv.jQuery("<input>").attr({2910                type: "hidden",2911                id: "dom_" + d2912            }).prependTo($block), srv.jQuery("<input>").attr({type: "hidden", id: "selector_" + d}).prependTo($block);2913            var Fe = srv.jQuery("<input>").attr({type: "hidden", id: "screenshot_" + d}).on("blur", function () {2914                showError(srv.jQuery(this), __MS.validateField(this));2915            }).prependTo($block);2916            o && Fe.addClass(n);2917        } else if ("link" === e) {2918            var Be = current_block.properties.hyperlinkhref || "", qe = current_block.properties.hyperlinktext || "";2919            if (current_block.properties.show_as_buttons) var Re = "btn"; else Re = "";2920            if (Be.indexOf("http://") < 0 && Be.indexOf("https://") < 0) var He = current_block.properties.hyperlinkprotocol || ""; else He = "";2921            if ("link" == current_block.properties.linktype) qe = qe.replace("/*", '<a href="' + He + Be + '" class="' + Re + '" target="_blank">').replace("*/", "</a>"); else if ("function" == current_block.properties.linktype) {2922                var Ve = current_block.properties.linktype_function;2923                qe = "close_modal" == Ve ? qe.replace("/*", "<a href='javascript:;' onclick='srv.callParentWindow({fn:\"srv.closeModal\",data:\"" + a + "\"})' class='" + Re + "' >").replace("*/", "</a>") : "close_embedded" == Ve ? qe.replace("/*", "<a href='javascript:;' onclick=\"srv.jQuery('.close_custom_bg').click();\" class='" + Re + "' >").replace("*/", "</a>") : "next_page" == Ve ? qe.replace("/*", "<a href='javascript:;' onclick='srv.nextPage(false,\"" + a + "\")' class='" + Re + "' >").replace("*/", "</a>") : "prev_page" == Ve ? qe.replace("/*", "<a href='javascript:;' onclick='srv.prevPage(false,\"" + a + "\")' class='" + Re + "' >").replace("*/", "</a>") : qe.replace("/*", '<span data-attr="unknown function"').replace("*/", "</span>");2924            } else qe = qe.replace("/*", '<a href="' + He + Be + '" class="' + Re + '" target="_blank">').replace("*/", "</a>");2925            X = srv.jQuery("<div>").attr("id", "link_" + d).addClass("link_block").append(qe), "link" == current_block.properties.linktype && X.on("click", function () {2926                srv.callParentWindow({2927                    fn: "srv.triggerEvent",2928                    data: {event: "redirect", key: a, formName: srv[a].survey_properties.name, url: He + Be}2929                });2930            }), $block.append(X);2931        } else if ("website_data" === e) {2932            for (var y in s) {2933                var De = s[y], ze = e + "_" + De.type + "_" + d + "_" + y;2934                ze = ze.replace(/\W/g, "");2935                srv.jQuery("<input>").attr({type: "hidden", id: ze, name: ze}).appendTo($block);2936                if (srv[a].outer_modal || PUBLIC_LANDING) fetchVariable({2937                    type: De.type,2938                    value: De.value,2939                    hidden_id: ze,2940                    embedded: !0,2941                    key: a2942                }); else {2943                    var Ue = {type: De.type, value: encodeURIComponent(De.value), hidden_id: ze, key: a};2944                    Ue = JSON.stringify(Ue), srv.callParentWindow({fn: "srv.fetchVariable", data: Ue});2945                }2946            }2947            $block.css("display", "none");2948        } else $block = srv.jQuery("<div>").html("[unknown type]");2949        return $block;2950    }2951    function buildForm(l) {2952        var e = srv[l].error_messages, r = srv[l].survey_text;2953        e.deflt = r.deflt ? r.deflt : "Something went wrong", e.required = r.required ? r.required : "This field is required", e.required_multi = r.required_multi ? r.required_multi : "All fields are required", e.invalid_number = r.invalid_number ? r.invalid_number : "This is not a valid number", e.invalid_phone = r.invalid_phone ? r.invalid_phone : "This is not a valid phone number", e.invalid_email = r.invalid_email ? r.invalid_email : "This is not a valid email address", e.too_short = r.too_short ? r.too_short : "The answer is too short", e.too_long = r.too_long ? r.too_long : "The answer is too long", themeClass = srv[l].theme_class || "", srv.jQuery(document).one("touchstart", function () {2954            user_touching = !0;2955        }), supportsPointerEvents(!0);2956        var t = srv.jQuery("#" + this[l].div_name);2957        if (t.addClass("mopinion-survey-content"), !srv[l].outer_modal || !t.find('[data-key="' + l + '"]').length) {2958            var a = !1;2959            if (void 0 !== srv[l].survey_properties) {2960                var s = !1, o = !1, d = !1, n = srv.jQuery("<div>").attr("id", "lastPage").addClass("last-page").css({2961                        "min-height": "100px",2962                        display: "none"2963                    }).html(srv[l].survey_properties.exit_content),2964                    i = srv.jQuery("<div>").addClass("completed-anim").append('<i class="fa fa-check"></i>');2965                n.prepend(i);2966                var c = srv.jQuery("<div>");2967                if (!this[l].outer_modal) {2968                    s = srv.jQuery("<div>").attr("id", "surveyHead"), o = srv.jQuery("<div>").attr("id", "surveyFoot");2969                    if (srv[l].survey_properties.footer && o.html("<p>" + srv[l].survey_properties.footer + "</p>"), "" != srv[l].survey_properties.logo) var u = srv.jQuery("<img>").attr("id", "customerLogo").attr("src", srv[l].survey_properties.logo);2970                    var v = srv.jQuery("<div>").attr("id", "surveyTitle").addClass("srv-title main-title").html("<h1>" + srv[l].survey_properties.title + "</h1>");2971                    s.append(u).append(v);2972                }2973                $page = srv.jQuery("<div>").attr("id", "page1"), srv.jQuery(srv[l].block_layout).each(function (e, r) {2974                    if (current_block = srv[l].block_params[r], "object" == typeof current_block) {2975                        if ("page_break" !== current_block.typeName) 1 == current_block.properties.bottomScreen ? (d = jQuery(srv.generateHTML(current_block.typeName, l)), current_block.properties.hide_on_init && srv[l].hide_on_init.push(current_block.typeName + "_" + current_block.id)) : ($block = jQuery(srv.generateHTML(current_block.typeName, l)), current_block.properties.hide_on_init && srv[l].hide_on_init.push(current_block.typeName + "_" + current_block.id), $page.append($block)); else {2976                            srv[l].page_count++;2977                            var t = current_block.properties,2978                                a = srv[l].survey_properties.advanced.hideSubNavigation ? "none" : "inline-block",2979                                s = srv.jQuery("<div>").addClass("form-actions");2980                            if (s.append("<span>" + current_block.title + "</span>"), 1 != t.isFirst && "" !== srv.jQuery.trim(t.prevLabel) && (_ = srv.jQuery("<button>").attr({2981                                id: "btn_prev_" + current_block.id,2982                                style: "display:" + a2983                            }).addClass("btn btn-previous pull-left").on("click", function () {2984                                srv.prevPage(!1, l);2985                            }).css(touch_css).html(t.prevLabel), s.append(_)), $next_btn = srv.jQuery("<button>").attr({2986                                id: "btn_next_" + current_block.id,2987                                style: "display:" + a2988                            }).addClass("btn btn-next pull-right").on("click", function () {2989                                srv.nextPage(!1, l);2990                            }).css(touch_css).html(t.nextLabel), void 0 !== t.isAction && 1 == t.isAction && $next_btn.addClass("btn-primary btn-submit"), t.autopost) {2991                                var o, n = $page[0].children.length, i = $page[0].children[n - 1].childNodes;2992                                for (e = 0; e < i.length; e++) ("hidden" == (o = i[e]).type && null === o.id.match(/checkbox/gi) || null !== o.id.match(/select/gi)) && (s.addClass("autopost"), $node = srv.jQuery(o), $node.on("change.autopost", function () {2993                                    srv.nextPage(!1, l);2994                                    var e = srv[l].current_page, r = srv[l].current_page - 1;2995                                    jQuery("#page" + r + " .form-actions").removeClass("autopost"), jQuery(this).off("change.autopost"), setTimeout(function () {2996                                        0 !== jQuery(".alert.alert-danger").length && jQuery("#page" + e + " .form-actions").removeClass("autopost");2997                                    });2998                                }));2999                            }3000                            s.append($next_btn), $page.append(s), c.append($page), $page = srv.jQuery("<div>").attr("id", "page" + srv[l].page_count).addClass("page-break").css("display", "none");3001                        }3002                        updateQuestionCount(current_block, l);3003                    }3004                });3005                var p = this.getLanguage("btnSubmitText", l),3006                    f = srv[l].survey_properties.advanced.hideNavigation ? "none" : "inline-block",3007                    y = srv.jQuery("<button>").attr({3008                        id: "surveySubmitBtn",3009                        style: "display:" + f3010                    }).addClass("btn btn-primary btn-submit pull-right").on("click", function () {3011                        srv.submitSurvey(l);3012                    }).css(touch_css).html(p), m = srv.jQuery("<div>").addClass("form-actions");3013                if (1 < this[l].page_count) {3014                    var h = this.getLanguage("btnLastBackText", l),3015                        _ = srv.jQuery("<button>").addClass("btn btn-previous").attr("style", "display:" + f).on("click", function () {3016                            srv.prevPage(!1, l);3017                        }).html(h);3018                    m.append(_);3019                }3020                if (m.append(y), $page.append(m), c.append($page), this[l].survey_properties.advanced.showProgressbar) {3021                    var g = srv.jQuery("<div>").attr("id", "progress").addClass("progress");3022                    if (this[l].survey_properties.advanced.toggleDotview) {3023                        g.addClass("dot-layout");3024                        for (var b = this[l].page_count, j = 1; j <= b; j++) {3025                            var k = 1 == j ? " active" : "", Q = j == b ? " last" : "", w = 100 / (b - 1),3026                                C = jQuery("<div>").addClass("progress-dot").text(j);3027                            jQuery("<div>").addClass("progress-wrap" + k + Q).css("width", w + "%").attr("data-pagecount", j).append(C).appendTo(g);3028                        }3029                        jQuery('.progress_dot[data-pagecount="1"]').addClass("active");3030                    } else g.addClass("bar-layout").append('<div id="progressBar" class="bar" style="width: 0%;"></div>');3031                }3032                var S = srv.jQuery("<div>").append(s).append(g).append(c).append(n).append(o).css("opacity", "0");3033                srv[l].outer_modal ? S.addClass("is-embed") : "slide" == srv[l].slider.type ? S.addClass("mopinion-slide") : S.addClass("is-modal"), S.attr("data-key", l).addClass("mopinion-survey-output " + themeClass), d && S.append(d), srv[l].initBlockRules(), srv[l].initSurveyRules(), srv[l].outer_modal || resizeListener("surveyContent", l), a = !0;3034            } else if (this[l].outer_modal) {3035                if ("slide" !== srv[l].slider.type && srv[l].show_button && (S = srv.showButton(l)), isPreview && (srv.jQuery("#surveyPreviewButtonValue").html(!srv[l].button || srv[l].button.hide ? "Yes" : "No"), !srv[l].button || srv[l].button.hide)) {3036                    var x = srv.jQuery("<button>").addClass("force-modal-btn").html("Force open").css(touch_css).on("click", function () {3037                        srv.openModal(!0, !1);3038                    });3039                    srv.jQuery("#surveyPreviewButtonValue").append(x);3040                }3041            } else S = srv.jQuery("<div>").addClass("alert alert-error").html("Error loading survey");3042            for (var T in t.append(S), srv[l].survey_text.errors) srv[l].error_messages[T] = srv[l].survey_text.errors[T];3043            for (var j in srv.jQuery("input[type=text], textarea").keyup(function () {3044                enableNext(l);3045            }), srv.jQuery("input[type=checkbox], input[type=radio]").click(function () {3046                enableNext(l);3047            }), srv.jQuery("input[type=text], textarea").blur(function () {3048                showError(srv.jQuery(this), __MS.validateField(this));3049            }), srv.jQuery("select").change(function () {3050                showError(srv.jQuery(this), __MS.validateField(this)), enableNext(l);3051            }), void 0 !== srv[l].survey_properties && "disable" == srv[l].survey_properties.advanced.next_button_behaviour ? srv.jQuery(".btn-next, #surveySubmitBtn").prop("disabled", !0) : void 0 !== srv[l].survey_properties && "hide" == srv[l].survey_properties.advanced.next_button_behaviour && srv.jQuery(".btn-next, #surveySubmitBtn").hide(), srv[l].hide_on_init) hideBlock(srv[l].hide_on_init[j], !1, !1, l);3052            if (initPostMessage(l), srv.getMeta({key: l}), isPreview && "-" == srv.jQuery("#surveyPreviewMessageContent").html() && srv.jQuery("#surveyPreviewMessageContent").html("All good!"), srv[l].outer_modal || __MS.hammerTime(), t.find("select").length) {3053                var M = t.find("select");3054                srv.niceSelect(M, !1, l), M.each(function (e, r) {3055                    srv.jQuery(r);3056                });3057            }3058            if (setTimeout(function () {3059                enableNext(l);3060            }, 500), S && setTimeout(function () {3061                S.animate({opacity: 1}, {3062                    duration: 225, display: "block", complete: function () {3063                        srv.jQuery("#branding").addClass("anim").attr("style", "display:block!important;text-align:center;");3064                    }3065                });3066            }), srv[l].is_loading = !1, "slide" === srv[l].slider.type && (srv[l].outer_modal && srv.preloadSlider(l, !1), srv[l].outer_modal || t.closest("#surveyBody").addClass("mopinion-slide")), a && srv[l].outer_modal) {3067                EventInitializer("form_loaded");3068                var E = "";3069                try {3070                    E = srv[l].survey_properties.name;3071                } catch (T) {3072                }3073                srv.triggerEvent({event: "loaded", key: l, formName: E}), srv.triggerEvent({3074                    event: "ready",3075                    key: l,3076                    formName: E3077                });3078            } else if (a && !srv[l].outer_modal) {3079                E = "";3080                try {3081                    E = srv[l].survey_properties.name;3082                } catch (T) {3083                }3084                srv.triggerEvent({event: "ready", key: l, formName: E}), srv.callParentWindow({3085                    fn: "srv.triggerEvent",3086                    data: {event: "ready", key: l, formName: E}3087                });3088            }3089            if (!srv[l].outer_modal && void 0 !== srv[l].survey_properties && srv[l].survey_properties.advanced.hasOwnProperty("analytics_integration") && setTimeout(function () {3090                addAnalytics(srv[l].survey_properties.advanced.analytics_integration, l);3091            }, 500), PUBLIC_LANDING) landingIframe(!!srv[l].survey_properties.advanced.enableCustomBackground, !!srv[l].survey_properties.advanced.landingspageTransparency, srv[l].survey_properties.advanced.landingspageTheme ? srv[l].survey_properties.advanced.landingspageTheme : "dark", !!srv[l].survey_properties.advanced.landingspageClose && srv[l].survey_properties.advanced.landingspageClose);3092        }3093    }3094    function EventHandler(e, r) {3095        srv.eventsHandlers[e].push(r);3096    }3097    function EventInitializer(e) {3098        for (var r in srv.eventsHandlers[e]) {3099            var t = srv.eventsHandlers[e][r];3100            "function" == typeof t && setTimeout(t, 350);3101        }3102    }3103    function triggerEvent(e) {3104        var r = e.element || document;3105        if ("function" == typeof CustomEvent) {3106            var t = new CustomEvent("mopinion_" + e.event, {bubbles: !1, detail: e});3107            r.dispatchEvent(t);3108        } else {3109            (t = document.createEvent("CustomEvent")).initCustomEvent("mopinion_" + e.event, !1, !1, e), r.dispatchEvent(t);3110        }3111    }3112    function landingIframe(e, r, t, a) {3113        var s = getParameterByName("mail_url", LOCATION_REF);3114        if (s && e && (null !== s.match(/^https?:\/\/[a-zA-Z0-9]+\.[a-zA-Z]+/gi) || null !== s.match(/^https?:\/\/www\.[a-zA-Z0-9]+\.[a-zA-Z]+/gi) || null !== s.match(/^https?:\/\/[a-zA-Z]+\.[a-zA-Z0-9]+\.[a-zA-Z]+/gi))) {3115            var o = jQuery("<iframe>").attr({src: s, id: "mailUrl"}).addClass("bg__mailing_Iframe"),3116                n = jQuery("<a>").addClass("close_custom_bg").addClass(t).attr({href: "javascript:;"}).on("click", function () {3117                    jQuery("#surveyWrap").remove(), jQuery(this).remove(), jQuery("#mailUrl").css("z-index", "1001"), jQuery("html,body").css("overflow", "hidden"), jQuery("#publicSurveyBody").removeClass("dark light transparent");3118                });3119            if (a) jQuery("<span>").addClass("close_custom_bg_lbl").addClass(t).html(a).appendTo(n);3120            jQuery("#publicSurveyBody").addClass("customBackground").addClass(t).append(o, n), r && jQuery("#publicSurveyBody").addClass("transparent");3121        } else s && e && window.console && console.log("The given url seems to be incorrect: " + s);3122    }3123    function appendScript(e, r, t, a, s) {3124        var o = document.getElementsByTagName("head")[0], n = document.getElementById(r);3125        n && o.removeChild(n);3126        var i = document.createElement("script");3127        if (i.type = "text/javascript", i.id = r, i.src = e, t) for (var l in t) i[l] = t[l];3128        if (a) var d = window.setInterval(function () {3129            srv.log("waiting for " + a + " to load"), "function" == typeof window[a] && (srv.log(a + " loaded"), !0, window.clearInterval(d), o.appendChild(i));3130        }, 10); else o.appendChild(i);3131        if ("function" == typeof s) {3132            var c = !1;3133            i.onload = i.onreadystatechange = function () {3134                if (!(c || this.readyState && "loaded" !== this.readyState && "complete" !== this.readyState)) {3135                    c = !0;3136                    try {3137                        s();3138                    } catch (e) {3139                    }3140                }3141            };3142        }3143    }3144    function appendStyle(e, r) {3145        var t = document.getElementsByTagName("head")[0];3146        if (!document.getElementById(r)) {3147            var a = document.createElement("link");3148            a.type = "text/css", a.rel = "stylesheet", a.id = r, a.href = e, t.appendChild(a);3149        }3150    }3151    function log(e, r, t) {3152        if (t && "log" != t) {3153            if ("warn" == t) {3154                if (this.show_log || !0 === r) try {3155                    console.warn(e);3156                } catch (e) {3157                }3158            } else if ("info" == t) {3159                if (this.show_log || !0 === r) try {3160                    console.info(e);3161                } catch (e) {3162                }3163            } else if ("error" == t) throw new Error(e);3164        } else if (this.show_log || !0 === r) try {3165            console.log(e);3166        } catch (e) {3167        }3168    }3169    function prevPage(e, r) {3170        srv.log("page_nr " + e);3171        var t = srv.jQuery('[data-key="' + r + '"]');3172        this[r].page_history[this[r].current_page] ? (srv.log("getting page from history"), this[r].prev_page = this[r].page_history[this[r].current_page]) : srv.log("natural flow"), $curr_page_div = t.find("#page" + this[r].current_page), $new_page_div = t.find("#page" + this[r].prev_page), this[r].next_page = this[r].current_page, $new_page_div.css("display", "block"), $curr_page_div.css("display", "none"), this[r].current_page = this[r].prev_page, this[r].prev_page--, updateProgress(r), updateHeader(r), scrollToSurveyElement(0, r);3173    }3174    function nextPage(e, r) {3175        if (srv[r].lock_submit) return !1;3176        var t = srv[r].page_map[this[r].current_page], a = __MS.validateAll(t, showError),3177            s = srv.jQuery('[data-key="' + r + '"]');3178        if (a) {3179            if (srv[r].form_completion_ratio = Math.round(srv[r].current_page / srv[r].page_count * 100), scroll_top = 0, this[r].prev_page = this[r].current_page, $prev_page_div = s.find("#page" + this[r].prev_page), this[r].next_page && (e = this[r].next_page, this[r].page_history[this[r].next_page] = this[r].current_page), e ? this[r].current_page = e : this[r].current_page++, -1 == e) s.find("#lastPage").css("display", "block").find(".completed-anim").addClass("do-anim"), s.find("#surveyTitle h1").text(this.getLanguage("lastPageTitle", r)), s.find("#surveyDescription").css("display", "none"), s.find("#lastPage").parent().find(".control-group").length && s.find("#lastPage").parent().find(".control-group").css("display", "none"); else {3180                s.find("#page" + this[r].current_page).css("display", "block");3181                this.send(!1, r);3182            }3183            $prev_page_div.css("display", "none"), this[r].next_page = !1;3184        } else srv.log(srv[r].error_messages.deflt, !1, "warn"), first_error = srv.jQuery("#" + __MS.errors[0]).parent(), scroll_top = first_error.offset().top;3185        updateProgress(r), updateHeader(r), scrollToSurveyElement(scroll_top, r), enableNext(r);3186    }3187    function updateQuestionCount(e, r) {3188        "matrix" == e.typeName || "likert" == e.typeName ? srv[r].question_count = srv[r].question_count + Object.keys(e.properties.elements).length : "section_break" != e.typeName && "page_break" != e.typeName && srv[r].question_count++;3189    }3190    function updateHeader(e) {3191        var r = srv.jQuery('[data-key="' + e + '"]');3192        1 < srv[e].current_page || srv[e].current_page < 0 ? r.find("#surveyDescription").css("display", "none") : (r.find("#surveyTitle").css("display", "block"), r.find("#surveyDescription").css("display", "block"));3193    }3194    function updateProgress(e) {3195        if (srv[e].outer_modal || srv.jQuery("html").removeClass(function (e, r) {3196            return (r.match(/(^|\s)mopinion-onpage-\S+/g) || []).join(" ");3197        }).addClass("mopinion-onpage-" + (-1 == srv[e].current_page ? "last" : srv[e].current_page)), -1 == srv[e].current_page) 100, srv.jQuery("#progress").remove(); else if (srv[e].survey_properties.advanced.toggleDotview) srv.jQuery(".progress-wrap").removeClass("active completed"), srv.jQuery('.progress-wrap[data-pagecount="' + srv[e].current_page + '"]').addClass("active"), srv.jQuery('.progress-wrap[data-pagecount="' + srv[e].current_page + '"]').prevAll().addClass("completed"); else {3198            var r = srv[e].form_completion_ratio;3199            srv.jQuery("#progress").children(".bar").css("width", r + "%");3200        }3201    }3202    function setValue(e, r, t) {3203        var a = srv.jQuery("#" + r);3204        if ($id_nr = r.replace(e.type + "_", ""), "checkbox" == e.type) {3205            $new_value = {};3206            a.val().split(",");3207            srv.jQuery("input[name=" + e.name + "]:checked").each(function (e, r) {3208                var t = r.id.split("_"), a = t[t.length - 1];3209                r.value && ($new_value["ch_" + a] = r.value);3210            }), a.val(JSON.stringify($new_value)), "{}" == a.val() && a.val("");3211        } else if (t) {3212            var s = e.id.split("_"), o = s[s.length - 1];3213            $new_value = {}, $new_value["rdo_" + o] = e.value, a.val(JSON.stringify($new_value));3214        } else a.val(e.value);3215        a.val(a.val()).trigger("change"), showError(a, {state: !0}), __MS.unsetError(a);3216    }3217    function send(a, s) {3218        var o = srv.jQuery('[data-key="' + s + '"]');3219        setLock(s);3220        var n = function (e) {3221            if (1 != srv[s].testMode) return e.code = 200, e.msg = "Everything is allright. No ...really its ok, believe me. (please...)", void t(e);3222            var r = "Failed to send survey!";3223            (e.verbose || !1) && (r += "\n\nCode:" + e.code + "\nMessage:" + e.error), srv.log(r, !0), clearLock(s), o.find("#surveySubmitBtn").removeClass("is-submitting").removeClass("btn-primary").addClass("btn-danger").html('<i class="fa fa-exclamation-circle"></i> Failed!, click to retry.').prop("disabled", !1);3224        }, t = function (e) {3225            if (srv.log("Api Response:\n Code:" + e.code + "\n" + e.msg, !1, "info"), srv[s].lock_submit = !1, clearLock(s), e && 200 == e.code) if (e.id && (srv[s].followUpId = e.id, srv[s].sendMode = "upsert"), a) {3226                srv[s].outer_modal ? setCookies({type: "sent", key: s}) : srv.callParentWindow({3227                    fn: "srv.setCookies",3228                    data: {type: "sent", key: s}3229                });3230                var r = {timeout: srv[s].survey_properties.timeout};3231                srv[s].survey_properties.notify && srv[s].survey_properties.notify.send && (notify = srv[s].survey_properties.notify, r.to = srv.jQuery("#" + srv[s].survey_properties.notification_email).val(), r.subject = notify.subject || "", r.sender = notify.sender || "", r.message = notify.message || "", o.find("#lastPage").html(srv[s].survey_properties.exit_content.replace("%email%", r.to)), o.find("#lastPage").prepend('<div class="completed-anim do-anim"><i class="fa fa-check"></i></div>')), srv[s].survey_properties.modal && o.find("#lastPage").append('<div id="autoClose" class="countdown muted" style="position:absolute; bottom:40px; right:20px;">window closes in <span id="countdown"></span> seconds</div>'), postSubmit(r, s);3232                var t = {event: "feedback_sent", key: s, formName: srv[s].survey_properties.name};3233                e.data && e.data.data && srv[s].survey_properties.advanced.return_feedback && (t.feedback = srv.jQuery.map(e.data.data, function (r) {3234                    var e = Object.keys(srv[s].block_params).filter(function (e) {3235                        return srv[s].block_params[e].import_var == r.label;3236                    })[0], t = "";3237                    try {3238                        t = srv[s].block_params[e].title;3239                    } catch (e) {3240                    }3241                    if ("image" !== r.type && "dom" !== r.type) return srv.jQuery.extend(r, {title: t});3242                })), srv[s].outer_modal ? (srv.triggerEvent(t), srv.clearCaptureEvents(s)) : (srv.callParentWindow({3243                    fn: "srv.triggerEvent",3244                    data: t3245                }), srv.callParentWindow({3246                    fn: "srv.clearCaptureEvents",3247                    data: s3248                })), "slide" === srv[s].slider.type && setTimeout(function () {3249                    srv.callParentWindow({fn: "srv.closeSlider", data: s}), setTimeout(location.reload(), 750);3250                }, 5e3);3251            } else {3252                t = {event: "next", key: s, formName: srv[s].survey_properties.name};3253                e.data && e.data.data && srv[s].survey_properties.advanced.return_feedback && (t.feedback = srv.jQuery.map(e.data.data, function (r) {3254                    var e = Object.keys(srv[s].block_params).filter(function (e) {3255                        return srv[s].block_params[e].import_var == r.label;3256                    })[0], t = "";3257                    try {3258                        t = srv[s].block_params[e].title;3259                    } catch (e) {3260                    }3261                    if ("image" !== r.type && "dom" !== r.type) return srv.jQuery.extend(r, {title: t});3262                })), srv[s].outer_modal ? srv.triggerEvent(t) : srv.callParentWindow({fn: "srv.triggerEvent", data: t});3263            } else n(e);3264        }, i = {feedback: []};3265        srv.jQuery(srv[s].survey_send_options.data).each(function (e, r) {3266            if (r) {3267                var t = r.by_name ? srv.jQuery('input[name="' + r.field + '"]:checked') : srv.jQuery("#" + r.field),3268                    a = "checkbox" == t.attr("type") ? t.prop("checked") : t.val();3269                i.feedback.push({label: r.label, value: a, type: r.type});3270            }3271        }), !1 !== srv[s].survey_send_options.force_customer && i.feedback.push({3272            value: srv[s].survey_send_options.force_customer.value,3273            type: "customer",3274            label: srv[s].survey_send_options.force_customer.label3275        }), i.feedback.push({value: navigator.userAgent, type: "agent", label: "User Agent"});3276        var r = getParameterByName("parent", document.location), l = "";3277        if (r) try {3278            l = document.location.href.split("&parent=")[1].split("&cip=")[0];3279        } catch (e) {3280            l = r;3281        } else l = LOCATION_REF;3282        i.feedback.push({value: l, type: "url", label: "url"}), i.feedback.push({3283            value: srv[s].document_title,3284            type: "category",3285            label: "Page title"3286        }), i.feedback.push({3287            value: 1,3288            type: "role",3289            label: "Role"3290        }), i.feedback.push({3291            value: srv[s].survey_properties.name,3292            type: "category",3293            label: "Survey"3294        }), i.feedback.push({3295            value: srv[s].window_viewport,3296            type: "viewport",3297            label: "Viewport"3298        }), srv[s].trigger_method && i.feedback.push({3299            value: srv[s].trigger_method,3300            type: "category",3301            label: "Form trigger"3302        }), i.feedback.push({3303            value: srv[s].form_completion_ratio,3304            type: "form_completion",3305            label: "Form completion percentage"3306        }), "insert" !== srv[s].sendMode && i.feedback.push({value: srv[s].followUpId, type: "id", label: "Survey ID"});3307        var e = {3308            token: srv[s].survey_send_options.token,3309            domain: srv[s].survey_send_options.domain,3310            surveyId: srv[s].survey_properties.id,3311            ip: srv[s].cip || 0,3312            data: i,3313            mode: srv[s].sendMode3314        };3315        srv[s].survey_send_options.preview ? (srv.log("Preview mode, not sending"), clearLock(s)) : this.request("send", e, t, n, !1, s);3316    }3317    function request(e, r, t, a, s, o) {3318        a || (a = function () {3319            srv.log("Error processing request", !0, "warn");3320        });3321        var n = "https://" + srv[o].domain;3322        srv.jQuery.ajax({3323            async: !0,3324            url: n + "/survey/public/" + e,3325            dataType: "json",3326            type: "POST",3327            data: r,3328            error: a,3329            success: t3330        });3331    }3332    function submitSurvey(e) {3333        if (srv[e].lock_submit) return !1;3334        var r = srv.jQuery('[data-key="' + e + '"]');3335        r.find("#surveySubmitBtn").prop("disabled", !0);3336        var t = srv[e].page_map[this[e].current_page];3337        __MS.validateAll(t, showError) ? (r.find("#surveySubmitBtn").data("buttonContent", r.find("#surveySubmitBtn").html()).html('<i class="fa fa-refresh"></i>').addClass("btn-primary").removeClass("btn-danger").addClass("is-submitting"), srv[e].form_completion_ratio = Math.round(srv[e].current_page / srv[e].page_count * 100), this.send(!0, e)) : (srv.log(srv[e].error_messages.deflt, !1, "warn"), r.find("#surveySubmitBtn").prop("disabled", !1), first_error = srv.jQuery("#" + __MS.errors[0]).parent(), scroll_top = first_error.offset().top, scrollToSurveyElement(scroll_top, e));3338    }3339    function openModal(e, r) {3340        if (!r) {3341            if (1 !== ALL_KEYS.length) {3342                try {3343                    srv.log("Key needed when multiple forms are initialized", !0, "warn");3344                } catch (e) {3345                }3346                return;3347            }3348            r = ALL_KEYS[0];3349        }3350        if (-1 != ALL_KEYS.indexOf(r)) {3351            if ("slide" !== srv[r].slider.type) {3352                if (getCookie("MSopened") == r && !e || srv[r].modal_open) {3353                    var t = "Not opening, reason: ";3354                    srv[r].modal_open ? t += "Already open" : getCookie("MSopened") == r && (t += "Got a cookie, and not forced by user"), isPreview && srv.jQuery("#surveyPreviewMessageContent").html(t), srv.log(t);3355                } else {3356                    e && srv.log("User forced opening of modal", !1, "info"), srv[r].modalFirst = !0;3357                    var a = srv.jQuery("#" + srv[r].div_name), s = srv.jQuery("<div>").attr("id", "surveyMask"),3358                        o = srv.jQuery("<div>").attr("id", "surveyModalLoader").addClass("survey-modal-loader").append('<svg class="circular-spin" viewBox="25 25 50 50"><circle class="stroke-path" cx="50" cy="50" r="20" fill="none" stroke-width="2" stroke-miterlimit="10"/></svg>'),3359                        n = "https://" + srv[r].domain + "/survey/public/modal?&key=" + r + "&domain=" + srv[r].domain + "&version=" + srv[r].version + "&parent=" + document.location,3360                        i = srv.jQuery("<div>").attr({3361                            id: "surveyWindowWrap",3362                            "data-parent-for": r3363                        }).addClass("surveyWindowWrap").css({3364                            position: "fixed",3365                            top: 0,3366                            left: 0,3367                            right: 0,3368                            "z-index": 2000000001,3369                            bottom: 0,3370                            "overflow-y": "auto",3371                            "-webkit-overflow-scrolling": "touch",3372                            "backface-visibility": "hidden",3373                            width: "100%",3374                            "min-height": "100%"3375                        }).on("click", function () {3376                            s.click();3377                        }),3378                        l = srv.jQuery("<iframe>").attr("id", "surveyWindow").attr("data-key", r).attr("src", n).attr("frameBorder", !1).attr("allowTransparency", !0).addClass("surveyWindow").css({3379                            border: "none",3380                            "border-radius": "2px",3381                            position: "absolute",3382                            top: "50px",3383                            left: 0,3384                            right: 0,3385                            "margin-left": "auto",3386                            "margin-right": "auto",3387                            "max-width": "480px",3388                            "z-index": 2000000001,3389                            "margin-bottom": 50,3390                            "box-shadow": "0 8px 17px 0 rgba(0,0,0,0.2)",3391                            opacity: 03392                        }).appendTo(i);3393                    handleIframeWidth(l), a.append(s).append(o), s.animate({opacity: .15}, {3394                        complete: function () {3395                            srv.jQuery("html,body").addClass("mopinion-modal-active"), a.append(i);3396                            var e = "";3397                            try {3398                                e = srv[r].outerProperties.name;3399                            } catch (e) {3400                            }3401                            srv.triggerEvent({event: "shown", key: r, formName: e}), s.on("click", function () {3402                                srv.closeModal(r);3403                            }), srv[r].modal_open = !0, setCookies({type: "open", key: r}), srv.hideLoader();3404                        }3405                    }), srv.jQuery(window).on("resize orientationchange", function () {3406                        handleIframeWidth(l);3407                    });3408                }3409                return !0;3410            }3411            srv.openSlider(e, r);3412        } else srv.open({key: r, show_button: !1, trigger_method: "force"});3413    }3414    function closeModal(r) {3415        if ("slide" !== srv[r].slider.type) {3416            var t = srv.jQuery("#surveyMask"), e = srv.jQuery('[data-key="' + r + '"]'),3417                a = e.closest(".surveyWindowWrap");3418            srv.clearCaptureEvents(r), e.animate({opacity: 0}, {3419                duration: 300, complete: function () {3420                    srv[r].modalFirst = !1, a.remove(), t.animate({opacity: 0}, {3421                        duration: 300, complete: function () {3422                            t.remove(), srv[r].modal_dismissed = !0, srv[r].modal_open = !1, srv.hideLoader(), srv.jQuery("html,body").removeClass("mopinion-modal-active");3423                            var e = "";3424                            try {3425                                e = srv[r].outerProperties.name;3426                            } catch (e) {3427                            }3428                            srv.triggerEvent({event: "hidden", key: r, formName: e});3429                        }3430                    });3431                }3432            });3433        } else srv.closeSlider(r);3434    }3435    function hideLoader() {3436        srv.jQuery("#surveyModalLoader").fadeOut(500).promise().done(function () {3437            srv.jQuery(this).remove();3438        });3439    }3440    function setCookies(e) {3441        2 == srv.cookie_level ? path = document.location.href : 1 == srv.cookie_level ? path = document.location.pathname : path = "/";3442        var r = e.key, t = e.type, a = srv[r].cookie_expire || 365;3443        "open" === t ? (setCookie("MSopened", r, a, path, void 0, !1), setCookie("MSopened." + r, !0, a, path, void 0, !1)) : "sent" === t && (setCookie("MSFeedbackSent", r, a, path, void 0, !1), setCookie("MSFeedbackSent." + r, !0, a, path, void 0, !1));3444    }3445    function setCookie(e, r, t, a, s, o) {3446        var n = new Date;3447        n.setTime(n.getTime()), t && (t = 1e3 * t * 60 * 60 * 24);3448        var i = new Date(n.getTime() + t);3449        document.cookie = e + "=" + escape(r) + (t ? ";expires=" + i.toGMTString() : "") + (a ? ";path=" + a : "") + (s ? ";domain=" + s : "") + (o ? ";secure" : "");3450    }3451    function getCookie(e) {3452        var r, t, a, s = document.cookie.split(";");3453        for (r = 0; r < s.length; r++) if (t = s[r].substr(0, s[r].indexOf("=")), a = s[r].substr(s[r].indexOf("=") + 1), (t = t.replace(/^\s+|\s+$/g, "")) == e) return unescape(a);3454    }3455    function handleIframeWidth(e) {3456        var r, t = srv.jQuery(window).width();3457        (e = !(!__MS.isDOM(e) && !__MS.isDOM(e[0])) && e) && (1200 < t ? r = "40%" : 992 < t && t < 1201 ? r = "45%" : t < 993 && 768 < t ? r = "50%" : t < 769 && 544 < t ? r = "70%" : t < 545 && (r = "90%"), e.css({width: r}));3458    }3459    function resizeListener(r, t) {3460        var a = function (e) {3461            if ("number" == typeof e && srv[t]) {3462                srv[t].form_height = e;3463                try {3464                    srv.callParentWindow({fn: "srv.resizeForm", data: {height: e, key: t}});3465                } catch (e) {3466                }3467            }3468        };3469        srv.jQuery(window).on("orientationchange", function () {3470            setTimeout(function () {3471                var e = document.getElementById(r).parentNode.offsetHeight;3472                a(e);3473            });3474        });3475        var s = setInterval(function () {3476            if (document.getElementById(r)) {3477                var e = document.getElementById(r).parentNode.offsetHeight;3478                e !== srv[t].form_height && a(e);3479            } else clearInterval(s);3480        }, 10);3481    }3482    function callParentWindow(e, r) {3483        r || (r = srv.getParameterByName("parent", document.location.href) || "*"), "function" == typeof window.postMessage && (isIE && (e = JSON.stringify(e)), parent.postMessage(e, r));3484    }3485    function callChildWindow(e, r) {3486        var t, a;3487        a = r ? (t = document.querySelector('[data-key="' + r + '"]')).getAttribute("src") : (t = document.getElementById("surveyWindow")).getAttribute("src"), "function" == typeof window.postMessage && t && "IFRAME" === t.nodeName && (isIE && (e = JSON.stringify(e)), t.contentWindow.postMessage(e, a));3488    }3489    function initPostMessage(key) {3490        var url_match;3491        if (PM_INIT) return !0;3492        if (srv[key].outer_modal) {3493            var url_match = "https://" + srv[key].domain;3494            PM_INIT = !0;3495        } else {3496            var url_match = srv.getParameterByName("parent", document.location.href).split("/");3497            3 < url_match.length && (url_match = url_match[0] + "//" + url_match[2]);3498        }3499        var receiveMessage = function (event) {3500            if (event.data && event.origin === url_match) if ("object" == typeof event.data) {3501                if (event.data.fn) {3502                    var fn = eval(event.data.fn), data = event.data.data;3503                    "function" == typeof fn && fn(data);3504                }3505            } else try {3506                var parsed = JSON.parse(event.data);3507                if (parsed.fn) {3508                    var fn = eval(parsed.fn), data = parsed.data;3509                    "function" == typeof fn && fn(data);3510                }3511            } catch (e) {3512                var fn = eval(event.data.fn), data = event.data.data;3513                "function" != typeof fn || "string" != typeof data && void 0 !== data || fn(data);3514            }3515        };3516        void 0 !== window.addEventListener ? window.addEventListener("message", receiveMessage, !1) : window.attachEvent("onmessage", receiveMessage);3517    }3518    var resizeForm = debounce(function (e) {3519        var r = e.key;3520        if (r) {3521            var t = srv.jQuery('[data-key="' + r + '"]'), a = t.closest(".surveySliderScroller");3522            if (e.update) {3523                if (1 == e.update) s = t.outerHeight() + 1;3524            } else var s = parseInt(e.height, 10) + 1;3525            var o = function () {3526                return .9 * srv.jQuery(window).height() < s;3527            };3528            srv[r] && srv[r].modalFirst ? (a.length && o() ? a.css("overflow-y", "scroll") : a.length && a.css("overflow-y", "hidden"), t.stop().animate({3529                opacity: 1,3530                height: s3531            }, {3532                duration: 225, complete: function () {3533                    srv[r].modalFirst = !1;3534                }3535            }), srv[r].form_height = s) : srv[r] && e.height && !srv[r].modalFirst && (a.length && o() ? a.css("overflow-y", "scroll") : a.length && a.css("overflow-y", "hidden"), t.stop().animate({height: s}, {3536                duration: 225,3537                complete: function () {3538                    srv.log("Srv height set", !1, "info");3539                }3540            }), srv[r].form_height = s);3541        }3542    }, 100);3543    function getLanguage(e, r) {3544        return void 0 !== srv[r].survey_text && void 0 !== srv[r].survey_text[e] ? srv[r].survey_text[e] : "[" + e + "]";3545    }3546    function addButton(e, r) {3547        var t = srv[e].button, a = t.content || srv.getLanguage("btnOpenText", e), s = t.style || "tab",3548            o = t.position || "right", n = srv.jQuery("<i>").addClass("fa " + t.icon).css({marginRight: "10px"}) || "",3549            i = srv[e].theme_class || "", l = "" != t.icon ? "" : "no_btn_icon";3550        return "slide" !== srv[e].slider.type ? srv.jQuery("<button>").addClass("btn-open-survey btn btn-primary").addClass(s + " " + s + "-" + o + " " + i + " " + l).on("click", function () {3551            srv.openModal(!0, e);3552        }).css("visibility", "hidden").css(touch_css).attr("data-button-for", e).html(a).prepend(n) : srv.jQuery("<button>").attr({3553            type: "button",3554            id: "openSliderButton",3555            "data-button-for": e3556        }).addClass("btn btn-open-slider " + i).html('<i class="fa ' + t.icon + '"></i>').on("click", function () {3557            srv[e].modal_open ? srv.closeSlider(e) : srv.openSlider(!0, e);3558        });3559    }3560    function showButton(e) {3561        var r = srv.jQuery("#" + srv[e].div_name);3562        if (e && !r.find('[data-button-for="' + e + '"]').length) {3563            srv.log("Adding feedback button", !1, "info");3564            var t = this.addButton(e);3565            "slide" !== srv[e].slider.type ? r.append(t) : r.find('[data-button-for="' + e + '"]').length || r.find('[data-key="' + e + '"]').length ? r.find('[data-key="' + e + '"]').length && srv.jQuery('[data-key="' + e + '"]').closest(".surveyWindowWrap").append(t) : srv.preloadSlider(e, !1, !0), setTimeout(function () {3566                t.addClass("allow-button");3567            }, 300);3568        }3569    }3570    function removeButton(e) {3571        srv.jQuery("#" + srv[e].div_name + ' [data-button-for="' + e + '"]').remove();3572    }3573    function isActive(e, r) {3574        var t = "select" === r.typeName ? r.properties.selected : r.properties.checked;3575        for (var a in t) if ("function" != typeof t[a] && "function" != typeof t[a] && t[a] == e) return !0;3576        return !1;3577    }3578    function debounce(a, s, o) {3579        var n;3580        return function () {3581            var e = this, r = arguments, t = o && !n;3582            clearTimeout(n), n = setTimeout(function () {3583                n = null, o || a.apply(e, r);3584            }, s), t && a.apply(e, r);3585        };3586    }3587    function cleanArray(e) {3588        var r = [];3589        for (var t in e) "function" != typeof e[t] && void 0 !== e[t] && r.push(e[t]);3590        return r;3591    }3592    function rand() {3593        return ("00000" + (16777216 * Math.random() << 0).toString(16)).substr(-6).toUpperCase();3594    }3595    function unsetRequirement(e, r) {3596        var t = srv.jQuery("#" + e);3597        t.hasClass("req") && (t.removeClass("error"), t.parent().removeClass("error"), -1 == srv[r].required_when_visible.indexOf(e) && srv[r].required_when_visible.push(e), delete __MS.errors[__MS.errors.indexOf(e)], __MS.errors = cleanArray(__MS.errors), t.removeClass("req"));3598    }3599    function setRequirement(e, r) {3600        var t = srv.jQuery("#" + e);3601        -1 < srv[r].required_when_visible.indexOf(e) && t.addClass("req");3602    }3603    function unhideBlock(r, t) {3604        if (-1 < r.indexOf("contact_") ? ($initial_block = srv.jQuery('*[id^="' + r + '"]'), $block = $initial_block.closest(".contact-wrapper"), $block_elements = jQuery('*[id^="contact_' + $block.parent().attr("id") + '"]')) : ((-1 < r.indexOf("matrix_") || -1 < r.indexOf("likert_")) && ($block_elements = srv.jQuery('input[type="hidden"][id^="' + r + '"]')), $block = srv.jQuery("#" + r)), $block) {3605            if (-1 < r.indexOf("section_break")) return $block = srv.jQuery("#" + r.split("_")[2]), void $block.css("display", "block");3606            $block.hasClass("contact-wrapper") || $block.hasClass("matrix-group") || $block.hasClass("likert-group") ? $block_elements.each(function (e, r) {3607                setRequirement(r.id, t);3608            }) : setRequirement(r, t);3609            try {3610                $block.parent().css("display", "block");3611            } catch (e) {3612                srv.log("block:" + r + " not found");3613            }3614        }3615    }3616    function hideBlock(e, a, s, o) {3617        if ("function" != typeof e && (-1 < e.indexOf("contact_") ? ($initial_block = srv.jQuery('*[id^="' + e + '"]'), $block = $initial_block.closest(".contact-wrapper"), $block_elements = jQuery('*[id^="contact_' + $block.parent().attr("id") + '"]')) : ((-1 < e.indexOf("matrix_") || -1 < e.indexOf("likert_")) && ($block_elements = srv.jQuery('input[type="hidden"][id^="' + e + '"]')), $block = srv.jQuery("#" + e)), $block)) if (-1 < e.indexOf("section_break")) $block = srv.jQuery("#" + e.split("_")[2]), $block.css("display", "none"); else {3618            var r = $block.parent();3619            r.css("display", "none"), r.removeClass("error"), $block.removeClass("error"), $block.hasClass("contact-wrapper") || $block.hasClass("matrix-group") || $block.hasClass("likert-group") ? $block_elements.each(function (e, r) {3620                if (unsetRequirement(r.id, o), a) {3621                    var t = srv.jQuery(r);3622                    t.not(":checkbox,:radio").val(""), t.prop("checked", !1), t.is("select") && srv.niceSelect(t, "update", o), s && t.trigger(s);3623                }3624            }) : (unsetRequirement(e, o), a && (r.find("input").not(":checkbox,:radio").val(""), r.find("input").prop("checked", !1), r.find(".ui-stars-star").removeClass("ui-stars-star-on"), "select" == e.split("_")[0] && ($block.val(""), srv.niceSelect($block, "update", o)), s && $block.trigger(s)));3625        }3626    }3627    function setPrefill(r, t, e, a) {3628        var s;3629        ($block = srv.jQuery("#" + r), $block) && (null !== r.match(/section_break/gi) && (r = r.replace("section_break", "section_description")), "url_query" == e ? s = getParameterByName(t, LOCATION_REF) : "cookie" == e ? s = getCookie(t) : "url" == e ? (-1 < document.referrer.indexOf(t) || -1 < LOCATION_REF.indexOf(t)) && ("show" === a ? srv.jQuery("#" + r).closest(".control-group").show() : srv.jQuery("#" + r).closest(".control-group").hide()) : "title" == e ? setTimeout(function () {3630            var e = jQuery("[data-key]").attr("data-key");3631            -1 < srv[e].document_title.indexOf(t) && ("show" === a ? srv.jQuery("#" + r).closest(".control-group").show() : srv.jQuery("#" + r).closest(".control-group").hide());3632        }) : e && "fixed" != e || (s = key), $block.val(decodeURIComponent(s)), "" !== $block.val() && $block.trigger("blur"));3633    }3634    function setNextPage(e, r) {3635        for (var t in srv[r].next_page = parseInt(e), srv[r].page_history) t == e || srv[r].page_history[t] == srv[r].current_page && delete srv[r].page_history[t];3636    }3637    function showError(e, r) {3638        e instanceof jQuery == 0 && (e = srv.jQuery(e));3639        var t = e.closest("[data-key]").attr("data-key"), a = e.parent(), s = e.attr("id");3640        if ("TR" == a[0].nodeName) {3641            var o = s.split("_"), n = o[0] + "_" + o[1];3642            a = srv.jQuery("#" + n), s = n;3643            r.code = "required_multi", __MS.unsetError(e), r.state ? __MS.unsetError(a) : __MS.setError(a);3644        } else if (e.parents(".contact-wrapper")[0]) a = e.parent();3645        if (srv.jQuery("#" + s + "_error")[0] && srv.jQuery("#" + s + "_error").remove(), !r.state && -1 != __MS.errors.indexOf(s)) {3646            var i = srv.jQuery("<div>").attr("id", s + "_error").addClass("alert alert-danger").html(r.code && srv[t].error_messages[r.code] ? srv[t].error_messages[r.code] : srv[t].error_messages.deflt);3647            a.append(i);3648        }3649    }3650    function postSubmit(e, r) {3651        srv.nextPage(-1, r);3652        getParameterByName("parent", document.location.href);3653        if (e.to) {3654            var t = {surveyKey: r, email: e.to};3655            srv.request("notify-user", t, function (e) {3656                srv.log(e);3657            }, function () {3658                srv.log("Failed to send notification", !0, "error");3659            }, !0, r);3660        }3661        var a = srv.jQuery('[data-key="' + r + '"]');3662        if (0 < e.timeout && !srv.jQuery(window.frameElement).hasClass("preview_embed")) {3663            var s = e.timeout;3664            a.find("#countdown").html(e.timeout / 1e3);3665            var o = setInterval(function () {3666                s -= 1e3, a.find("#countdown").html(s / 1e3), s <= 0 && (clearInterval(o), srv.callParentWindow({3667                    fn: "srv.closeModal",3668                    data: r3669                }));3670            }, 1e3);3671        } else a.find("#autoClose").remove();3672    }3673    function getParameterByName(e, r) {3674        e = e.replace(/[\[]/, "[").replace(/[\]]/, "]");3675        var t = new RegExp("[?&]" + e + "=([^&#]*)").exec(r);3676        return null == t ? "" : decodeURIComponent(t[1].replace(/\+/g, " "));3677    }3678    function setLikert(e) {3679        var r = srv.jQuery("#" + e.name);3680        r.val(e.value), showError(r, {state: !0}), __MS.unsetError(r);3681    }3682    function setMatrix(e) {3683        var r = e.name.split("_"),3684            t = srv.jQuery('input[name="' + r[0] + "_" + r[1] + "_" + r[2] + '_value"]:checked').val(),3685            a = srv.jQuery('input[name="' + r[0] + "_" + r[1] + "_" + r[2] + '_weight"]:checked').val(),3686            s = srv.jQuery("#" + r[0] + "_" + r[1] + "_" + r[2]);3687        if (t && a) {3688            var o = JSON.stringify({value: t, weights: a});3689            s.val(o), showError(s, {state: !0}), __MS.unsetError(s);3690        }3691    }3692    function initCapture(l) {3693        var i;3694        if (!(l = l || {}).embedded) {3695            srv.jQuery("html,body").removeClass("mopinion-modal-active");3696            var e = srv.jQuery('[data-key="' + l.key + '"]');3697            e.addClass("screen-capture-active"), e.closest(".surveyWindowWrap").addClass("screen-capture-active"), srv.jQuery("#surveyMask").addClass("screen-capture-active");3698        }3699        function d(e, r) {3700            if (srv.jQuery("#mopinion_dimmer_overlay").remove(), e) var t = e[0].getBoundingClientRect();3701            var a = srv.jQuery("<div>").attr({3702                id: "mopinion_dimmer_overlay",3703                "data-dimmer-for": l.key3704            }).addClass(srv[l.key].theme_class || "");3705            l.embedded && a.addClass("is-embedded");3706            srv.jQuery("<div>").addClass("dimmer-border").appendTo(a);3707            var s = srv.jQuery("<div>").addClass("dimmer-actions").appendTo(a);3708            srv.jQuery("<div>").html(r ? '<i class="fa fa-check" style="margin-right:10px"></i>' + srv.getLanguage("screenCaptureSelected", l.key) : (user_touching ? '<i class="fa fa-hand-pointer-o" style="margin-right:10px"></i>' : '<i class="fa fa-mouse-pointer" style="margin-right:10px"></i>') + srv.getLanguage("screenCaptureText", l.key)).appendTo(s), srv.jQuery("<div>").html("×").addClass("dimmer-cancel").on("click", function (e) {3709                e.stopPropagation(), setTimeout(function () {3710                    srv.clearCaptureEvents(l.key), l.embedded ? srv.clearCaptureValues({3711                        block_id: l.block_id,3712                        key: l.key3713                    }) : (srv.showModalPostCapture(l.key), srv.callChildWindow({3714                        fn: "srv.clearCaptureValues",3715                        data: {block_id: l.block_id, key: l.key}3716                    }, l.key));3717                });3718            }).appendTo(s);3719            if (e) {3720                if (!l.embedded && !0 === l.supportsPointerEvents) srv.jQuery("<div>").css({3721                    position: "fixed",3722                    background: "rgba(0,0,0,.3)",3723                    top: 0,3724                    height: t.top,3725                    left: 0,3726                    right: 0,3727                    pointerEvents: "none"3728                }).appendTo(a), srv.jQuery("<div>").css({3729                    position: "fixed",3730                    background: "rgba(0,0,0,.3)",3731                    top: t.bottom,3732                    bottom: 0,3733                    left: 0,3734                    right: 0,3735                    pointerEvents: "none"3736                }).appendTo(a), srv.jQuery("<div>").css({3737                    position: "fixed",3738                    background: "rgba(0,0,0,.3)",3739                    top: t.top,3740                    height: t.height,3741                    left: 0,3742                    width: t.left,3743                    pointerEvents: "none"3744                }).appendTo(a), srv.jQuery("<div>").css({3745                    position: "fixed",3746                    background: "rgba(0,0,0,.3)",3747                    top: t.top,3748                    height: t.height,3749                    width: srv.jQuery(window).width() - t.right,3750                    right: 0,3751                    pointerEvents: "none"3752                }).appendTo(a);3753                var o = srv.jQuery("<div>").addClass("dimmer-highlight").css({3754                    position: "fixed",3755                    top: t.top - 3,3756                    left: t.left - 3,3757                    height: t.height + 6,3758                    width: t.width + 63759                }).appendTo(a);3760                if (user_touching && !r) srv.jQuery("<button>").attr({type: "button"}).text(srv.getLanguage("screenCaptureTouchBtnText", l.key)).addClass("btn-select-touch").on("click", function (e) {3761                    e.preventDefault(), e.stopPropagation(), srv.jQuery(this).trigger("click.mopinion_screencapture", {selected: !0});3762                }).appendTo(o);3763                r && o.addClass("dimmer-selected"), srv.jQuery("body").append(a);3764            } else {3765                srv.jQuery("<div>").css({3766                    position: "fixed",3767                    background: "rgba(0,0,0,.3)",3768                    top: 0,3769                    bottom: 0,3770                    left: 0,3771                    right: 0,3772                    pointerEvents: "none"3773                }).appendTo(a);3774                var n = srv.jQuery("<div>").addClass("capture-hint").appendTo(a), i = srv.jQuery("<i>").appendTo(n);3775                user_touching ? i.addClass("fa fa-hand-pointer-o") : i.addClass("fa fa-mouse-pointer");3776                srv.jQuery("<div>").text(srv.getLanguage("screenCaptureHint", l.key)).appendTo(n);3777                srv.jQuery("body").append(a);3778            }3779        }3780        setTimeout(function () {3781            srv.jQuery(document).on("mousemove.mopinion_screencapture", function (e) {3782                user_touching || d(srv.jQuery(e.target));3783            }), srv.jQuery("*").on("click.mopinion_screencapture", function (e, r) {3784                if (e.preventDefault(), e.stopPropagation(), srv.jQuery(document).off("mousemove.mopinion_screencapture"), r || (i = e.target), srv.jQuery(window).off("scroll.mopinion_screencapture").on("scroll.mopinion_screencapture", function (e) {3785                    !user_touching || r ? d(srv.jQuery(i), !0) : d(srv.jQuery(i));3786                }), !user_touching || r && r.selected) {3787                    srv.jQuery("#mopinion_dimmer_overlay").remove(), srv.jQuery("[data-mopinion-screen-capture]").removeAttr("data-mopinion-screen-capture");3788                    var t = (s = i, o = srv.jQuery(s).clone(), n = ["[data-mop-supress]"], l.maskedSelectors.length && (n = n.concat(l.maskedSelectors)), n.forEach(function (e) {3789                        if (o.is(e)) o.html("***"); else try {3790                            o.find(e).html("***");3791                        } catch (e) {3792                        }3793                    }), o.find("input").each(function (e, r) {3794                        var t = srv.jQuery(r);3795                        try {3796                            t.attr("value", "***");3797                        } catch (e) {3798                        }3799                        try {3800                            t.attr("checked", !1);3801                        } catch (e) {3802                        }3803                    }), o.find("select").each(function (e, r) {3804                        var t = srv.jQuery(r);3805                        try {3806                            t.find("option:selected").removeAttr("selected");3807                        } catch (e) {3808                        }3809                    }), o.find("textarea").each(function (e) {3810                        srv.jQuery(e).text("***");3811                    }), srv.jQuery.trim(o.prop("outerHTML")).replace(/(\r\n|\n|\r)/gm, " "));3812                    srv.jQuery(i).attr("data-mopinion-screen-capture", "");3813                    var a = function () {3814                        var r = srv.jQuery("html").clone(), e = ["[data-mop-supress]"];3815                        l.maskedSelectors.length && (e = e.concat(l.maskedSelectors)), r.find("input").each(function (e, r) {3816                            var t = srv.jQuery(r);3817                            try {3818                                t.attr("value", "***");3819                            } catch (e) {3820                            }3821                            try {3822                                t.attr("checked", !1);3823                            } catch (e) {3824                            }3825                            try {3826                                t.attr("data-mopinion-mask-input", "");3827                            } catch (e) {3828                            }3829                        }), r.find("select").each(function (e, r) {3830                            var t = srv.jQuery(r);3831                            try {3832                                t.attr("data-mopinion-mask-input", "");3833                            } catch (e) {3834                            }3835                            try {3836                                t.find("option:selected").removeAttr("selected");3837                            } catch (e) {3838                            }3839                        }), r.find("textarea").each(function (e) {3840                            var r = srv.jQuery(e);3841                            try {3842                                r.text("***").attr("data-mopinion-mask-input");3843                            } catch (e) {3844                            }3845                        }), e.forEach(function (e) {3846                            try {3847                                r.find(e).attr("data-mopinion-mask-extra", "");3848                            } catch (e) {3849                            }3850                        });3851                        var t = srv.jQuery("<base>").attr("href", location.origin);3852                        if (r.find("head").find("base").length) {3853                            if (r.find("head").find("base").length) {3854                                var a = r.find("head").find("base").attr("href"), s = srv.jQuery("<base>");3855                                if (-1 === a.indexOf(location.origin)) {3856                                    var o = "/" === a.charAt(0) ? location.origin + a : location.origin + "/" + a;3857                                    s.attr("href", o);3858                                } else s.attr("href", a);3859                                r.find("head").find("base").remove(), r.find("head").prepend(s);3860                            }3861                        } else r.find("head").prepend(t);3862                        return srv.jQuery.trim(r.prop("outerHTML")).replace(/(\r\n|\n|\r)/gm, " ");3863                    }();3864                    d(srv.jQuery(i), !0), srv.jQuery("*").off("click.mopinion_screencapture"), l.embedded ? srv.catchCapture({3865                        dom: a,3866                        selector: t,3867                        block_id: l.block_id,3868                        key: l.key3869                    }) : srv.callChildWindow({3870                        fn: "srv.catchCapture",3871                        data: {dom: a, selector: t, block_id: l.block_id, key: l.key}3872                    }, l.key);3873                } else d(srv.jQuery(i));3874                var s, o, n;3875            });3876        }, 150), d();3877    }3878    function clearCaptureEvents(e) {3879        setTimeout(function () {3880            srv.jQuery("#mopinion_dimmer_overlay").remove(), srv.jQuery("*").off("click.mopinion_screencapture"), srv.jQuery(document).off("mousemove.mopinion_screencapture"), srv.jQuery(window).off("scroll.mopinion_screencapture"), srv.jQuery("[data-mopinion-screen-capture]").removeAttr("data-mopinion-screen-capture");3881        });3882    }3883    function clearCaptureValues(e) {3884        srv.jQuery("#screenshot_" + e.block_id).val("").trigger("change"), srv.jQuery("#dom_" + e.block_id).val(""), srv.jQuery("#selector_" + e.block_id).val(""), srv.jQuery("#" + e.block_id).removeClass("screen-captured"), __MS.validateField(srv.jQuery("#screenshot_" + e.block_id)[0]);3885    }3886    function toHTMLEntities(e) {3887        return e.replace(/./gm, function (e) {3888            return "&#" + e.charCodeAt(0) + ";";3889        });3890    }3891    function fromHTMLEntities(e) {3892        return (e + "").replace(/&#\d+;/gm, function (e) {3893            return String.fromCharCode(e.match(/\d+/gm)[0]);3894        });3895    }3896    function catchCapture(e) {3897        e = e || {}, srv.log("Screen capture caught for block :" + e.block_id);3898        var r = fromHTMLEntities(e.selector), t = encodeQuotes(e.dom);3899        srv.jQuery("#selector_" + e.block_id).val(r), srv.jQuery("#dom_" + e.block_id).val(t), srv.jQuery("#screenshot_" + e.block_id).val("https://mopinion-visual-feedback.s3-eu-west-1.amazonaws.com/camera-icon.png").trigger("change"), __MS.validateField(srv.jQuery("#screenshot_" + e.block_id)[0]), e.embedded || srv.callParentWindow({3900            fn: "srv.showModalPostCapture",3901            data: e.key3902        }), 0 < r.length && 0 < t.length ? srv.jQuery("#" + e.block_id).addClass("screen-captured") : srv.jQuery("#" + e.block_id).removeClass("screen-captured");3903    }3904    function showModalPostCapture(e) {3905        "slide" !== srv[e].slider.type ? srv.jQuery("html,body").addClass("mopinion-modal-active") : srv.jQuery("html,body").addClass("mopinion-slider-active");3906        var r = srv.jQuery('[data-key="' + e + '"]');3907        r.removeClass("screen-capture-active"), r.closest(".surveyWindowWrap").removeClass("screen-capture-active"), srv.jQuery("#surveyMask").removeClass("screen-capture-active");3908    }3909    function userIdle(r, t) {3910        idleTimer = null, idleState = !1, srv.jQuery("*").bind("mousemove keydown scroll", function (e) {3911            clearTimeout(idleTimer), idleState, idleState = !1, idleTimer = setTimeout(function () {3912                srv.log("You've been idle for " + r / 1e3 + " seconds.");3913                var e = new Function(t + "()");3914                srv[key].modal_open || srv[key].modal_dismissed || e(), idleState = !0;3915            }, r);3916        }), srv.jQuery("body").trigger("mousemove");3917    }3918    function userExit(e, r) {3919        var t = !1, a = new Function(r + "()");3920        srv.jQuery(document).bind("mouseout", function (e) {3921            if (e = e || window.event, mouseFrom = e.relatedTarget || e.toElement, !mouseFrom || "HTML" == mouseFrom.nodeName) var r = e.pageY < 100;3922            modal_open || modal_dismissed || !t || r && (t = !1, a());3923        }), setTimeout(function () {3924            t = !0;3925        }, e);3926    }3927    function proActiveOpen(e, r) {3928        var t = new Function(r + "()");3929        setTimeout(function () {3930            modal_open || modal_dismissed ? srv.log("already opened or dismissed") : t();3931        }, e);3932    }3933    function triggerForUrl(e, r) {3934        var t = document.location.href, a = !!r;3935        for (var s in e = JSON.parse(e) || {}) if ("function" != typeof e[s]) {3936            var o = e[s];3937            if ("function" != typeof o) {3938                var n = new RegExp(o, "g");3939                t.match(n) && (a = !r);3940            }3941        }3942        return a;3943    }3944    function scrollToFormPos(e) {3945        var r = e.position, t = e.key, a = srv.jQuery('[data-key="' + t + '"]'),3946            s = "slide" !== srv[t].slider.type ? a.closest(".surveyWindowWrap") : a.closest(".surveySliderScroller");3947        "IFRAME" === !a[0].nodeName && (s = srv.jQuery("html, body"), r = 0 == r ? a.offset().top : r), setTimeout(function () {3948            s.animate({scrollTop: r}, 225);3949        }, 50);3950    }3951    function enableNext(e) {3952        if (void 0 !== srv[e].survey_properties && 0 == srv[e].survey_properties.advanced.next_button_behaviour || void 0 === srv[e].required_map) return !1;3953        var r = srv[e].required_map[srv[e].current_page];3954        all_filled = !0, srv.jQuery(r).each(function (e, r) {3955            var t = srv.jQuery("#" + r);3956            t && (void 0 === t.val() || "" == srv.jQuery.trim(t.val())) && srv.jQuery(t).parent().is(":visible") && (all_filled = !1);3957        });3958        var t = srv.jQuery('[data-key="' + e + '"]').find("#page" + srv[e].current_page),3959            a = t.find("#surveySubmitBtn")[0] ? t.find("#surveySubmitBtn") : t.find(".btn-next");3960        "disable" == srv[e].survey_properties.advanced.next_button_behaviour ? a.prop("disabled", !all_filled) : "hide" == srv[e].survey_properties.advanced.next_button_behaviour && a.toggle(all_filled);3961    }3962    function scrollToSurveyElement(e, r) {3963        window != window.top ? srv.callParentWindow({3964            fn: "srv.scrollToFormPos",3965            data: {position: e, key: r}3966        }) : scrollToFormPos({position: e, key: r});3967    }3968    function transitionEnd() {3969        var e, r, t = document.createElement("div"), a = {3970            transition: "transitionend",3971            OTransition: "oTransitionEnd",3972            MozTransition: "transitionend",3973            WebkitTransition: "webkitTransitionEnd"3974        };3975        for (e in a) if (void 0 !== t.style[e]) {3976            r = a[e];3977            break;3978        }3979        return void 0 !== r ? r : "notransition";3980    }3981    function setLock(e) {3982        srv[e].lock_submit = !0, srv.jQuery('[data-key="' + e + '"]').find(".btn-next, .btn-submit").prop("disabled", !0);3983    }3984    function clearLock(e) {3985        srv[e].lock_submit = !1, srv.jQuery('[data-key="' + e + '"]').find(".btn-next, .btn-submit").prop("disabled", !1);3986    }3987    function makeStars(e, i) {3988        var l, r = e.find('input[type="radio"]'),3989            d = (i = i || {}).hidden || srv.jQuery("#" + i.type + "_" + i.block_id),3990            c = document.createDocumentFragment(), u = !1;3991        i.showCaptions && (u = srv.jQuery("<span>").addClass("caption")), r.each(function (e, r) {3992            var t = srv.jQuery(r), a = t.val(), s = t.attr("title"), o = e + 1,3993                n = srv.jQuery("<div>").attr("data-value", a).attr("data-title", s).addClass("ui-stars-star").addClass("star_" + o).on("mouseenter", function () {3994                    srv.jQuery(this).removeClass("ui-stars-star-on").siblings(".ui-stars-star").removeClass("ui-stars-star-on"), srv.jQuery(this).addClass("ui-stars-star-hover").prevAll(".ui-stars-star").addClass("ui-stars-star-hover"), u && u.text(srv.jQuery(this).attr("data-title"));3995                }).on("mouseleave", function () {3996                    srv.jQuery(this).removeClass("ui-stars-star-hover").prevAll(".ui-stars-star").removeClass("ui-stars-star-hover"), l && l.addClass("ui-stars-star-on").prevAll(".ui-stars-star").addClass("ui-stars-star-on"), u && !l ? u.text("") : u && l && u.text(l.attr("data-title"));3997                }).on("click", function () {3998                    var e = srv.jQuery(this).attr("data-value");3999                    if (d.val(e).trigger("change"), l = srv.jQuery(this), srv.jQuery(this).siblings(".ui-stars-star").removeClass("ui-stars-star-on ui-stars-star-hover"), srv.jQuery(this).addClass("ui-stars-star-on").prevAll(".ui-stars-star").addClass("ui-stars-star-on"), i.callback && "function" == typeof i.callback) {4000                        var r = i.callback_data || "";4001                        i.callback(r);4002                    }4003                }).appendTo(c);4004            srv.jQuery("<a>").text(a).appendTo(n);4005            t.remove();4006        }), u && u.appendTo(c), e.append(c);4007    }4008    function niceSelect(e, r, t) {4009        var a = srv.jQuery("#" + this[t].div_name);4010        function s(e) {4011            e.after(srv.jQuery("<div></div>").addClass("nice-select").addClass(e.attr("class") || "").addClass(e.attr("disabled") ? "disabled" : "").attr("tabindex", e.attr("disabled") ? null : "0").html('<span class="current"></span><ul class="list"></ul>'));4012            var a = e.next(), r = e.find("option"), t = e.find("option:selected");4013            a.find(".current").html(t.data("display") || t.text()), r.each(function (e) {4014                var r = srv.jQuery(this), t = r.data("display");4015                a.find("ul").append(srv.jQuery("<li></li>").attr("data-value", r.val()).attr("data-display", t || null).addClass("option" + (r.is(":selected") ? " selected" : "") + (r.is(":disabled") ? " disabled" : "")).html(r.text()));4016            });4017        }4018        "string" != typeof r ? (e.each(function () {4019            var e = srv.jQuery(this);4020            e.hide(), e.next().hasClass("nice-select") || s(e);4021        }), a.off(".nice_select"), a.on("click.nice_select", ".nice-select", function (e) {4022            var r = srv.jQuery(this);4023            if (srv.jQuery(".nice-select").not(r).removeClass("open"), r.toggleClass("open"), r.hasClass("open")) {4024                r.find(".option"), r.find(".focus").removeClass("focus"), r.find(".selected").addClass("focus");4025                var t = srv.jQuery(window).height(), a = r.offset().top + r.outerHeight();4026                t - a < 250 ? r.find(".list").css({maxHeight: t - a - 10}) : r.find(".list").css({maxHeight: ""});4027            } else r.focus();4028        }), a.on("click.nice_select", function (e) {4029            0 === srv.jQuery(e.target).closest(".nice-select").length && srv.jQuery(".nice-select").removeClass("open").find(".option");4030        }), a.on("click.nice_select", ".nice-select .option:not(.disabled)", function (e) {4031            var r = srv.jQuery(this), t = r.closest(".nice-select");4032            t.find(".selected").removeClass("selected"), r.addClass("selected");4033            var a = r.data("display") || r.text();4034            t.find(".current").text(a), t.prev("select").val(r.data("value")).trigger("change");4035        }), a.on("keydown.nice_select", ".nice-select", function (e) {4036            var r = srv.jQuery(this), t = srv.jQuery(r.find(".focus") || r.find(".list .option.selected"));4037            if (32 == e.keyCode || 13 == e.keyCode) return r.hasClass("open") ? t.trigger("click") : r.trigger("click"), !1;4038            if (40 == e.keyCode) {4039                if (r.hasClass("open")) {4040                    var a = t.nextAll(".option:not(.disabled)").first();4041                    0 < a.length && (r.find(".focus").removeClass("focus"), a.addClass("focus"));4042                } else r.trigger("click");4043                return !1;4044            }4045            if (38 == e.keyCode) {4046                if (r.hasClass("open")) {4047                    var s = t.prevAll(".option:not(.disabled)").first();4048                    0 < s.length && (r.find(".focus").removeClass("focus"), s.addClass("focus"));4049                } else r.trigger("click");4050                return !1;4051            }4052            if (27 == e.keyCode) r.hasClass("open") && r.trigger("click"); else if (9 == e.keyCode && r.hasClass("open")) return !1;4053        })) : "update" == r ? e.each(function () {4054            var e = srv.jQuery(this), r = srv.jQuery(this).next(".nice-select"), t = r.hasClass("open");4055            r.length && (r.remove(), s(e), t && e.next().trigger("click"));4056        }) : "destroy" == r ? (e.each(function () {4057            var e = srv.jQuery(this), r = srv.jQuery(this).next(".nice-select");4058            r.length && (r.remove(), e.css("display", ""));4059        }), 0 == srv.jQuery(".nice-select").length && a.off(".nice_select")) : console.log('Method "' + r + '" does not exist.');4060    }4061    function getMeta(e) {4062        var r = e.key;4063        if (e.passback) return srv[r].window_viewport = e.viewport, srv[r].document_title = e.title, srv[r].trigger_method = e.trigger_method, void(srv[r].ga_id = e.ga_id);4064        if (srv[r].outer_modal) {4065            srv[r].window_viewport = srv.jQuery(window).width() + "x" + srv.jQuery(window).height(), srv[r].document_title = document.title || "";4066            try {4067                srv[r].ga_id = ga.getAll()[0].get("trackingId");4068            } catch (e) {4069            }4070        } else srv.callParentWindow({fn: "srv.returnMeta", data: {key: r}});4071    }4072    function returnMeta(e) {4073        var r = e.key || "", t = srv.jQuery(window).width() + "x" + srv.jQuery(window).height(), a = "";4074        try {4075            a = ga.getAll()[0].get("trackingId");4076        } catch (e) {4077        }4078        srv.callChildWindow({4079            fn: "srv.getMeta",4080            data: {4081                viewport: t,4082                title: document.title,4083                trigger_method: srv[r].trigger_method || "",4084                key: r,4085                ga_id: a,4086                passback: !04087            }4088        }, r);4089    }4090    function supportsPointerEvents(e) {4091        var r = document.createElement("a").style;4092        return r.cssText = "pointer-events:auto", "auto" === r.pointerEvents || (e && srv.jQuery("html").addClass("no-csspointerevents"), !1);4093    }4094    function supportsSvg() {4095        return document.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#Image", "1.1");4096    }4097    function encodeQuotes(e) {4098        var r = {'"': """, "'": "'"};4099        return e.replace(/["']/g, function (e) {4100            return r[e];4101        });4102    }4103    function iOSTest(e) {4104        var r = parseFloat(("" + (/CPU.*OS ([0-9_]{1,5})|(CPU like).*AppleWebKit.*Mobile/i.exec(navigator.userAgent) || [0, ""])[1]).replace("undefined", "3_2").replace("_", ".").replace("_", "")) || !1;4105        return e ? "fixed_positioning" === e ? !(!r || r && /CriOS/i.test(navigator.userAgent)) && r < 10.3 : "scroll_on_input" === e ? 10.2 < r : void 0 : r;4106    }4107    function fetchVariable(obj) {4108        if ("string" == typeof obj && (obj = decodeURIComponent(obj)), "object" != typeof obj) try {4109            obj = JSON.parse(obj);4110        } catch (e) {4111        }4112        var key = obj.key, type = obj.type, value = obj.value, hidden_id = obj.hidden_id;4113        srv.log("Fetching " + type + " data from :" + value, "info");4114        var passback = "";4115        if ("css_selector" === type) {4116            var $selector;4117            try {4118                $selector = srv.jQuery(value.replace(/"/g, "'"));4119            } catch (e) {4120            }4121            $selector && (passback = "INPUT" === $selector.prop("nodeName") || "TEXTAREA" === $selector.prop("nodeName") ? $selector.val() : srv.jQuery.trim($selector.text()));4122        } else if ("js" === type) {4123            var js_var;4124            try {4125                js_var = eval(value);4126            } catch (e) {4127            }4128            if (void 0 !== js_var) {4129                if ("object" == typeof js_var) try {4130                    js_var = JSON.stringify(js_var);4131                } catch (e) {4132                }4133                "string" != typeof js_var && "number" != typeof js_var || (passback = js_var);4134            }4135        } else if ("cookie" === type) {4136            var cookie_val = getCookie(value);4137            cookie_val && "string" == typeof cookie_val && (passback = cookie_val);4138        } else if ("url_parameter" === type) {4139            var url_param = getParameterByName(value, LOCATION_REF);4140            url_param && "string" == typeof url_param && (passback = url_param);4141        }4142        if (passback) if (srv.log("Data found from " + type + ": " + value, "info"), obj.embedded) if (srv.jQuery("#" + hidden_id).length) srv.jQuery("#" + hidden_id).val(passback); else var poll = setInterval(function () {4143            srv.jQuery("#" + hidden_id).length && (clearInterval(poll), srv.jQuery("#" + hidden_id).val(passback));4144        }, 50); else srv.callChildWindow({4145            fn: "(function(obj) {srv.jQuery('#'+obj.hidden_id).val(obj.data)})",4146            data: {hidden_id: hidden_id, data: passback}4147        }, key); else srv.log("No data found from " + type + ": " + value, "info");4148    }4149    function preloadSlider(t, e, r) {4150        if (srv.jQuery('[data-key="' + t + '"]').length && !srv[t].is_loading) return "open" === e && srv.openSlider(!0, t), !0;4151        if (!srv[t].is_loading) {4152            var a = srv.jQuery("#" + srv[t].div_name), s = srv.jQuery("<div>").attr({4153                    id: "surveyWindowWrap",4154                    "data-parent-for": t4155                }).addClass("surveyWindowWrap").css({4156                    position: "fixed",4157                    zIndex: 2000000001,4158                    "backface-visibility": "hidden"4159                }).addClass("mopinion-slider slide-" + srv[t].slider.position),4160                o = "https://" + srv[t].domain + "/survey/public/modal?&key=" + t + "&domain=" + srv[t].domain + "&version=" + srv[t].version + "&parent=" + document.location,4161                n = srv.jQuery("<div>").attr("id", "surveySliderScroller").addClass("surveySliderScroller").css({4162                    maxHeight: "90vh",4163                    overflowY: "hidden",4164                    "-ms-overflow-style": "-ms-autohiding-scrollbar",4165                    "-webkit-overflow-scrolling": "touch"4166                }).appendTo(s),4167                i = (srv.jQuery("<iframe>").attr("id", "surveyWindow").attr("src", o).attr("frameBorder", !1).attr("allowTransparency", !0).attr("data-key", t).addClass("surveyWindow").css({4168                    border: "none",4169                    borderRadius: "2px",4170                    width: "100%",4171                    background: "rgba(255,255,255,0.01)"4172                }).appendTo(n), {});4173            if ("right" === srv[t].slider.position ? i = {4174                top: "10%",4175                top: "calc(10% + 5px)",4176                bottom: "auto",4177                left: "auto",4178                right: 0,4179                transform: "translateX(100%)"4180            } : "bottom-right" === srv[t].slider.position ? i = {4181                top: "auto",4182                bottom: "-5px",4183                left: "auto",4184                right: "2.5%",4185                transform: "translateY(100%)"4186            } : "bottom-left" === srv[t].slider.position ? i = {4187                top: "auto",4188                bottom: "-5px",4189                left: "2.5%",4190                right: "auto",4191                transform: "translateY(100%)"4192            } : "left" === srv[t].slider.position && (i = {4193                top: "10%",4194                top: "calc(10% + 5px)",4195                left: 0,4196                right: "auto",4197                transform: "translateX(-100%)"4198            }), r || srv[t].show_button) {4199                var l = srv.addButton(t);4200                l.appendTo(s), setTimeout(function () {4201                    l.addClass("allow-button");4202                }, 300);4203            }4204            return s.css(i).appendTo(a), sliderWidth(s), srv.jQuery(window).on("resize orientationchange", function () {4205                sliderWidth(s);4206            }), "open" === e && srv.jQuery(document).on("mopinion_loaded", function e(r) {4207                r.detail.key === t && r.detail.iframe && (srv.openSlider(!0, t), srv.jQuery(document).off("mopinion_loaded", e));4208            }), !0;4209        }4210    }4211    function openSlider(e, r) {4212        if (!r) {4213            if (1 !== ALL_KEYS.length) {4214                try {4215                    srv.log("Key needed when multiple forms are initialized", !0, "warn");4216                } catch (e) {4217                }4218                return;4219            }4220            r = ALL_KEYS[0];4221        }4222        if (getCookie("MSopened") == r && !e || srv[r].modal_open) {4223            var t = "Not opening, reason: ";4224            srv[r].modal_open ? t += "Already open" : getCookie("MSopened") == r && (t += "Got a cookie, and not forced by user"), isPreview && srv.jQuery("#surveyPreviewMessageContent").html(t), srv.log(t);4225        } else {4226            e && srv.log("User forced opening of modal", !1, "info");4227            var a = srv.jQuery('[data-key="' + r + '"]'), s = a.closest(".surveyWindowWrap");4228            if (!a.length) return void srv.preloadSlider(r, "open");4229            srv[r].modalFirst = !0, animateTranslate(s, {4230                from: -1 < ["right", "bottom-left", "bottom-right"].indexOf(srv[r].slider.position) ? "100" : "-100",4231                to: "0",4232                type: -1 < ["left", "right"].indexOf(srv[r].slider.position) ? "x" : "y"4233            }, function () {4234                srv.jQuery("html,body").addClass("mopinion-slider-active"), srv[r].modal_open = !0, srv.triggerEvent({4235                    event: "shown",4236                    key: r4237                }), setCookies({type: "open", key: r});4238            });4239        }4240        return !0;4241    }4242    function closeSlider(e) {4243        if (srv[e].modal_open) {4244            var r = srv.jQuery('[data-key="' + e + '"]').closest(".surveyWindowWrap");4245            srv.clearCaptureEvents(e), animateTranslate(r, {4246                to: -1 < ["right", "bottom-left", "bottom-right"].indexOf(srv[e].slider.position) ? "100" : "-100",4247                type: -1 < ["left", "right"].indexOf(srv[e].slider.position) ? "x" : "y"4248            }, function () {4249                srv[e].modalFirst = !1;4250                var t = srv[e].modal_open = !1;4251                srv.jQuery.each(srv.ALL_KEYS, function (e, r) {4252                    srv[r].modal_open && (t = !0);4253                }), t || srv.jQuery("html,body").removeClass("mopinion-slider-active"), srv.triggerEvent({4254                    event: "hidden",4255                    key: e4256                });4257            });4258        }4259    }4260    function sliderWidth(e) {4261        var r = srv.jQuery(window).width();4262        $iframe = !(!__MS.isDOM(e) && !__MS.isDOM(e[0])) && e, $iframe && (1200 < r ? frameWidth = "425px" : 992 < r && r < 1201 ? frameWidth = "380px" : r < 993 && 768 < r ? frameWidth = "380px" : r < 769 && 544 < r ? frameWidth = "320px" : r < 545 && (frameWidth = "260px"), $iframe.css({width: frameWidth}));4263    }4264    function animateTranslate(t, e, r) {4265        if (t && "object" == typeof e) {4266            var a = "y" != e.type ? "translateX" : "translateY", s = e.unit ? e.unit : "%", o = e.from || 0;4267            srv.jQuery({noop: o}).animate({noop: e.to}, {4268                duration: e.duration || 225, step: function (e, r) {4269                    t.css("transform", a + "(" + e + s + ")");4270                }, complete: r || !14271            });4272        }4273    }4274    function clearForm(e) {4275        var r = srv.jQuery('[data-key="' + e + '"]'), t = r.closest(".surveyWindowWrap"),4276            a = srv.jQuery('[data-button-for="' + e + '"]');4277        return r.remove(), t.remove(), a.remove(), srv.jQuery("#SRVvars" + e).remove(), -1 < ALL_KEYS.indexOf(e) && ALL_KEYS.splice(ALL_KEYS.indexOf(e), 1), delete srv[e], srv.log("Form " + e + " cleared."), !0;4278    }4279    function getPreselectValue(e, r) {4280        return !!r && srv.getParameterByName(e, LOCATION_REF);4281    }4282    function loadWebFonts(e, r) {4283        if ("string" == typeof e && (e = [].concat(e)), e instanceof Array) {4284            var t = srv.jQuery.map(e, function (e) {4285                if (e && !fontIsLoaded(e)) return e;4286            });4287            if (t.length) {4288                var a = srv.jQuery.map(t, function (e) {4289                    return e.replace(/ /g, "+");4290                }).join("|");4291                srv.log("Loading fonts: " + t.join(", "), !1, "info");4292                var s = "https://fonts.mopinion.com/css?family=" + a;4293                srv.appendStyle(s, "CUSTOMSRVFONTS" + r);4294            }4295        }4296    }4297    function fontIsLoaded(e) {4298        if (document.fonts && "function" == typeof document.fonts.check && window.chrome) return document.fonts.check("12px " + e);4299        var r = document.createElement("span");4300        r.innerHTML = "giItT1WQy@!-/#", r.style.position = "absolute", r.style.left = "-10000px", r.style.top = "-10000px", r.style.fontSize = "300px", r.style.fontFamily = "sans-serif", r.style.fontVariant = "normal", r.style.fontStyle = "normal", r.style.fontWeight = "normal", r.style.letterSpacing = "0", document.body.appendChild(r);4301        var t = r.offsetWidth;4302        r.style.fontFamily = e + ", sans-serif";4303        var a = r.offsetWidth !== t;4304        return r.parentNode.removeChild(r), a;4305    }4306    function addAnalytics(e, r) {4307        var t, a, s, o, n, i = e.GA_TRACKING_ID || srv[r].ga_id || "";4308        !e.TYPE && e.load_analytics && i ? (srv.appendScript("https://www.googletagmanager.com/gtag/js?id=" + i), window.dataLayer = window.dataLayer || [], window.gtag = function () {4309            dataLayer.push(arguments);4310        }, gtag("js", new Date), gtag("config", i)) : "analytics.js" === e.TYPE && e.load_analytics && i && (t = window, a = document, s = "ga", t.GoogleAnalyticsObject = s, t.ga = t.ga || function () {4311            (t.ga.q = t.ga.q || []).push(arguments);4312        }, t.ga.l = 1 * new Date, o = a.createElement("script"), n = a.getElementsByTagName("script")[0], o.async = 1, o.src = "https://www.google-analytics.com/analytics.js", n.parentNode.insertBefore(o, n), ga("create", i, "auto"), ga("send", "pageview"));4313    }4314    var Sobject = {};4315    Sobject.resizeListener = resizeListener, Sobject.callParentWindow = callParentWindow, Sobject.callChildWindow = callChildWindow, Sobject.resizeForm = resizeForm, Sobject.send = send, Sobject.appendScript = appendScript, Sobject.appendStyle = appendStyle, Sobject.loadHelpers = loadHelpers, Sobject.loadSurvey = loadSurvey, Sobject.loadJSON = loadJSON, Sobject.buildForm = buildForm, Sobject.generateHTML = generateHTML, Sobject.log = log, Sobject.prevPage = prevPage, Sobject.nextPage = nextPage, Sobject.setValue = setValue, Sobject.submitSurvey = submitSurvey, Sobject.openModal = openModal, Sobject.closeModal = closeModal, Sobject.hideLoader = hideLoader, Sobject.request = request, Sobject.updateProgress = updateProgress, Sobject.getLanguage = getLanguage, Sobject.removeButton = removeButton, Sobject.addButton = addButton, Sobject.showButton = showButton, Sobject.getParameterByName = getParameterByName, Sobject.makeStars = makeStars, Sobject.niceSelect = niceSelect, Sobject.setCookie = setCookie, Sobject.getCookie = getCookie, Sobject.setCookies = setCookies, Sobject.triggerEvent = triggerEvent, Sobject.on = EventHandler, Sobject.initEvent = EventInitializer, Sobject.loadjQuery = loadjQuery, Sobject.loadjQueryHandler = loadjQueryHandler, Sobject.proActiveOpen = proActiveOpen, Sobject.userExit = userExit, Sobject.triggerForUrl = triggerForUrl, Sobject.setPrefill = setPrefill, Sobject.hideBlock = hideBlock, Sobject.unhideBlock = unhideBlock, Sobject.scrollToFormPos = scrollToFormPos, Sobject.initCapture = initCapture, Sobject.catchCapture = catchCapture, Sobject.showModalPostCapture = showModalPostCapture, Sobject.clearCaptureEvents = clearCaptureEvents, Sobject.clearCaptureValues = clearCaptureValues, Sobject.getMeta = getMeta, Sobject.returnMeta = returnMeta, Sobject.fetchVariable = fetchVariable, Sobject.open = opener, Sobject.clearForm = clearForm, Sobject.loadWebFonts = loadWebFonts, Sobject.preloadSlider = preloadSlider, Sobject.openSlider = openSlider, Sobject.closeSlider = closeSlider, Sobject.sliderWidth = sliderWidth, Sobject.show_log = show_log, Sobject.ALL_KEYS = ALL_KEYS, Sobject.PUBLIC_LANDING = PUBLIC_LANDING, Sobject.LOCATION_REF = LOCATION_REF, Sobject.eventsHandlers = eventsHandlers;4316    try {4317        srv.log("loading Surveys " + version, !1, "info");4318    } catch (e) {4319    }4320    return Sobject;4321}(), mopinion = srv, __MS = function () {4322    MSobject = {};4323    var h = new RegExp(/^len[0-9]+/), _ = new RegExp(/^max_len[0-9]+/),4324        g = (new RegExp(/^(((0)[1-9]{2}[0-9][-]?[1-9][0-9]{5})|((\+31|0|0031)[1-9][0-9][-]?[1-9][0-9]{6}))|((\\+31|0|0031)6){1}[-]?[1-9]{1}[0-9]{7}$/), new RegExp(/^[1-9][0-9]{3}[\s]?[A-Za-z]{2}$/i), new RegExp(/^(\+){0,1}[0-9-.\(\)]{6,25}$/));4325    function b(e) {4326        var r = e.indexOf("@"), t = e.lastIndexOf(".");4327        return !(r < 1 || t < r + 2 || t + 2 >= e.length);4328    }4329    function j(e, r) {4330        for (var t = 0; t < e.length; t++) if ("string" == typeof r) {4331            if (e[t] == r) return !0;4332        } else if ("object" == typeof r && e[t].match(r)) return !0;4333        return !1;4334    }4335    return Array.prototype.indexOf || (Array.prototype.indexOf = function (e) {4336        for (var r = 0; r < this.length; r++) if (this[r] === e) return r;4337        return -1;4338    }), "function" != typeof window.CustomEvent && (window.customEvent = function (e, r) {4339        r = r || {bubbles: !1, cancelable: !1, detail: void 0};4340        var t = document.createEvent("CustomEvent");4341        return t.initCustomEvent(e, r.bubbles, r.cancelable, r.detail), t;4342    }), MSobject.inArray = j, MSobject.log = function (e, r, t) {4343        if (t && "log" != t) {4344            if ("warn" == t) {4345                if (srv.show_log || !0 === r) try {4346                    console.warn(e);4347                } catch (e) {4348                }4349            } else if ("info" == t) {4350                if (srv.show_log || !0 === r) try {4351                    console.info(e);4352                } catch (e) {4353                }4354            } else if ("error" == t) throw new Error(e);4355        } else if (srv.show_log || !0 === r) try {4356            console.log(e);4357        } catch (e) {4358        }4359    }, MSobject.validateAll = function (r, t) {4360        var a = !0;4361        if (r) {4362            var s = [];4363            for (var o in r) "string" == typeof r[o] && jQuery("#" + r[o]).hasClass("req") && s.push(jQuery("#" + r[o])[0]);4364        } else s = jQuery(".req").toArray();4365        for (var n = 0; n < s.length; n++) {4366            var i = s[n];4367            if (-1 != navigator.userAgent.indexOf("MSIE 8.0") ? (setTimeout(function () {4368                "object" == typeof i && i.focus();4369            }, 0), setTimeout(function () {4370                "object" == typeof i && i.blur();4371            }, 0)) : (i.focus(), i.blur()), "" == i.value || null == i.value || -1 != i.className.indexOf("numeric") && 0 == i.value || -1 != i.className.indexOf("phone") && !i.value.match(g)) {4372                var l = __MS.validateField(i);4373                t && t(i, l), a = !1;4374            }4375            "checkbox" == i.type && (__MS.unsetError(i), i.checked || (__MS.setError(i), a = !1));4376        }4377        if (0 != this.errors.length) if (r) for (e in this.errors) "function" != typeof this.errors[e] && -1 < r.indexOf(this.errors[e]) && (a = !1); else a = !1;4378        return a;4379    }, MSobject.validateEmail = b, MSobject.validateField = function (e, r, t) {4380        if ($field = jQuery(e), $field[0]) {4381            var a, s = !0, o = !1, n = !1, i = !0, l = !0, d = !0, c = !1, u = e.className.split(" "),4382                v = $field.hasClass("email"), p = $field.hasClass("numeric"), f = $field.hasClass("phone"),4383                y = $field.hasClass("req");4384            if (j(u, h) || j(u, _)) for (var m = 0; m < u.length; m++) -1 < u[m].search(h) && (n = u[m].replace("len", "")), -1 < u[m].search(_) && (o = u[m].replace("max_len", ""));4385            return jQuery.trim(e.value).length < n ? (s = !1, a = "too_short") : !1 !== o && jQuery.trim(e.value).length > o && e.value !== r && (s = !1, a = "too_long"), f && $field.val() != r && "" !== jQuery.trim($field.val()) && (e.value.match(g) || (d = !1)), p && $field.val() !== r && "" !== jQuery.trim($field.val()) && ((parseInt($field.val()) || parseFloat($field.val())) && isFinite($field.val()) && 0 != parseFloat($field.val()) || (l = !1)), v && "" !== jQuery.trim($field.val()) && (i = b($field.val())), !1 === l || !1 === i || !1 === d || !1 === s || ("" === jQuery.trim($field.val()) || null === $field.val() || $field.val() === r) && y ? (null !== r && "" === jQuery.trim($field.val()) && void 0 !== r && $field.val(r), i ? d ? l ? a || (a = "required") : a = "invalid_number" : a = "invalid_phone" : a = "invalid_email", __MS.setError($field), c = !1) : (__MS.unsetError($field), c = !0), return_obj = {4386                state: c,4387                code: a4388            };4389        }4390    }, MSobject.setError = function (e) {4391        var r = e.attr("id");4392        jQuery("#" + r + "_error_style"), j(this.errors, r) || this.errors.push(r), e.addClass("error"), e.parent().addClass("error");4393    }, MSobject.unsetError = function (e) {4394        e instanceof jQuery == 0 && (e = jQuery(e));4395        var t = e.attr("id"), a = this.errors;4396        e.removeClass("error"), e.parent().removeClass("error"), jQuery("#" + t + "_error").remove(), jQuery(a).each(function (e, r) {4397            r == t && delete a[e];4398        }), this.errors = function (e) {4399            var r = [];4400            for (var t in e) "function" != typeof e[t] && void 0 !== e[t] && r.push(e[t]);4401            return r;4402        }(a);4403    }, MSobject.getCookie = function (e) {4404        var r, t, a, s = document.cookie.split(";");4405        for (r = 0; r < s.length; r++) if (t = s[r].substr(0, s[r].indexOf("=")), a = s[r].substr(s[r].indexOf("=") + 1), (t = t.replace(/^\s+|\s+$/g, "")) == e) return unescape(a);4406    }, MSobject.setCookie = function (e, r, t, a, s) {4407        var o = new Date;4408        -1 == t ? (o.setMonth(o.getMonth() - 1), cexp = "expires=" + o + ";") : 1 == t ? (o.setMonth(o.getMonth() + 1), cexp = "expires=" + o + ";") : cexp = "", cpath = a ? "path=" + a + ";" : "path=" + document.location.pathname + ";", cdomain = s ? "domain=" + s + ";" : "";4409        var n = e + "=" + r + ";" + cexp + cpath + cdomain;4410        document.cookie = n;4411    }, MSobject.isDOM = function (e) {4412        return "HTMLElement" in window ? e && e instanceof HTMLElement : !(!e || "object" != typeof e || 1 !== e.nodeType || !e.nodeName);4413    }, MSobject.hammerTime = function () {4414        var e = window.MutationObserver || window.WebKitMutationObserver,4415            r = "ontouchstart" in window || window.DocumentTouch && document instanceof DocumentTouch;4416        if (void 0 === document.documentElement.style["touch-action"] && !document.documentElement.style["-ms-touch-action"] && r && e) {4417            window.Hammer = window.Hammer || {};4418            var t = /touch-action[:][\s]*(none)[^;'"]*/, a = /touch-action[:][\s]*(manipulation)[^;'"]*/,4419                s = /touch-action/, o = !!navigator.userAgent.match(/(iPad|iPhone|iPod)/g), n = function () {4420                    try {4421                        var e = document.createElement("canvas");4422                        return !(!window.WebGLRenderingContext || !e.getContext("webgl") && !e.getContext("experimental-webgl"));4423                    } catch (e) {4424                        return !1;4425                    }4426                }() && o;4427            window.Hammer.time = {4428                getTouchAction: function (e) {4429                    return this.checkStyleString(e.getAttribute("style"));4430                }, checkStyleString: function (e) {4431                    if (s.test(e)) return t.test(e) ? "none" : !a.test(e) || "manipulation";4432                }, shouldHammer: function (e) {4433                    var r = this.hasParent(e.target);4434                    return !(!r || n && !(Date.now() - e.target.lastStart < 125)) && r;4435                }, touchHandler: function (e) {4436                    var r = e.target.getBoundingClientRect(), t = r.top !== this.pos.top || r.left !== this.pos.left,4437                        a = this.shouldHammer(e);4438                    ("none" === a || !1 === t && "manipulation" === a) && ("touchend" === e.type && (e.target.focus(), setTimeout(function () {4439                        e.target.click();4440                    }, 0)), e.preventDefault()), this.scrolled = !1, delete e.target.lastStart;4441                }, touchStart: function (e) {4442                    this.pos = e.target.getBoundingClientRect(), n && this.hasParent(e.target) && (e.target.lastStart = Date.now());4443                }, styleWatcher: function (e) {4444                    e.forEach(this.styleUpdater, this);4445                }, styleUpdater: function (e) {4446                    if (e.target.updateNext) e.target.updateNext = !1; else {4447                        var r = this.getTouchAction(e.target);4448                        r ? "none" !== r && (e.target.hadTouchNone = !1) : !r && (e.oldValue && this.checkStyleString(e.oldValue) || e.target.hadTouchNone) && (e.target.hadTouchNone = !0, e.target.updateNext = !1, e.target.setAttribute("style", e.target.getAttribute("style") + " touch-action: none;"));4449                    }4450                }, hasParent: function (e) {4451                    for (var r, t = e; t && t.parentNode; t = t.parentNode) if (r = this.getTouchAction(t)) return r;4452                    return !1;4453                }, installStartEvents: function () {4454                    document.addEventListener("touchstart", this.touchStart.bind(this)), document.addEventListener("mousedown", this.touchStart.bind(this));4455                }, installEndEvents: function () {4456                    document.addEventListener("touchend", this.touchHandler.bind(this), !0), document.addEventListener("mouseup", this.touchHandler.bind(this), !0);4457                }, installObserver: function () {4458                    this.observer = new e(this.styleWatcher.bind(this)).observe(document, {4459                        subtree: !0,4460                        attributes: !0,4461                        attributeOldValue: !0,4462                        attributeFilter: ["style"]4463                    });4464                }, install: function () {4465                    this.installEndEvents(), this.installStartEvents(), this.installObserver();4466                }4467            }, window.Hammer.time.install();4468        }4469    }, MSobject.extend = function (e) {4470        e = e || {};4471        for (var r = 1; r < arguments.length; r++) if (arguments[r]) for (var t in arguments[r]) arguments[r].hasOwnProperty(t) && (e[t] = arguments[r][t]);4472        return e;4473    }, MSobject.errors = [], MSobject;...frames.js
Source:frames.js  
...616    const result = await arrayHandle.evaluateExpressionAndWaitForSignals(expression, isFunction, true, arg);617    arrayHandle.dispose();618    return result;619  }620  async maskSelectors(selectors) {621    const context = await this._utilityContext();622    const injectedScript = await context.injectedScript();623    await injectedScript.evaluate((injected, {624      parsed625    }) => {626      injected.maskSelectors(parsed);627    }, {628      parsed: selectors629    });630  }631  async querySelectorAll(selector) {632    const pair = await this.resolveFrameForSelectorNoWait(selector, {});633    if (!pair) return [];634    return this._page.selectors._queryAll(pair.frame, pair.info, undefined, true635    /* adoptToMain */636    );637  }638  async queryCount(selector) {639    const pair = await this.resolveFrameForSelectorNoWait(selector);640    if (!pair) throw new Error(`Error: failed to find frame for selector "${selector}"`);...screenshotter.js
Source:screenshotter.js  
...203      if (pair) framesToParsedSelectors.set(pair.frame, pair.info.parsed);204    }));205    progress.throwIfAborted(); // Avoid extra work.206    await Promise.all([...framesToParsedSelectors.keys()].map(async frame => {207      await frame.maskSelectors(framesToParsedSelectors.get(frame));208    }));209    progress.cleanupWhenAborted(() => this._page.hideHighlight());210    return true;211  }212  async _screenshot(progress, format, documentRect, viewportRect, fitsViewport, options) {213    if (options.__testHookBeforeScreenshot) await options.__testHookBeforeScreenshot();214    progress.throwIfAborted(); // Screenshotting is expensive - avoid extra work.215    const shouldSetDefaultBackground = options.omitBackground && format === 'png';216    if (shouldSetDefaultBackground) {217      await this._page._delegate.setBackgroundColor({218        r: 0,219        g: 0,220        b: 0,221        a: 0...Using AI Code Generation
1const { maskSelectors } = require('@playwright/test/lib/utils/instrument');2const { chromium } = require('playwright');3(async () => {4  const browser = await chromium.launch();5  const context = await browser.newContext();6  const page = await context.newPage();7  await page.fill('#search', 'Hello World');8  await page.click('text=Get Started');9  await page.screenshot({ path: `screenshot.png` });10  await browser.close();11})();12const { maskSelectors } = require('@playwright/test/lib/utils/instrument');13const { chromium } = require('playwright');14(async () => {15  const browser = await chromium.launch();16  const context = await browser.newContext();17  const page = await context.newPage();18  await page.fill('#search', 'Hello World');19  await page.click('text=Get Started');20  await page.screenshot({ path: `screenshot.png` });21  await browser.close();22})();23const maskedSelectors = maskSelectors(['#search', 'text=Get Started'], {Using AI Code Generation
1const { maskSelectors } = require('@playwright/test/lib/utils/stackTrace');2const stack = new Error().stack;3console.log(maskSelectors(stack));4const { maskSelectors } = require('@playwright/test/lib/utils/stackTrace');5const stack = new Error().stack;6console.log(maskSelectors(stack, { maskOptions: { rootDir: __dirname } }));Using AI Code Generation
1const { maskSelectors } = require('@playwright/test/lib/utils/selectorMasking');2const masked = maskSelectors('div[data-testid="foo"]', ['div[data-testid="foo"]']);3console.log(masked);4const { maskSelectors } = require('@playwright/test/lib/utils/selectorMasking');5const masked = maskSelectors('div[data-testid="foo"]', ['div[data-testid="foo"]']);6console.log(masked);7const { maskSelectors } = require('@playwright/test/lib/utils/selectorMasking');8const masked = maskSelectors('div[data-testid="foo"]', ['div[data-testid="foo"]']);9console.log(masked);10const { maskSelectors } = require('@playwright/test/lib/utils/selectorMasking');11const masked = maskSelectors('div[data-testid="foo"]', ['div[data-testid="foo"]']);12console.log(masked);13const { maskSelectors } = require('@playwright/test/lib/utils/selectorMasking');14const masked = maskSelectors('div[data-testid="foo"]', ['div[data-testid="foo"]']);15console.log(masked);16const { maskSelectors } = require('@playwright/test/lib/utils/selectorMasking');17const masked = maskSelectors('div[data-testid="foo"]', ['div[data-testid="foo"]']);18console.log(masked);19const { maskSelectors } = require('@playwright/test/lib/utils/selectorMasking');20const masked = maskSelectors('div[data-testid="foo"]', ['div[data-testid="foo"]']);21console.log(masked);Using AI Code Generation
1const { chromium } = require('playwright');2const { maskSelectors } = require('playwright/lib/server/recorder/recorderUtils');3(async () => {4  const browser = await chromium.launch();5  const context = await browser.newContext();6  const page = await context.newPage();7  const element = await page.$('a[href="/docs"]');8  const maskedSelector = maskSelectors([await element.getAttribute('href')], page);9  console.log(maskedSelector);10  await browser.close();11})();Using AI Code Generation
1const { maskSelectors } = require('@playwright/test/lib/utils/selectorEngine');2console.log(maskSelectors('div#id.class1.class2', ['class1', 'class2']));3const { maskSelectors } = require('@playwright/test/lib/utils/selectorEngine');4console.log(maskSelectors('div#id.class1.class2', ['class1', 'class2'], ''));5const { maskSelectors } = require('@playwright/test/lib/utils/selectorEngine');6console.log(maskSelectors('div#id.class1.class2', ['class1', 'class2'], 'class'));7const { maskSelectors } = require('@playwright/test/lib/utils/selectorEngine');8console.log(maskSelectors('div#id.class1.class2', ['class1', 'class2'], 'class1'));9const { maskSelectors } = require('@playwright/test/lib/utils/selectorEngine');10console.log(maskSelectors('div#id.class1.class2', ['class1', 'class2'], 'class2'));11const { maskSelectors } = require('@playwright/test/lib/utils/selectorEngine');12console.log(maskSelectors('div#id.class1.class2', ['class1', 'class2'], 'class3'));13const { maskSelectors } = require('@playwright/test/lib/utils/selectorEngine');14console.log(maskSelectors('div#id.class1.class2', ['class1', 'class2'], 'class1 class2'));15const { maskSelectors } = require('@playwright/test/lib/utilsUsing AI Code Generation
1const { maskSelectors } = require('playwright/lib/server/dom.js');2const masked = maskSelectors('div[data-test="test"]', ['data-test']);3const { maskText } = require('playwright/lib/server/dom.js');4const masked = maskText('div[data-test="test"]', 'test');5const { parseSelector } = require('playwright/lib/server/dom.js');6const parsed = parseSelector('div[data-test="test"]');7const { serializeAsCallArgument } = require('playwright/lib/server/serializers.js');8const serialized = serializeAsCallArgument('test');9const { serializeError } = require('playwright/lib/server/serializers.js');10const serialized = serializeError(new Error('Error'));11const { serializeResult } = require('playwright/lib/server/serializers.js');12const serialized = serializeResult('test');13const { serializeValue } = require('playwright/lib/server/serializers.js');14const serialized = serializeValue('test');15const { setDebugMode } = require('playwright/lib/server/supplements.js');16const debugMode = setDebugMode(true);Using AI Code Generation
1const {chromium} = require('playwright');2const { maskSelectors } = require('@playwright/test/lib/utils/maskSelectors');3const mask = maskSelectors('test.js', [4]);5const unmask = maskSelectors('test.js', [6]);7(async () => {8  const browser = await chromium.launch({ headless: false });9  const page = await browser.newPage();10  const context = await browser.newContext();11  const page2 = await context.newPage();12  await page.click(mask('.selector1'));13  await page2.click(unmask('.selector2'));14  await browser.close();15})();LambdaTest’s Playwright tutorial will give you a broader idea about the Playwright automation framework, its unique features, and use cases with examples to exceed your understanding of Playwright testing. This tutorial will give A to Z guidance, from installing the Playwright framework to some best practices and advanced concepts.
Get 100 minutes of automation test minutes FREE!!
