PageSourceSearch

https://www.finegael.ie/app/themes/finegael/dist/scripts/script.min.js?ver=1790855612

js finegael.ie collected 2026-10-02 03:17:14 UTC 780,068 bytes, 21,234 lines download raw bytes

vendor: 7,195 bytes, lines 1-215
1/*! jQuery v3.2.0 | (c) JS Foundation and other contributors | jquery.org/license */
2/*!
3 * Bootstrap v3.3.7 (http://getbootstrap.com)
4 * Copyright 2011-2016 Twitter, Inc.
5 * Licensed under the MIT license
6 */
7if (function(t, e) {
8    "use strict";
9    "object" == typeof module && "object" == typeof module.exports ? module.exports = t.document ? e(t, !0) : function(t) {
10        if (!t.document)
11            throw new Error("jQuery requires a window with a document");
12        return e(t)
13    }
14    : e(t)
15}("undefined" != typeof window ? window : this, function(t, e) {
16    "use strict";
17    var n = []
18      , r = t.document
19      , i = Object.getPrototypeOf
20      , o = n.slice
21      , a = n.concat
22      , s = n.push
23      , u = n.indexOf
24      , l = {}
25      , c = l.toString
26      , h = l.hasOwnProperty
27      , d = h.toString
28      , f = d.call(Object)
29      , p = {};
30    function g(t, e) {
31        e = e || r;
32        var n = e.createElement("script");
33        n.text = t,
34        e.head.appendChild(n).parentNode.removeChild(n)
35    }
36    var m = "3.2.0"
37      , y = function(t, e) {
38        return new y.fn.init(t,e)
39    }
40      , v = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g
41      , b = /^-ms-/
42      , w = /-([a-z])/g
43      , x = function(t, e) {
44        return e.toUpperCase()
45    };
46    y.fn = y.prototype = {
47        jquery: m,
48        constructor: y,
49        length: 0,
50        toArray: function() {
51            return o.call(this)
52        },
53        get: function(t) {
54            return null == t ? o.call(this) : t < 0 ? this[t + this.length] : this[t]
55        },
56        pushStack: function(t) {
57            var e = y.merge(this.constructor(), t);
58            return e.prevObject = this,
59            e
60        },
61        each: function(t) {
62            return y.each(this, t)
63        },
64        map: function(t) {
65            return this.pushStack(y.map(this, function(e, n) {
66                return t.call(e, n, e)
67            }))
68        },
69        slice: function() {
70            return this.pushStack(o.apply(this, arguments))
71        },
72        first: function() {
73            return this.eq(0)
74        },
75        last: function() {
76            return this.eq(-1)
77        },
78        eq: function(t) {
79            var e = this.length
80              , n = +t + (t < 0 ? e : 0);
81            return this.pushStack(n >= 0 && n < e ? [this[n]] : [])
82        },
83        end: function() {
84            return this.prevObject || this.constructor()
85        },
86        push: s,
87        sort: n.sort,
88        splice: n.splice
89    },
90    y.extend = y.fn.extend = function() {
91        var t, e, n, r, i, o, a = arguments[0] || {}, s = 1, u = arguments.length, l = !1;
92        for ("boolean" == typeof a && (l = a,
93        a = arguments[s] || {},
94        s++),
95        "object" == typeof a || y.isFunction(a) || (a = {}),
96        s === u && (a = this,
97        s--); s < u; s++)
98            if (null != (t = arguments[s]))
99                for (e in t)
100                    n = a[e],
101                    r = t[e],
102                    a !== r && (l && r && (y.isPlainObject(r) || (i = Array.isArray(r))) ? (i ? (i = !1,
103                    o = n && Array.isArray(n) ? n : []) : o = n && y.isPlainObject(n) ? n : {},
104                    a[e] = y.extend(l, o, r)) : void 0 !== r && (a[e] = r));
105        return a
106    }
107    ,
108    y.extend({
109        expando: "jQuery" + (m + Math.random()).replace(/\D/g, ""),
110        isReady: !0,
111        error: function(t) {
112            throw new Error(t)
113        },
114        noop: function() {},
115        isFunction: function(t) {
116            return "function" === y.type(t)
117        },
118        isWindow: function(t) {
119            return null != t && t === t.window
120        },
121        isNumeric: function(t) {
122            var e = y.type(t);
123            return ("number" === e || "string" === e) && !isNaN(t - parseFloat(t))
124        },
125        isPlainObject: function(t) {
126            var e, n;
127            return !(!t || "[object Object]" !== c.call(t) || (e = i(t)) && ("function" != typeof (n = h.call(e, "constructor") && e.constructor) || d.call(n) !== f))
128        },
129        isEmptyObject: function(t) {
130            var e;
131            for (e in t)
132                return !1;
133            return !0
134        },
135        type: function(t) {
136            return null == t ? t + "" : "object" == typeof t || "function" == typeof t ? l[c.call(t)] || "object" : typeof t
137        },
138        globalEval: function(t) {
139            g(t)
140        },
141        camelCase: function(t) {
142            return t.replace(b, "ms-").replace(w, x)
143        },
144        each: function(t, e) {
145            var n, r = 0;
146            if (_(t))
147                for (n = t.length; r < n && !1 !== e.call(t[r], r, t[r]); r++)
148                    ;
149            else
150                for (r in t)
151                    if (!1 === e.call(t[r], r, t[r]))
152                        break;
153            return t
154        },
155        trim: function(t) {
156            return null == t ? "" : (t + "").replace(v, "")
157        },
158        makeArray: function(t, e) {
159            var n = e || [];
160            return null != t && (_(Object(t)) ? y.merge(n, "string" == typeof t ? [t] : t) : s.call(n, t)),
161            n
162        },
163        inArray: function(t, e, n) {
164            return null == e ? -1 : u.call(e, t, n)
165        },
166        merge: function(t, e) {
167            for (var n = +e.length, r = 0, i = t.length; r < n; r++)
168                t[i++] = e[r];
169            return t.length = i,
170            t
171        },
172        grep: function(t, e, n) {
173            for (var r = [], i = 0, o = t.length, a = !n; i < o; i++)
174                !e(t[i], i) !== a && r.push(t[i]);
175            return r
176        },
177        map: function(t, e, n) {
178            var r, i, o = 0, s = [];
179            if (_(t))
180                for (r = t.length; o < r; o++)
181                    null != (i = e(t[o], o, n)) && s.push(i);
182            else
183                for (o in t)
184                    null != (i = e(t[o], o, n)) && s.push(i);
185            return a.apply([], s)
186        },
187        guid: 1,
188        proxy: function(t, e) {
189            var n, r, i;
190            if ("string" == typeof e && (n = t[e],
191            e = t,
192            t = n),
193            y.isFunction(t))
194                return r = o.call(arguments, 2),
195                i = function() {
196                    return t.apply(e || this, r.concat(o.call(arguments)))
197                }
198                ,
199                i.guid = t.guid = t.guid || y.guid++,
200                i
201        },
202        now: Date.now,
203        support: p
204    }),
205    "function" == typeof Symbol && (y.fn[Symbol.iterator] = n[Symbol.iterator]),
206    y.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "), function(t, e) {
207        l["[object " + e + "]"] = e.toLowerCase()
208    });
209    function _(t) {
210        var e = !!t && "length"in t && t.length
211          , n = y.type(t);
212        return "function" !== n && !y.isWindow(t) && ("array" === n || 0 === e || "number" == typeof e && e > 0 && e - 1 in t)
213    }
214    var C = function(t) {
215        var e, n, r, i, o, a, s, u, l, c, h, d, f, p, g, m, y, v, b, w = "sizzle" + 1 * new Date, x = t.document, _ = 0, C = 0, k = at(
vendor: 31,940 bytes, lines 215-941
215), j = at(), T = at(), S = function(t, e) {
216            return t === e && (h = !0),
217            0
218        }, E = {}.hasOwnProperty, A = [], M = A.pop, Q = A.push, $ = A.push, D = A.slice, I = function(t, e) {
219            for (var n = 0, r = t.length; n < r; n++)
220                if (t[n] === e)
221                    return n;
222            return -1
223        }, N = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", F = "[\\x20\\t\\r\\n\\f]", L = "(?:\\\\.|[\\w-]|[^\0-\\xa0])+", P = "\\[" + F + "*(" + L + ")(?:" + F + "*([*^$|!~]?=)" + F + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + L + "))|)" + F + "*\\]", O = ":(" + L + ")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|" + P + ")*)|.*)\\)|)", q = new RegExp(F + "+","g"), R = new RegExp("^" + F + "+|((?:^|[^\\\\])(?:\\\\.)*)" + F + "+$","g"), z = new RegExp("^" + F + "*," + F + "*"), H = new RegExp("^" + F + "*([>+~]|" + F + ")" + F + "*"), B = new RegExp("=" + F + "*([^\\]'\"]*?)" + F + "*\\]","g"), V = new RegExp(O), U = new RegExp("^" + L + "$"), W = {
224            ID: new RegExp("^#(" + L + ")"),
225            CLASS: new RegExp("^\\.(" + L + ")"),
226            TAG: new RegExp("^(" + L + "|[*])"),
227            ATTR: new RegExp("^" + P),
228            PSEUDO: new RegExp("^" + O),
229            CHILD: new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + F + "*(even|odd|(([+-]|)(\\d*)n|)" + F + "*(?:([+-]|)" + F + "*(\\d+)|))" + F + "*\\)|)","i"),
230            bool: new RegExp("^(?:" + N + ")$","i"),
231            needsContext: new RegExp("^" + F + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + F + "*((?:-\\d)?\\d*)" + F + "*\\)|)(?=[^-]|$)","i")
232        }, K = /^(?:input|select|textarea|button)$/i, G = /^h\d$/i, Y = /^[^{]+\{\s*\[native \w/, J = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, X = /[+~]/, Z = new RegExp("\\\\([\\da-f]{1,6}" + F + "?|(" + F + ")|.)","ig"), tt = function(t, e, n) {
233            var r = "0x" + e - 65536;
234            return r !== r || n ? e : r < 0 ? String.fromCharCode(r + 65536) : String.fromCharCode(r >> 10 | 55296, 1023 & r | 56320)
235        }, et = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g, nt = function(t, e) {
236            return e ? "\0" === t ? "�" : t.slice(0, -1) + "\\" + t.charCodeAt(t.length - 1).toString(16) + " " : "\\" + t
237        }, rt = function() {
238            d()
239        }, it = mt(function(t) {
240            return !0 === t.disabled && ("form"in t || "label"in t)
241        }, {
242            dir: "parentNode",
243            next: "legend"
244        });
245        try {
246            $.apply(A = D.call(x.childNodes), x.childNodes),
247            A[x.childNodes.length].nodeType
248        } catch (t) {
249            $ = {
250                apply: A.length ? function(t, e) {
251                    Q.apply(t, D.call(e))
252                }
253                : function(t, e) {
254                    for (var n = t.length, r = 0; t[n++] = e[r++]; )
255                        ;
256                    t.length = n - 1
257                }
258            }
259        }
260        function ot(t, e, r, i) {
261            var o, s, l, c, h, p, y, v = e && e.ownerDocument, _ = e ? e.nodeType : 9;
262            if (r = r || [],
263            "string" != typeof t || !t || 1 !== _ && 9 !== _ && 11 !== _)
264                return r;
265            if (!i && ((e ? e.ownerDocument || e : x) !== f && d(e),
266            e = e || f,
267            g)) {
268                if (11 !== _ && (h = J.exec(t)))
269                    if (o = h[1]) {
270                        if (9 === _) {
271                            if (!(l = e.getElementById(o)))
272                                return r;
273                            if (l.id === o)
274                                return r.push(l),
275                                r
276                        } else if (v && (l = v.getElementById(o)) && b(e, l) && l.id === o)
277                            return r.push(l),
278                            r
279                    } else {
280                        if (h[2])
281                            return $.apply(r, e.getElementsByTagName(t)),
282                            r;
283                        if ((o = h[3]) && n.getElementsByClassName && e.getElementsByClassName)
284                            return $.apply(r, e.getElementsByClassName(o)),
285                            r
286                    }
287                if (n.qsa && !T[t + " "] && (!m || !m.test(t))) {
288                    if (1 !== _)
289                        v = e,
290                        y = t;
291                    else if ("object" !== e.nodeName.toLowerCase()) {
292                        for ((c = e.getAttribute("id")) ? c = c.replace(et, nt) : e.setAttribute("id", c = w),
293                        p = a(t),
294                        s = p.length; s--; )
295                            p[s] = "#" + c + " " + gt(p[s]);
296                        y = p.join(","),
297                        v = X.test(t) && ft(e.parentNode) || e
298                    }
299                    if (y)
300                        try {
301                            return $.apply(r, v.querySelectorAll(y)),
302                            r
303                        } catch (t) {} finally {
304                            c === w && e.removeAttribute("id")
305                        }
306                }
307            }
308            return u(t.replace(R, "$1"), e, r, i)
309        }
310        function at() {
311            var t = [];
312            function e(n, i) {
313                return t.push(n + " ") > r.cacheLength && delete e[t.shift()],
314                e[n + " "] = i
315            }
316            return e
317        }
318        function st(t) {
319            return t[w] = !0,
320            t
321        }
322        function ut(t) {
323            var e = f.createElement("fieldset");
324            try {
325                return !!t(e)
326            } catch (t) {
327                return !1
328            } finally {
329                e.parentNode && e.parentNode.removeChild(e),
330                e = null
331            }
332        }
333        function lt(t, e) {
334            for (var n = t.split("|"), i = n.length; i--; )
335                r.attrHandle[n[i]] = e
336        }
337        function ct(t, e) {
338            var n = e && t
339              , r = n && 1 === t.nodeType && 1 === e.nodeType && t.sourceIndex - e.sourceIndex;
340            if (r)
341                return r;
342            if (n)
343                for (; n = n.nextSibling; )
344                    if (n === e)
345                        return -1;
346            return t ? 1 : -1
347        }
348        function ht(t) {
349            return function(e) {
350                return "form"in e ? e.parentNode && !1 === e.disabled ? "label"in e ? "label"in e.parentNode ? e.parentNode.disabled === t : e.disabled === t : e.isDisabled === t || e.isDisabled !== !t && it(e) === t : e.disabled === t : "label"in e && e.disabled === t
351            }
352        }
353        function dt(t) {
354            return st(function(e) {
355                return e = +e,
356                st(function(n, r) {
357                    for (var i, o = t([], n.length, e), a = o.length; a--; )
358                        n[i = o[a]] && (n[i] = !(r[i] = n[i]))
359                })
360            })
361        }
362        function ft(t) {
363            return t && void 0 !== t.getElementsByTagName && t
364        }
365        n = ot.support = {},
366        o = ot.isXML = function(t) {
367            var e = t && (t.ownerDocument || t).documentElement;
368            return !!e && "HTML" !== e.nodeName
369        }
370        ,
371        d = ot.setDocument = function(t) {
372            var e, i, a = t ? t.ownerDocument || t : x;
373            return a !== f && 9 === a.nodeType && a.documentElement ? (f = a,
374            p = f.documentElement,
375            g = !o(f),
376            x !== f && (i = f.defaultView) && i.top !== i && (i.addEventListener ? i.addEventListener("unload", rt, !1) : i.attachEvent && i.attachEvent("onunload", rt)),
377            n.attributes = ut(function(t) {
378                return t.className = "i",
379                !t.getAttribute("className")
380            }),
381            n.getElementsByTagName = ut(function(t) {
382                return t.appendChild(f.createComment("")),
383                !t.getElementsByTagName("*").length
384            }),
385            n.getElementsByClassName = Y.test(f.getElementsByClassName),
386            n.getById = ut(function(t) {
387                return p.appendChild(t).id = w,
388                !f.getElementsByName || !f.getElementsByName(w).length
389            }),
390            n.getById ? (r.filter.ID = function(t) {
391                var e = t.replace(Z, tt);
392                return function(t) {
393                    return t.getAttribute("id") === e
394                }
395            }
396            ,
397            r.find.ID = function(t, e) {
398                if (void 0 !== e.getElementById && g) {
399                    var n = e.getElementById(t);
400                    return n ? [n] : []
401                }
402            }
403            ) : (r.filter.ID = function(t) {
404                var e = t.replace(Z, tt);
405                return function(t) {
406                    var n = void 0 !== t.getAttributeNode && t.getAttributeNode("id");
407                    return n && n.value === e
408                }
409            }
410            ,
411            r.find.ID = function(t, e) {
412                if (void 0 !== e.getElementById && g) {
413                    var n, r, i, o = e.getElementById(t);
414                    if (o) {
415                        if ((n = o.getAttributeNode("id")) && n.value === t)
416                            return [o];
417                        for (i = e.getElementsByName(t),
418                        r = 0; o = i[r++]; )
419                            if ((n = o.getAttributeNode("id")) && n.value === t)
420                                return [o]
421                    }
422                    return []
423                }
424            }
425            ),
426            r.find.TAG = n.getElementsByTagName ? function(t, e) {
427                return void 0 !== e.getElementsByTagName ? e.getElementsByTagName(t) : n.qsa ? e.querySelectorAll(t) : void 0
428            }
429            : function(t, e) {
430                var n, r = [], i = 0, o = e.getElementsByTagName(t);
431                if ("*" === t) {
432                    for (; n = o[i++]; )
433                        1 === n.nodeType && r.push(n);
434                    return r
435                }
436                return o
437            }
438            ,
439            r.find.CLASS = n.getElementsByClassName && function(t, e) {
440                if (void 0 !== e.getElementsByClassName && g)
441                    return e.getElementsByClassName(t)
442            }
443            ,
444            y = [],
445            m = [],
446            (n.qsa = Y.test(f.querySelectorAll)) && (ut(function(t) {
447                p.appendChild(t).innerHTML = "<a id='" + w + "'></a><select id='" + w + "-\r\\' msallowcapture=''><option selected=''></option></select>",
448                t.querySelectorAll("[msallowcapture^='']").length && m.push("[*^$]=" + F + "*(?:''|\"\")"),
449                t.querySelectorAll("[selected]").length || m.push("\\[" + F + "*(?:value|" + N + ")"),
450                t.querySelectorAll("[id~=" + w + "-]").length || m.push("~="),
451                t.querySelectorAll(":checked").length || m.push(":checked"),
452                t.querySelectorAll("a#" + w + "+*").length || m.push(".#.+[+~]")
453            }),
454            ut(function(t) {
455                t.innerHTML = "<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";
456                var e = f.createElement("input");
457                e.setAttribute("type", "hidden"),
458                t.appendChild(e).setAttribute("name", "D"),
459                t.querySelectorAll("[name=d]").length && m.push("name" + F + "*[*^$|!~]?="),
460                2 !== t.querySelectorAll(":enabled").length && m.push(":enabled", ":disabled"),
461                p.appendChild(t).disabled = !0,
462                2 !== t.querySelectorAll(":disabled").length && m.push(":enabled", ":disabled"),
463                t.querySelectorAll("*,:x"),
464                m.push(",.*:")
465            })),
466            (n.matchesSelector = Y.test(v = p.matches || p.webkitMatchesSelector || p.mozMatchesSelector || p.oMatchesSelector || p.msMatchesSelector)) && ut(function(t) {
467                n.disconnectedMatch = v.call(t, "*"),
468                v.call(t, "[s!='']:x"),
469                y.push("!=", O)
470            }),
471            m = m.length && new RegExp(m.join("|")),
472            y = y.length && new RegExp(y.join("|")),
473            e = Y.test(p.compareDocumentPosition),
474            b = e || Y.test(p.contains) ? function(t, e) {
475                var n = 9 === t.nodeType ? t.documentElement : t
476                  , r = e && e.parentNode;
477                return t === r || !(!r || 1 !== r.nodeType || !(n.contains ? n.contains(r) : t.compareDocumentPosition && 16 & t.compareDocumentPosition(r)))
478            }
479            : function(t, e) {
480                if (e)
481                    for (; e = e.parentNode; )
482                        if (e === t)
483                            return !0;
484                return !1
485            }
486            ,
487            S = e ? function(t, e) {
488                if (t === e)
489                    return h = !0,
490                    0;
491                var r = !t.compareDocumentPosition - !e.compareDocumentPosition;
492                return r || (r = (t.ownerDocument || t) === (e.ownerDocument || e) ? t.compareDocumentPosition(e) : 1,
493                1 & r || !n.sortDetached && e.compareDocumentPosition(t) === r ? t === f || t.ownerDocument === x && b(x, t) ? -1 : e === f || e.ownerDocument === x && b(x, e) ? 1 : c ? I(c, t) - I(c, e) : 0 : 4 & r ? -1 : 1)
494            }
495            : function(t, e) {
496                if (t === e)
497                    return h = !0,
498                    0;
499                var n, r = 0, i = t.parentNode, o = e.parentNode, a = [t], s = [e];
500                if (!i || !o)
501                    return t === f ? -1 : e === f ? 1 : i ? -1 : o ? 1 : c ? I(c, t) - I(c, e) : 0;
502                if (i === o)
503                    return ct(t, e);
504                for (n = t; n = n.parentNode; )
505                    a.unshift(n);
506                for (n = e; n = n.parentNode; )
507                    s.unshift(n);
508                for (; a[r] === s[r]; )
509                    r++;
510                return r ? ct(a[r], s[r]) : a[r] === x ? -1 : s[r] === x ? 1 : 0
511            }
512            ,
513            f) : f
514        }
515        ,
516        ot.matches = function(t, e) {
517            return ot(t, null, null, e)
518        }
519        ,
520        ot.matchesSelector = function(t, e) {
521            if ((t.ownerDocument || t) !== f && d(t),
522            e = e.replace(B, "='$1']"),
523            n.matchesSelector && g && !T[e + " "] && (!y || !y.test(e)) && (!m || !m.test(e)))
524                try {
525                    var r = v.call(t, e);
526                    if (r || n.disconnectedMatch || t.document && 11 !== t.document.nodeType)
527                        return r
528                } catch (t) {}
529            return ot(e, f, null, [t]).length > 0
530        }
531        ,
532        ot.contains = function(t, e) {
533            return (t.ownerDocument || t) !== f && d(t),
534            b(t, e)
535        }
536        ,
537        ot.attr = function(t, e) {
538            (t.ownerDocument || t) !== f && d(t);
539            var i = r.attrHandle[e.toLowerCase()]
540              , o = i && E.call(r.attrHandle, e.toLowerCase()) ? i(t, e, !g) : void 0;
541            return void 0 !== o ? o : n.attributes || !g ? t.getAttribute(e) : (o = t.getAttributeNode(e)) && o.specified ? o.value : null
542        }
543        ,
544        ot.escape = function(t) {
545            return (t + "").replace(et, nt)
546        }
547        ,
548        ot.error = function(t) {
549            throw new Error("Syntax error, unrecognized expression: " + t)
550        }
551        ,
552        ot.uniqueSort = function(t) {
553            var e, r = [], i = 0, o = 0;
554            if (h = !n.detectDuplicates,
555            c = !n.sortStable && t.slice(0),
556            t.sort(S),
557            h) {
558                for (; e = t[o++]; )
559                    e === t[o] && (i = r.push(o));
560                for (; i--; )
561                    t.splice(r[i], 1)
562            }
563            return c = null,
564            t
565        }
566        ,
567        i = ot.getText = function(t) {
568            var e, n = "", r = 0, o = t.nodeType;
569            if (o) {
570                if (1 === o || 9 === o || 11 === o) {
571                    if ("string" == typeof t.textContent)
572                        return t.textContent;
573                    for (t = t.firstChild; t; t = t.nextSibling)
574                        n += i(t)
575                } else if (3 === o || 4 === o)
576                    return t.nodeValue
577            } else
578                for (; e = t[r++]; )
579                    n += i(e);
580            return n
581        }
582        ,
583        r = ot.selectors = {
584            cacheLength: 50,
585            createPseudo: st,
586            match: W,
587            attrHandle: {},
588            find: {},
589            relative: {
590                ">": {
591                    dir: "parentNode",
592                    first: !0
593                },
594                " ": {
595                    dir: "parentNode"
596                },
597                "+": {
598                    dir: "previousSibling",
599                    first: !0
600                },
601                "~": {
602                    dir: "previousSibling"
603                }
604            },
605            preFilter: {
606                ATTR: function(t) {
607                    return t[1] = t[1].replace(Z, tt),
608                    t[3] = (t[3] || t[4] || t[5] || "").replace(Z, tt),
609                    "~=" === t[2] && (t[3] = " " + t[3] + " "),
610                    t.slice(0, 4)
611                },
612                CHILD: function(t) {
613                    return t[1] = t[1].toLowerCase(),
614                    "nth" === t[1].slice(0, 3) ? (t[3] || ot.error(t[0]),
615                    t[4] = +(t[4] ? t[5] + (t[6] || 1) : 2 * ("even" === t[3] || "odd" === t[3])),
616                    t[5] = +(t[7] + t[8] || "odd" === t[3])) : t[3] && ot.error(t[0]),
617                    t
618                },
619                PSEUDO: function(t) {
620                    var e, n = !t[6] && t[2];
621                    return W.CHILD.test(t[0]) ? null : (t[3] ? t[2] = t[4] || t[5] || "" : n && V.test(n) && (e = a(n, !0)) && (e = n.indexOf(")", n.length - e) - n.length) && (t[0] = t[0].slice(0, e),
622                    t[2] = n.slice(0, e)),
623                    t.slice(0, 3))
624                }
625            },
626            filter: {
627                TAG: function(t) {
628                    var e = t.replace(Z, tt).toLowerCase();
629                    return "*" === t ? function() {
630                        return !0
631                    }
632                    : function(t) {
633                        return t.nodeName && t.nodeName.toLowerCase() === e
634                    }
635                },
636                CLASS: function(t) {
637                    var e = k[t + " "];
638                    return e || (e = new RegExp("(^|" + F + ")" + t + "(" + F + "|$)")) && k(t, function(t) {
639                        return e.test("string" == typeof t.className && t.className || void 0 !== t.getAttribute && t.getAttribute("class") || "")
640                    })
641                },
642                ATTR: function(t, e, n) {
643                    return function(r) {
644                        var i = ot.attr(r, t);
645                        return null == i ? "!=" === e : !e || (i += "",
646                        "=" === e ? i === n : "!=" === e ? i !== n : "^=" === e ? n && 0 === i.indexOf(n) : "*=" === e ? n && i.indexOf(n) > -1 : "$=" === e ? n && i.slice(-n.length) === n : "~=" === e ? (" " + i.replace(q, " ") + " ").indexOf(n) > -1 : "|=" === e && (i === n || i.slice(0, n.length + 1) === n + "-"))
647                    }
648                },
649                CHILD: function(t, e, n, r, i) {
650                    var o = "nth" !== t.slice(0, 3)
651                      , a = "last" !== t.slice(-4)
652                      , s = "of-type" === e;
653                    return 1 === r && 0 === i ? function(t) {
654                        return !!t.parentNode
655                    }
656                    : function(e, n, u) {
657                        var l, c, h, d, f, p, g = o !== a ? "nextSibling" : "previousSibling", m = e.parentNode, y = s && e.nodeName.toLowerCase(), v = !u && !s, b = !1;
658                        if (m) {
659                            if (o) {
660                                for (; g; ) {
661                                    for (d = e; d = d[g]; )
662                                        if (s ? d.nodeName.toLowerCase() === y : 1 === d.nodeType)
663                                            return !1;
664                                    p = g = "only" === t && !p && "nextSibling"
665                                }
666                                return !0
667                            }
668                            if (p = [a ? m.firstChild : m.lastChild],
669                            a && v) {
670                                for (d = m,
671                                h = d[w] || (d[w] = {}),
672                                c = h[d.uniqueID] || (h[d.uniqueID] = {}),
673                                l = c[t] || [],
674                                f = l[0] === _ && l[1],
675                                b = f && l[2],
676                                d = f && m.childNodes[f]; d = ++f && d && d[g] || (b = f = 0) || p.pop(); )
677                                    if (1 === d.nodeType && ++b && d === e) {
678                                        c[t] = [_, f, b];
679                                        break
680                                    }
681                            } else if (v && (d = e,
682                            h = d[w] || (d[w] = {}),
683                            c = h[d.uniqueID] || (h[d.uniqueID] = {}),
684                            l = c[t] || [],
685                            f = l[0] === _ && l[1],
686                            b = f),
687                            !1 === b)
688                                for (; (d = ++f && d && d[g] || (b = f = 0) || p.pop()) && ((s ? d.nodeName.toLowerCase() !== y : 1 !== d.nodeType) || !++b || (v && (h = d[w] || (d[w] = {}),
689                                c = h[d.uniqueID] || (h[d.uniqueID] = {}),
690                                c[t] = [_, b]),
691                                d !== e)); )
692                                    ;
693                            return (b -= i) === r || b % r == 0 && b / r >= 0
694                        }
695                    }
696                },
697                PSEUDO: function(t, e) {
698                    var n, i = r.pseudos[t] || r.setFilters[t.toLowerCase()] || ot.error("unsupported pseudo: " + t);
699                    return i[w] ? i(e) : i.length > 1 ? (n = [t, t, "", e],
700                    r.setFilters.hasOwnProperty(t.toLowerCase()) ? st(function(t, n) {
701                        for (var r, o = i(t, e), a = o.length; a--; )
702                            r = I(t, o[a]),
703                            t[r] = !(n[r] = o[a])
704                    }) : function(t) {
705                        return i(t, 0, n)
706                    }
707                    ) : i
708                }
709            },
710            pseudos: {
711                not: st(function(t) {
712                    var e = []
713                      , n = []
714                      , r = s(t.replace(R, "$1"));
715                    return r[w] ? st(function(t, e, n, i) {
716                        for (var o, a = r(t, null, i, []), s = t.length; s--; )
717                            (o = a[s]) && (t[s] = !(e[s] = o))
718                    }) : function(t, i, o) {
719                        return e[0] = t,
720                        r(e, null, o, n),
721                        e[0] = null,
722                        !n.pop()
723                    }
724                }),
725                has: st(function(t) {
726                    return function(e) {
727                        return ot(t, e).length > 0
728                    }
729                }),
730                contains: st(function(t) {
731                    return t = t.replace(Z, tt),
732                    function(e) {
733                        return (e.textContent || e.innerText || i(e)).indexOf(t) > -1
734                    }
735                }),
736                lang: st(function(t) {
737                    return U.test(t || "") || ot.error("unsupported lang: " + t),
738                    t = t.replace(Z, tt).toLowerCase(),
739                    function(e) {
740                        var n;
741                        do {
742                            if (n = g ? e.lang : e.getAttribute("xml:lang") || e.getAttribute("lang"))
743                                return (n = n.toLowerCase()) === t || 0 === n.indexOf(t + "-")
744                        } while ((e = e.parentNode) && 1 === e.nodeType);
745                        return !1
746                    }
747                }),
748                target: function(e) {
749                    var n = t.location && t.location.hash;
750                    return n && n.slice(1) === e.id
751                },
752                root: function(t) {
753                    return t === p
754                },
755                focus: function(t) {
756                    return t === f.activeElement && (!f.hasFocus || f.hasFocus()) && !!(t.type || t.href || ~t.tabIndex)
757                },
758                enabled: ht(!1),
759                disabled: ht(!0),
760                checked: function(t) {
761                    var e = t.nodeName.toLowerCase();
762                    return "input" === e && !!t.checked || "option" === e && !!t.selected
763                },
764                selected: function(t) {
765                    return t.parentNode && t.parentNode.selectedIndex,
766                    !0 === t.selected
767                },
768                empty: function(t) {
769                    for (t = t.firstChild; t; t = t.nextSibling)
770                        if (t.nodeType < 6)
771                            return !1;
772                    return !0
773                },
774                parent: function(t) {
775                    return !r.pseudos.empty(t)
776                },
777                header: function(t) {
778                    return G.test(t.nodeName)
779                },
780                input: function(t) {
781                    return K.test(t.nodeName)
782                },
783                button: function(t) {
784                    var e = t.nodeName.toLowerCase();
785                    return "input" === e && "button" === t.type || "button" === e
786                },
787                text: function(t) {
788                    var e;
789                    return "input" === t.nodeName.toLowerCase() && "text" === t.type && (null == (e = t.getAttribute("type")) || "text" === e.toLowerCase())
790                },
791                first: dt(function() {
792                    return [0]
793                }),
794                last: dt(function(t, e) {
795                    return [e - 1]
796                }),
797                eq: dt(function(t, e, n) {
798                    return [n < 0 ? n + e : n]
799                }),
800                even: dt(function(t, e) {
801                    for (var n = 0; n < e; n += 2)
802                        t.push(n);
803                    return t
804                }),
805                odd: dt(function(t, e) {
806                    for (var n = 1; n < e; n += 2)
807                        t.push(n);
808                    return t
809                }),
810                lt: dt(function(t, e, n) {
811                    for (var r = n < 0 ? n + e : n; --r >= 0; )
812                        t.push(r);
813                    return t
814                }),
815                gt: dt(function(t, e, n) {
816                    for (var r = n < 0 ? n + e : n; ++r < e; )
817                        t.push(r);
818                    return t
819                })
820            }
821        },
822        r.pseudos.nth = r.pseudos.eq;
823        for (e in {
824            radio: !0,
825            checkbox: !0,
826            file: !0,
827            password: !0,
828            image: !0
829        })
830            r.pseudos[e] = function(t) {
831                return function(e) {
832                    return "input" === e.nodeName.toLowerCase() && e.type === t
833                }
834            }(e);
835        for (e in {
836            submit: !0,
837            reset: !0
838        })
839            r.pseudos[e] = function(t) {
840                return function(e) {
841                    var n = e.nodeName.toLowerCase();
842                    return ("input" === n || "button" === n) && e.type === t
843                }
844            }(e);
845        function pt() {}
846        pt.prototype = r.filters = r.pseudos,
847        r.setFilters = new pt,
848        a = ot.tokenize = function(t, e) {
849            var n, i, o, a, s, u, l, c = j[t + " "];
850            if (c)
851                return e ? 0 : c.slice(0);
852            for (s = t,
853            u = [],
854            l = r.preFilter; s; ) {
855                n && !(i = z.exec(s)) || (i && (s = s.slice(i[0].length) || s),
856                u.push(o = [])),
857                n = !1,
858                (i = H.exec(s)) && (n = i.shift(),
859                o.push({
860                    value: n,
861                    type: i[0].replace(R, " ")
862                }),
863                s = s.slice(n.length));
864                for (a in r.filter)
865                    !(i = W[a].exec(s)) || l[a] && !(i = l[a](i)) || (n = i.shift(),
866                    o.push({
867                        value: n,
868                        type: a,
869                        matches: i
870                    }),
871                    s = s.slice(n.length));
872                if (!n)
873                    break
874            }
875            return e ? s.length : s ? ot.error(t) : j(t, u).slice(0)
876        }
877        ;
878        function gt(t) {
879            for (var e = 0, n = t.length, r = ""; e < n; e++)
880                r += t[e].value;
881            return r
882        }
883        function mt(t, e, n) {
884            var r = e.dir
885              , i = e.next
886              , o = i || r
887              , a = n && "parentNode" === o
888              , s = C++;
889            return e.first ? function(e, n, i) {
890                for (; e = e[r]; )
891                    if (1 === e.nodeType || a)
892                        return t(e, n, i);
893                return !1
894            }
895            : function(e, n, u) {
896                var l, c, h, d = [_, s];
897                if (u) {
898                    for (; e = e[r]; )
899                        if ((1 === e.nodeType || a) && t(e, n, u))
900                            return !0
901                } else
902                    for (; e = e[r]; )
903                        if (1 === e.nodeType || a)
904                            if (h = e[w] || (e[w] = {}),
905                            c = h[e.uniqueID] || (h[e.uniqueID] = {}),
906                            i && i === e.nodeName.toLowerCase())
907                                e = e[r] || e;
908                            else {
909                                if ((l = c[o]) && l[0] === _ && l[1] === s)
910                                    return d[2] = l[2];
911                                if (c[o] = d,
912                                d[2] = t(e, n, u))
913                                    return !0
914                            }
915                return !1
916            }
917        }
918        function yt(t) {
919            return t.length > 1 ? function(e, n, r) {
920                for (var i = t.length; i--; )
921                    if (!t[i](e, n, r))
922                        return !1;
923                return !0
924            }
925            : t[0]
926        }
927        function vt(t, e, n) {
928            for (var r = 0, i = e.length; r < i; r++)
929                ot(t, e[r], n);
930            return n
931        }
932        function bt(t, e, n, r, i) {
933            for (var o, a = [], s = 0, u = t.length, l = null != e; s < u; s++)
934                (o = t[s]) && (n && !n(o, r, i) || (a.push(o),
935                l && e.push(s)));
936            return a
937        }
938        function wt(t, e, n, r, i, o) {
939            return r && !r[w] && (r = wt(r)),
940            i && !i[w] && (i = wt(i, o)),
941            st(function(o, a, s, u) {
vendor: 4,526 bytes, lines 942-1047
942                var l, c, h, d = [], f = [], p = a.length, g = o || vt(e || "*", s.nodeType ? [s] : s, []), m = !t || !o && e ? g : bt(g, d, t, s, u), y = n ? i || (o ? t : p || r) ? [] : a : m;
943                if (n && n(m, y, s, u),
944                r)
945                    for (l = bt(y, f),
946                    r(l, [], s, u),
947                    c = l.length; c--; )
948                        (h = l[c]) && (y[f[c]] = !(m[f[c]] = h));
949                if (o) {
950                    if (i || t) {
951                        if (i) {
952                            for (l = [],
953                            c = y.length; c--; )
954                                (h = y[c]) && l.push(m[c] = h);
955                            i(null, y = [], l, u)
956                        }
957                        for (c = y.length; c--; )
958                            (h = y[c]) && (l = i ? I(o, h) : d[c]) > -1 && (o[l] = !(a[l] = h))
959                    }
960                } else
961                    y = bt(y === a ? y.splice(p, y.length) : y),
962                    i ? i(null, a, y, u) : $.apply(a, y)
963            })
964        }
965        function xt(t) {
966            for (var e, n, i, o = t.length, a = r.relative[t[0].type], s = a || r.relative[" "], u = a ? 1 : 0, c = mt(function(t) {
967                return t === e
968            }, s, !0), h = mt(function(t) {
969                return I(e, t) > -1
970            }, s, !0), d = [function(t, n, r) {
971                var i = !a && (r || n !== l) || ((e = n).nodeType ? c(t, n, r) : h(t, n, r));
972                return e = null,
973                i
974            }
975            ]; u < o; u++)
976                if (n = r.relative[t[u].type])
977                    d = [mt(yt(d), n)];
978                else {
979                    if (n = r.filter[t[u].type].apply(null, t[u].matches),
980                    n[w]) {
981                        for (i = ++u; i < o && !r.relative[t[i].type]; i++)
982                            ;
983                        return wt(u > 1 && yt(d), u > 1 && gt(t.slice(0, u - 1).concat({
984                            value: " " === t[u - 2].type ? "*" : ""
985                        })).replace(R, "$1"), n, u < i && xt(t.slice(u, i)), i < o && xt(t = t.slice(i)), i < o && gt(t))
986                    }
987                    d.push(n)
988                }
989            return yt(d)
990        }
991        function _t(t, e) {
992            var n = e.length > 0
993              , i = t.length > 0
994              , o = function(o, a, s, u, c) {
995                var h, p, m, y = 0, v = "0", b = o && [], w = [], x = l, C = o || i && r.find.TAG("*", c), k = _ += null == x ? 1 : Math.random() || .1, j = C.length;
996                for (c && (l = a === f || a || c); v !== j && null != (h = C[v]); v++) {
997                    if (i && h) {
998                        for (p = 0,
999                        a || h.ownerDocument === f || (d(h),
1000                        s = !g); m = t[p++]; )
1001                            if (m(h, a || f, s)) {
1002                                u.push(h);
1003                                break
1004                            }
1005                        c && (_ = k)
1006                    }
1007                    n && ((h = !m && h) && y--,
1008                    o && b.push(h))
1009                }
1010                if (y += v,
1011                n && v !== y) {
1012                    for (p = 0; m = e[p++]; )
1013                        m(b, w, a, s);
1014                    if (o) {
1015                        if (y > 0)
1016                            for (; v--; )
1017                                b[v] || w[v] || (w[v] = M.call(u));
1018                        w = bt(w)
1019                    }
1020                    $.apply(u, w),
1021                    c && !o && w.length > 0 && y + e.length > 1 && ot.uniqueSort(u)
1022                }
1023                return c && (_ = k,
1024                l = x),
1025                b
1026            };
1027            return n ? st(o) : o
1028        }
1029        return s = ot.compile = function(t, e) {
1030            var n, r = [], i = [], o = T[t + " "];
1031            if (!o) {
1032                for (e || (e = a(t)),
1033                n = e.length; n--; )
1034                    o = xt(e[n]),
1035                    o[w] ? r.push(o) : i.push(o);
1036                o = T(t, _t(i, r)),
1037                o.selector = t
1038            }
1039            return o
1040        }
1041        ,
1042        u = ot.select = function(t, e, n, i) {
1043            var o, u, l, c, h, d = "function" == typeof t && t, f = !i && a(t = d.selector || t);
1044            if (n = n || [],
1045            1 === f.length) {
1046                if (u = f[0] = f[0].slice(0),
1047                u.length >
vendor: 17,311 bytes, lines 1047-1507
1047 2 && "ID" === (l = u[0]).type && 9 === e.nodeType && g && r.relative[u[1].type]) {
1048                    if (!(e = (r.find.ID(l.matches[0].replace(Z, tt), e) || [])[0]))
1049                        return n;
1050                    d && (e = e.parentNode),
1051                    t = t.slice(u.shift().value.length)
1052                }
1053                for (o = W.needsContext.test(t) ? 0 : u.length; o-- && (l = u[o],
1054                !r.relative[c = l.type]); )
1055                    if ((h = r.find[c]) && (i = h(l.matches[0].replace(Z, tt), X.test(u[0].type) && ft(e.parentNode) || e))) {
1056                        if (u.splice(o, 1),
1057                        !(t = i.length && gt(u)))
1058                            return $.apply(n, i),
1059                            n;
1060                        break
1061                    }
1062            }
1063            return (d || s(t, f))(i, e, !g, n, !e || X.test(t) && ft(e.parentNode) || e),
1064            n
1065        }
1066        ,
1067        n.sortStable = w.split("").sort(S).join("") === w,
1068        n.detectDuplicates = !!h,
1069        d(),
1070        n.sortDetached = ut(function(t) {
1071            return 1 & t.compareDocumentPosition(f.createElement("fieldset"))
1072        }),
1073        ut(function(t) {
1074            return t.innerHTML = "<a href='#'></a>",
1075            "#" === t.firstChild.getAttribute("href")
1076        }) || lt("type|href|height|width", function(t, e, n) {
1077            if (!n)
1078                return t.getAttribute(e, "type" === e.toLowerCase() ? 1 : 2)
1079        }),
1080        n.attributes && ut(function(t) {
1081            return t.innerHTML = "<input/>",
1082            t.firstChild.setAttribute("value", ""),
1083            "" === t.firstChild.getAttribute("value")
1084        }) || lt("value", function(t, e, n) {
1085            if (!n && "input" === t.nodeName.toLowerCase())
1086                return t.defaultValue
1087        }),
1088        ut(function(t) {
1089            return null == t.getAttribute("disabled")
1090        }) || lt(N, function(t, e, n) {
1091            var r;
1092            if (!n)
1093                return !0 === t[e] ? e.toLowerCase() : (r = t.getAttributeNode(e)) && r.specified ? r.value : null
1094        }),
1095        ot
1096    }(t);
1097    y.find = C,
1098    y.expr = C.selectors,
1099    y.expr[":"] = y.expr.pseudos,
1100    y.uniqueSort = y.unique = C.uniqueSort,
1101    y.text = C.getText,
1102    y.isXMLDoc = C.isXML,
1103    y.contains = C.contains,
1104    y.escapeSelector = C.escape;
1105    var k = function(t, e, n) {
1106        for (var r = [], i = void 0 !== n; (t = t[e]) && 9 !== t.nodeType; )
1107            if (1 === t.nodeType) {
1108                if (i && y(t).is(n))
1109                    break;
1110                r.push(t)
1111            }
1112        return r
1113    }
1114      , j = function(t, e) {
1115        for (var n = []; t; t = t.nextSibling)
1116            1 === t.nodeType && t !== e && n.push(t);
1117        return n
1118    }
1119      , T = y.expr.match.needsContext;
1120    function S(t, e) {
1121        return t.nodeName && t.nodeName.toLowerCase() === e.toLowerCase()
1122    }
1123    var E = /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i
1124      , A = /^.[^:#\[\.,]*$/;
1125    function M(t, e, n) {
1126        return y.isFunction(e) ? y.grep(t, function(t, r) {
1127            return !!e.call(t, r, t) !== n
1128        }) : e.nodeType ? y.grep(t, function(t) {
1129            return t === e !== n
1130        }) : "string" != typeof e ? y.grep(t, function(t) {
1131            return u.call(e, t) > -1 !== n
1132        }) : A.test(e) ? y.filter(e, t, n) : (e = y.filter(e, t),
1133        y.grep(t, function(t) {
1134            return u.call(e, t) > -1 !== n && 1 === t.nodeType
1135        }))
1136    }
1137    y.filter = function(t, e, n) {
1138        var r = e[0];
1139        return n && (t = ":not(" + t + ")"),
1140        1 === e.length && 1 === r.nodeType ? y.find.matchesSelector(r, t) ? [r] : [] : y.find.matches(t, y.grep(e, function(t) {
1141            return 1 === t.nodeType
1142        }))
1143    }
1144    ,
1145    y.fn.extend({
1146        find: function(t) {
1147            var e, n, r = this.length, i = this;
1148            if ("string" != typeof t)
1149                return this.pushStack(y(t).filter(function() {
1150                    for (e = 0; e < r; e++)
1151                        if (y.contains(i[e], this))
1152                            return !0
1153                }));
1154            for (n = this.pushStack([]),
1155            e = 0; e < r; e++)
1156                y.find(t, i[e], n);
1157            return r > 1 ? y.uniqueSort(n) : n
1158        },
1159        filter: function(t) {
1160            return this.pushStack(M(this, t || [], !1))
1161        },
1162        not: function(t) {
1163            return this.pushStack(M(this, t || [], !0))
1164        },
1165        is: function(t) {
1166            return !!M(this, "string" == typeof t && T.test(t) ? y(t) : t || [], !1).length
1167        }
1168    });
1169    var Q, $ = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;
1170    (y.fn.init = function(t, e, n) {
1171        var i, o;
1172        if (!t)
1173            return this;
1174        if (n = n || Q,
1175        "string" == typeof t) {
1176            if (!(i = "<" === t[0] && ">" === t[t.length - 1] && t.length >= 3 ? [null, t, null] : $.exec(t)) || !i[1] && e)
1177                return !e || e.jquery ? (e || n).find(t) : this.constructor(e).find(t);
1178            if (i[1]) {
1179                if (e = e instanceof y ? e[0] : e,
1180                y.merge(this, y.parseHTML(i[1], e && e.nodeType ? e.ownerDocument || e : r, !0)),
1181                E.test(i[1]) && y.isPlainObject(e))
1182                    for (i in e)
1183                        y.isFunction(this[i]) ? this[i](e[i]) : this.attr(i, e[i]);
1184                return this
1185            }
1186            return o = r.getElementById(i[2]),
1187            o && (this[0] = o,
1188            this.length = 1),
1189            this
1190        }
1191        return t.nodeType ? (this[0] = t,
1192        this.length = 1,
1193        this) : y.isFunction(t) ? void 0 !== n.ready ? n.ready(t) : t(y) : y.makeArray(t, this)
1194    }
1195    ).prototype = y.fn,
1196    Q = y(r);
1197    var D = /^(?:parents|prev(?:Until|All))/
1198      , I = {
1199        children: !0,
1200        contents: !0,
1201        next: !0,
1202        prev: !0
1203    };
1204    y.fn.extend({
1205        has: function(t) {
1206            var e = y(t, this)
1207              , n = e.length;
1208            return this.filter(function() {
1209                for (var t = 0; t < n; t++)
1210                    if (y.contains(this, e[t]))
1211                        return !0
1212            })
1213        },
1214        closest: function(t, e) {
1215            var n, r = 0, i = this.length, o = [], a = "string" != typeof t && y(t);
1216            if (!T.test(t))
1217                for (; r < i; r++)
1218                    for (n = this[r]; n && n !== e; n = n.parentNode)
1219                        if (n.nodeType < 11 && (a ? a.index(n) > -1 : 1 === n.nodeType && y.find.matchesSelector(n, t))) {
1220                            o.push(n);
1221                            break
1222                        }
1223            return this.pushStack(o.length > 1 ? y.uniqueSort(o) : o)
1224        },
1225        index: function(t) {
1226            return t ? "string" == typeof t ? u.call(y(t), this[0]) : u.call(this, t.jquery ? t[0] : t) : this[0] && this[0].parentNode ? this.first().prevAll().length : -1
1227        },
1228        add: function(t, e) {
1229            return this.pushStack(y.uniqueSort(y.merge(this.get(), y(t, e))))
1230        },
1231        addBack: function(t) {
1232            return this.add(null == t ? this.prevObject : this.prevObject.filter(t))
1233        }
1234    });
1235    function N(t, e) {
1236        for (; (t = t[e]) && 1 !== t.nodeType; )
1237            ;
1238        return t
1239    }
1240    y.each({
1241        parent: function(t) {
1242            var e = t.parentNode;
1243            return e && 11 !== e.nodeType ? e : null
1244        },
1245        parents: function(t) {
1246            return k(t, "parentNode")
1247        },
1248        parentsUntil: function(t, e, n) {
1249            return k(t, "parentNode", n)
1250        },
1251        next: function(t) {
1252            return N(t, "nextSibling")
1253        },
1254        prev: function(t) {
1255            return N(t, "previousSibling")
1256        },
1257        nextAll: function(t) {
1258            return k(t, "nextSibling")
1259        },
1260        prevAll: function(t) {
1261            return k(t, "previousSibling")
1262        },
1263        nextUntil: function(t, e, n) {
1264            return k(t, "nextSibling", n)
1265        },
1266        prevUntil: function(t, e, n) {
1267            return k(t, "previousSibling", n)
1268        },
1269        siblings: function(t) {
1270            return j((t.parentNode || {}).firstChild, t)
1271        },
1272        children: function(t) {
1273            return j(t.firstChild)
1274        },
1275        contents: function(t) {
1276            return S(t, "iframe") ? t.contentDocument : (S(t, "template") && (t = t.content || t),
1277            y.merge([], t.childNodes))
1278        }
1279    }, function(t, e) {
1280        y.fn[t] = function(n, r) {
1281            var i = y.map(this, e, n);
1282            return "Until" !== t.slice(-5) && (r = n),
1283            r && "string" == typeof r && (i = y.filter(r, i)),
1284            this.length > 1 && (I[t] || y.uniqueSort(i),
1285            D.test(t) && i.reverse()),
1286            this.pushStack(i)
1287        }
1288    });
1289    var F = /[^\x20\t\r\n\f]+/g;
1290    function L(t) {
1291        var e = {};
1292        return y.each(t.match(F) || [], function(t, n) {
1293            e[n] = !0
1294        }),
1295        e
1296    }
1297    y.Callbacks = function(t) {
1298        t = "string" == typeof t ? L(t) : y.extend({}, t);
1299        var e, n, r, i, o = [], a = [], s = -1, u = function() {
1300            for (i = i || t.once,
1301            r = e = !0; a.length; s = -1)
1302                for (n = a.shift(); ++s < o.length; )
1303                    !1 === o[s].apply(n[0], n[1]) && t.stopOnFalse && (s = o.length,
1304                    n = !1);
1305            t.memory || (n = !1),
1306            e = !1,
1307            i && (o = n ? [] : "")
1308        }, l = {
1309            add: function() {
1310                return o && (n && !e && (s = o.length - 1,
1311                a.push(n)),
1312                function e(n) {
1313                    y.each(n, function(n, r) {
1314                        y.isFunction(r) ? t.unique && l.has(r) || o.push(r) : r && r.length && "string" !== y.type(r) && e(r)
1315                    })
1316                }(arguments),
1317                n && !e && u()),
1318                this
1319            },
1320            remove: function() {
1321                return y.each(arguments, function(t, e) {
1322                    for (var n; (n = y.inArray(e, o, n)) > -1; )
1323                        o.splice(n, 1),
1324                        n <= s && s--
1325                }),
1326                this
1327            },
1328            has: function(t) {
1329                return t ? y.inArray(t, o) > -1 : o.length > 0
1330            },
1331            empty: function() {
1332                return o && (o = []),
1333                this
1334            },
1335            disable: function() {
1336                return i = a = [],
1337                o = n = "",
1338                this
1339            },
1340            disabled: function() {
1341                return !o
1342            },
1343            lock: function() {
1344                return i = a = [],
1345                n || e || (o = n = ""),
1346                this
1347            },
1348            locked: function() {
1349                return !!i
1350            },
1351            fireWith: function(t, n) {
1352                return i || (n = n || [],
1353                n = [t, n.slice ? n.slice() : n],
1354                a.push(n),
1355                e || u()),
1356                this
1357            },
1358            fire: function() {
1359                return l.fireWith(this, arguments),
1360                this
1361            },
1362            fired: function() {
1363                return !!r
1364            }
1365        };
1366        return l
1367    }
1368    ;
1369    function P(t) {
1370        return t
1371    }
1372    function O(t) {
1373        throw t
1374    }
1375    function q(t, e, n, r) {
1376        var i;
1377        try {
1378            t && y.isFunction(i = t.promise) ? i.call(t).done(e).fail(n) : t && y.isFunction(i = t.then) ? i.call(t, e, n) : e.apply(void 0, [t].slice(r))
1379        } catch (t) {
1380            n.apply(void 0, [t])
1381        }
1382    }
1383    y.extend({
1384        Deferred: function(e) {
1385            var n = [["notify", "progress", y.Callbacks("memory"), y.Callbacks("memory"), 2], ["resolve", "done", y.Callbacks("once memory"), y.Callbacks("once memory"), 0, "resolved"], ["reject", "fail", y.Callbacks("once memory"), y.Callbacks("once memory"), 1, "rejected"]]
1386              , r = "pending"
1387              , i = {
1388                state: function() {
1389                    return r
1390                },
1391                always: function() {
1392                    return o.done(arguments).fail(arguments),
1393                    this
1394                },
1395                catch: function(t) {
1396                    return i.then(null, t)
1397                },
1398                pipe: function() {
1399                    var t = arguments;
1400                    return y.Deferred(function(e) {
1401                        y.each(n, function(n, r) {
1402                            var i = y.isFunction(t[r[4]]) && t[r[4]];
1403                            o[r[1]](function() {
1404                                var t = i && i.apply(this, arguments);
1405                                t && y.isFunction(t.promise) ? t.promise().progress(e.notify).done(e.resolve).fail(e.reject) : e[r[0] + "With"](this, i ? [t] : arguments)
1406                            })
1407                        }),
1408                        t = null
1409                    }).promise()
1410                },
1411                then: function(e, r, i) {
1412                    var o = 0;
1413                    function a(e, n, r, i) {
1414                        return function() {
1415                            var s = this
1416                              , u = arguments
1417                              , l = function() {
1418                                var t, l;
1419                                if (!(e < o)) {
1420                                    if ((t = r.apply(s, u)) === n.promise())
1421                                        throw new TypeError("Thenable self-resolution");
1422                                    l = t && ("object" == typeof t || "function" == typeof t) && t.then,
1423                                    y.isFunction(l) ? i ? l.call(t, a(o, n, P, i), a(o, n, O, i)) : (o++,
1424                                    l.call(t, a(o, n, P, i), a(o, n, O, i), a(o, n, P, n.notifyWith))) : (r !== P && (s = void 0,
1425                                    u = [t]),
1426                                    (i || n.resolveWith)(s, u))
1427                                }
1428                            }
1429                              , c = i ? l : function() {
1430                                try {
1431                                    l()
1432                                } catch (t) {
1433                                    y.Deferred.exceptionHook && y.Deferred.exceptionHook(t, c.stackTrace),
1434                                    e + 1 >= o && (r !== O && (s = void 0,
1435                                    u = [t]),
1436                                    n.rejectWith(s, u))
1437                                }
1438                            }
1439                            ;
1440                            e ? c() : (y.Deferred.getStackHook && (c.stackTrace = y.Deferred.getStackHook()),
1441                            t.setTimeout(c))
1442                        }
1443                    }
1444                    return y.Deferred(function(t) {
1445                        n[0][3].add(a(0, t, y.isFunction(i) ? i : P, t.notifyWith)),
1446                        n[1][3].add(a(0, t, y.isFunction(e) ? e : P)),
1447                        n[2][3].add(a(0, t, y.isFunction(r) ? r : O))
1448                    }).promise()
1449                },
1450                promise: function(t) {
1451                    return null != t ? y.extend(t, i) : i
1452                }
1453            }
1454              , o = {};
1455            return y.each(n, function(t, e) {
1456                var a = e[2]
1457                  , s = e[5];
1458                i[e[1]] = a.add,
1459                s && a.add(function() {
1460                    r = s
1461                }, n[3 - t][2].disable, n[0][2].lock),
1462                a.add(e[3].fire),
1463                o[e[0]] = function() {
1464                    return o[e[0] + "With"](this === o ? void 0 : this, arguments),
1465                    this
1466                }
1467                ,
1468                o[e[0] + "With"] = a.fireWith
1469            }),
1470            i.promise(o),
1471            e && e.call(o, o),
1472            o
1473        },
1474        when: function(t) {
1475            var e = arguments.length
1476              , n = e
1477              , r = Array(n)
1478              , i = o.call(arguments)
1479              , a = y.Deferred()
1480              , s = function(t) {
1481                return function(n) {
1482                    r[t] = this,
1483                    i[t] = arguments.length > 1 ? o.call(arguments) : n,
1484                    --e || a.resolveWith(r, i)
1485                }
1486            };
1487            if (e <= 1 && (q(t, a.done(s(n)).resolve, a.reject, !e),
1488            "pending" === a.state() || y.isFunction(i[n] && i[n].then)))
1489                return a.then();
1490            for (; n--; )
1491                q(i[n], s(n), a.reject);
1492            return a.promise()
1493        }
1494    });
1495    var R = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;
1496    y.Deferred.exceptionHook = function(e, n) {
1497        t.console && t.console.warn && e && R.test(e.name) && t.console.warn("jQuery.Deferred exception: " + e.message, e.stack, n)
1498    }
1499    ,
1500    y.readyException = function(e) {
1501        t.setTimeout(function() {
1502            throw e
1503        })
1504    }
1505    ;
1506    var z = y.Deferred();
1507    y.fn.ready = function(t) {
vendor: 9,640 bytes, lines 1508-1796
1508        return z.then(t).catch(function(t) {
1509            y.readyException(t)
1510        }),
1511        this
1512    }
1513    ,
1514    y.extend({
1515        isReady: !1,
1516        readyWait: 1,
1517        ready: function(t) {
1518            (!0 === t ? --y.readyWait : y.isReady) || (y.isReady = !0,
1519            !0 !== t && --y.readyWait > 0 || z.resolveWith(r, [y]))
1520        }
1521    }),
1522    y.ready.then = z.then;
1523    function H() {
1524        r.removeEventListener("DOMContentLoaded", H),
1525        t.removeEventListener("load", H),
1526        y.ready()
1527    }
1528    "complete" === r.readyState || "loading" !== r.readyState && !r.documentElement.doScroll ? t.setTimeout(y.ready) : (r.addEventListener("DOMContentLoaded", H),
1529    t.addEventListener("load", H));
1530    var B = function(t, e, n, r, i, o, a) {
1531        var s = 0
1532          , u = t.length
1533          , l = null == n;
1534        if ("object" === y.type(n)) {
1535            i = !0;
1536            for (s in n)
1537                B(t, e, s, n[s], !0, o, a)
1538        } else if (void 0 !== r && (i = !0,
1539        y.isFunction(r) || (a = !0),
1540        l && (a ? (e.call(t, r),
1541        e = null) : (l = e,
1542        e = function(t, e, n) {
1543            return l.call(y(t), n)
1544        }
1545        )),
1546        e))
1547            for (; s < u; s++)
1548                e(t[s], n, a ? r : r.call(t[s], s, e(t[s], n)));
1549        return i ? t : l ? e.call(t) : u ? e(t[0], n) : o
1550    }
1551      , V = function(t) {
1552        return 1 === t.nodeType || 9 === t.nodeType || !+t.nodeType
1553    };
1554    function U() {
1555        this.expando = y.expando + U.uid++
1556    }
1557    U.uid = 1,
1558    U.prototype = {
1559        cache: function(t) {
1560            var e = t[this.expando];
1561            return e || (e = {},
1562            V(t) && (t.nodeType ? t[this.expando] = e : Object.defineProperty(t, this.expando, {
1563                value: e,
1564                configurable: !0
1565            }))),
1566            e
1567        },
1568        set: function(t, e, n) {
1569            var r, i = this.cache(t);
1570            if ("string" == typeof e)
1571                i[y.camelCase(e)] = n;
1572            else
1573                for (r in e)
1574                    i[y.camelCase(r)] = e[r];
1575            return i
1576        },
1577        get: function(t, e) {
1578            return void 0 === e ? this.cache(t) : t[this.expando] && t[this.expando][y.camelCase(e)]
1579        },
1580        access: function(t, e, n) {
1581            return void 0 === e || e && "string" == typeof e && void 0 === n ? this.get(t, e) : (this.set(t, e, n),
1582            void 0 !== n ? n : e)
1583        },
1584        remove: function(t, e) {
1585            var n, r = t[this.expando];
1586            if (void 0 !== r) {
1587                if (void 0 !== e) {
1588                    Array.isArray(e) ? e = e.map(y.camelCase) : (e = y.camelCase(e),
1589                    e = e in r ? [e] : e.match(F) || []),
1590                    n = e.length;
1591                    for (; n--; )
1592                        delete r[e[n]]
1593                }
1594                (void 0 === e || y.isEmptyObject(r)) && (t.nodeType ? t[this.expando] = void 0 : delete t[this.expando])
1595            }
1596        },
1597        hasData: function(t) {
1598            var e = t[this.expando];
1599            return void 0 !== e && !y.isEmptyObject(e)
1600        }
1601    };
1602    var W = new U
1603      , K = new U
1604      , G = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/
1605      , Y = /[A-Z]/g;
1606    function J(t) {
1607        return "true" === t || "false" !== t && ("null" === t ? null : t === +t + "" ? +t : G.test(t) ? JSON.parse(t) : t)
1608    }
1609    function X(t, e, n) {
1610        var r;
1611        if (void 0 === n && 1 === t.nodeType)
1612            if (r = "data-" + e.replace(Y, "-$&").toLowerCase(),
1613            "string" == typeof (n = t.getAttribute(r))) {
1614                try {
1615                    n = J(n)
1616                } catch (t) {}
1617                K.set(t, e, n)
1618            } else
1619                n = void 0;
1620        return n
1621    }
1622    y.extend({
1623        hasData: function(t) {
1624            return K.hasData(t) || W.hasData(t)
1625        },
1626        data: function(t, e, n) {
1627            return K.access(t, e, n)
1628        },
1629        removeData: function(t, e) {
1630            K.remove(t, e)
1631        },
1632        _data: function(t, e, n) {
1633            return W.access(t, e, n)
1634        },
1635        _removeData: function(t, e) {
1636            W.remove(t, e)
1637        }
1638    }),
1639    y.fn.extend({
1640        data: function(t, e) {
1641            var n, r, i, o = this[0], a = o && o.attributes;
1642            if (void 0 === t) {
1643                if (this.length && (i = K.get(o),
1644                1 === o.nodeType && !W.get(o, "hasDataAttrs"))) {
1645                    for (n = a.length; n--; )
1646                        a[n] && (r = a[n].name,
1647                        0 === r.indexOf("data-") && (r = y.camelCase(r.slice(5)),
1648                        X(o, r, i[r])));
1649                    W.set(o, "hasDataAttrs", !0)
1650                }
1651                return i
1652            }
1653            return "object" == typeof t ? this.each(function() {
1654                K.set(this, t)
1655            }) : B(this, function(e) {
1656                var n;
1657                if (o && void 0 === e) {
1658                    if (void 0 !== (n = K.get(o, t)))
1659                        return n;
1660                    if (void 0 !== (n = X(o, t)))
1661                        return n
1662                } else
1663                    this.each(function() {
1664                        K.set(this, t, e)
1665                    })
1666            }, null, e, arguments.length > 1, null, !0)
1667        },
1668        removeData: function(t) {
1669            return this.each(function() {
1670                K.remove(this, t)
1671            })
1672        }
1673    }),
1674    y.extend({
1675        queue: function(t, e, n) {
1676            var r;
1677            if (t)
1678                return e = (e || "fx") + "queue",
1679                r = W.get(t, e),
1680                n && (!r || Array.isArray(n) ? r = W.access(t, e, y.makeArray(n)) : r.push(n)),
1681                r || []
1682        },
1683        dequeue: function(t, e) {
1684            e = e || "fx";
1685            var n = y.queue(t, e)
1686              , r = n.length
1687              , i = n.shift()
1688              , o = y._queueHooks(t, e)
1689              , a = function() {
1690                y.dequeue(t, e)
1691            };
1692            "inprogress" === i && (i = n.shift(),
1693            r--),
1694            i && ("fx" === e && n.unshift("inprogress"),
1695            delete o.stop,
1696            i.call(t, a, o)),
1697            !r && o && o.empty.fire()
1698        },
1699        _queueHooks: function(t, e) {
1700            var n = e + "queueHooks";
1701            return W.get(t, n) || W.access(t, n, {
1702                empty: y.Callbacks("once memory").add(function() {
1703                    W.remove(t, [e + "queue", n])
1704                })
1705            })
1706        }
1707    }),
1708    y.fn.extend({
1709        queue: function(t, e) {
1710            var n = 2;
1711            return "string" != typeof t && (e = t,
1712            t = "fx",
1713            n--),
1714            arguments.length < n ? y.queue(this[0], t) : void 0 === e ? this : this.each(function() {
1715                var n = y.queue(this, t, e);
1716                y._queueHooks(this, t),
1717                "fx" === t && "inprogress" !== n[0] && y.dequeue(this, t)
1718            })
1719        },
1720        dequeue: function(t) {
1721            return this.each(function() {
1722                y.dequeue(this, t)
1723            })
1724        },
1725        clearQueue: function(t) {
1726            return this.queue(t || "fx", [])
1727        },
1728        promise: function(t, e) {
1729            var n, r = 1, i = y.Deferred(), o = this, a = this.length, s = function() {
1730                --r || i.resolveWith(o, [o])
1731            };
1732            for ("string" != typeof t && (e = t,
1733            t = void 0),
1734            t = t || "fx"; a--; )
1735                (n = W.get(o[a], t + "queueHooks")) && n.empty && (r++,
1736                n.empty.add(s));
1737            return s(),
1738            i.promise(e)
1739        }
1740    });
1741    var Z = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source
1742      , tt = new RegExp("^(?:([+-])=|)(" + Z + ")([a-z%]*)$","i")
1743      , et = ["Top", "Right", "Bottom", "Left"]
1744      , nt = function(t, e) {
1745        return t = e || t,
1746        "none" === t.style.display || "" === t.style.display && y.contains(t.ownerDocument, t) && "none" === y.css(t, "display")
1747    }
1748      , rt = function(t, e, n, r) {
1749        var i, o, a = {};
1750        for (o in e)
1751            a[o] = t.style[o],
1752            t.style[o] = e[o];
1753        i = n.apply(t, r || []);
1754        for (o in e)
1755            t.style[o] = a[o];
1756        return i
1757    };
1758    function it(t, e, n, r) {
1759        var i, o = 1, a = 20, s = r ? function() {
1760            return r.cur()
1761        }
1762        : function() {
1763            return y.css(t, e, "")
1764        }
1765        , u = s(), l = n && n[3] || (y.cssNumber[e] ? "" : "px"), c = (y.cssNumber[e] || "px" !== l && +u) && tt.exec(y.css(t, e));
1766        if (c && c[3] !== l) {
1767            l = l || c[3],
1768            n = n || [],
1769            c = +u || 1;
1770            do {
1771                o = o || ".5",
1772                c /= o,
1773                y.style(t, e, c + l)
1774            } while (o !== (o = s() / u) && 1 !== o && --a)
1775        }
1776        return n && (c = +c || +u || 0,
1777        i = n[1] ? c + (n[1] + 1) * n[2] : +n[2],
1778        r && (r.unit = l,
1779        r.start = c,
1780        r.end = i)),
1781        i
1782    }
1783    var ot = {};
1784    function at(t) {
1785        var e, n = t.ownerDocument, r = t.nodeName, i = ot[r];
1786        return i || (e = n.body.appendChild(n.createElement(r)),
1787        i = y.css(e, "display"),
1788        e.parentNode.removeChild(e),
1789        "none" === i && (i = "block"),
1790        ot[r] = i,
1791        i)
1792    }
1793    function st(t, e) {
1794        for (var n, r, i = [], o = 0, a = t.length; o < a; o++)
1795            r = t[o],
1796            r.style && (n = r.style.display,
vendor: 8,671 bytes, lines 1797-2004
1797            e ? ("none" === n && (i[o] = W.get(r, "display") || null,
1798            i[o] || (r.style.display = "")),
1799            "" === r.style.display && nt(r) && (i[o] = at(r))) : "none" !== n && (i[o] = "none",
1800            W.set(r, "display", n)));
1801        for (o = 0; o < a; o++)
1802            null != i[o] && (t[o].style.display = i[o]);
1803        return t
1804    }
1805    y.fn.extend({
1806        show: function() {
1807            return st(this, !0)
1808        },
1809        hide: function() {
1810            return st(this)
1811        },
1812        toggle: function(t) {
1813            return "boolean" == typeof t ? t ? this.show() : this.hide() : this.each(function() {
1814                nt(this) ? y(this).show() : y(this).hide()
1815            })
1816        }
1817    });
1818    var ut = /^(?:checkbox|radio)$/i
1819      , lt = /<([a-z][^\/\0>\x20\t\r\n\f]+)/i
1820      , ct = /^$|\/(?:java|ecma)script/i
1821      , ht = {
1822        option: [1, "<select multiple='multiple'>", "</select>"],
1823        thead: [1, "<table>", "</table>"],
1824        col: [2, "<table><colgroup>", "</colgroup></table>"],
1825        tr: [2, "<table><tbody>", "</tbody></table>"],
1826        td: [3, "<table><tbody><tr>", "</tr></tbody></table>"],
1827        _default: [0, "", ""]
1828    };
1829    ht.optgroup = ht.option,
1830    ht.tbody = ht.tfoot = ht.colgroup = ht.caption = ht.thead,
1831    ht.th = ht.td;
1832    function dt(t, e) {
1833        var n;
1834        return n = void 0 !== t.getElementsByTagName ? t.getElementsByTagName(e || "*") : void 0 !== t.querySelectorAll ? t.querySelectorAll(e || "*") : [],
1835        void 0 === e || e && S(t, e) ? y.merge([t], n) : n
1836    }
1837    function ft(t, e) {
1838        for (var n = 0, r = t.length; n < r; n++)
1839            W.set(t[n], "globalEval", !e || W.get(e[n], "globalEval"))
1840    }
1841    var pt = /<|&#?\w+;/;
1842    function gt(t, e, n, r, i) {
1843        for (var o, a, s, u, l, c, h = e.createDocumentFragment(), d = [], f = 0, p = t.length; f < p; f++)
1844            if ((o = t[f]) || 0 === o)
1845                if ("object" === y.type(o))
1846                    y.merge(d, o.nodeType ? [o] : o);
1847                else if (pt.test(o)) {
1848                    for (a = a || h.appendChild(e.createElement("div")),
1849                    s = (lt.exec(o) || ["", ""])[1].toLowerCase(),
1850                    u = ht[s] || ht._default,
1851                    a.innerHTML = u[1] + y.htmlPrefilter(o) + u[2],
1852                    c = u[0]; c--; )
1853                        a = a.lastChild;
1854                    y.merge(d, a.childNodes),
1855                    a = h.firstChild,
1856                    a.textContent = ""
1857                } else
1858                    d.push(e.createTextNode(o));
1859        for (h.textContent = "",
1860        f = 0; o = d[f++]; )
1861            if (r && y.inArray(o, r) > -1)
1862                i && i.push(o);
1863            else if (l = y.contains(o.ownerDocument, o),
1864            a = dt(h.appendChild(o), "script"),
1865            l && ft(a),
1866            n)
1867                for (c = 0; o = a[c++]; )
1868                    ct.test(o.type || "") && n.push(o);
1869        return h
1870    }
1871    !function() {
1872        var t = r.createDocumentFragment()
1873          , e = t.appendChild(r.createElement("div"))
1874          , n = r.createElement("input");
1875        n.setAttribute("type", "radio"),
1876        n.setAttribute("checked", "checked"),
1877        n.setAttribute("name", "t"),
1878        e.appendChild(n),
1879        p.checkClone = e.cloneNode(!0).cloneNode(!0).lastChild.checked,
1880        e.innerHTML = "<textarea>x</textarea>",
1881        p.noCloneChecked = !!e.cloneNode(!0).lastChild.defaultValue
1882    }();
1883    var mt = r.documentElement
1884      , yt = /^key/
1885      , vt = /^(?:mouse|pointer|contextmenu|drag|drop)|click/
1886      , bt = /^([^.]*)(?:\.(.+)|)/;
1887    function wt() {
1888        return !0
1889    }
1890    function xt() {
1891        return !1
1892    }
1893    function _t() {
1894        try {
1895            return r.activeElement
1896        } catch (t) {}
1897    }
1898    function Ct(t, e, n, r, i, o) {
1899        var a, s;
1900        if ("object" == typeof e) {
1901            "string" != typeof n && (r = r || n,
1902            n = void 0);
1903            for (s in e)
1904                Ct(t, s, n, r, e[s], o);
1905            return t
1906        }
1907        if (null == r && null == i ? (i = n,
1908        r = n = void 0) : null == i && ("string" == typeof n ? (i = r,
1909        r = void 0) : (i = r,
1910        r = n,
1911        n = void 0)),
1912        !1 === i)
1913            i = xt;
1914        else if (!i)
1915            return t;
1916        return 1 === o && (a = i,
1917        i = function(t) {
1918            return y().off(t),
1919            a.apply(this, arguments)
1920        }
1921        ,
1922        i.guid = a.guid || (a.guid = y.guid++)),
1923        t.each(function() {
1924            y.event.add(this, e, i, r, n)
1925        })
1926    }
1927    y.event = {
1928        global: {},
1929        add: function(t, e, n, r, i) {
1930            var o, a, s, u, l, c, h, d, f, p, g, m = W.get(t);
1931            if (m)
1932                for (n.handler && (o = n,
1933                n = o.handler,
1934                i = o.selector),
1935                i && y.find.matchesSelector(mt, i),
1936                n.guid || (n.guid = y.guid++),
1937                (u = m.events) || (u = m.events = {}),
1938                (a = m.handle) || (a = m.handle = function(e) {
1939                    return void 0 !== y && y.event.triggered !== e.type ? y.event.dispatch.apply(t, arguments) : void 0
1940                }
1941                ),
1942                e = (e || "").match(F) || [""],
1943                l = e.length; l--; )
1944                    s = bt.exec(e[l]) || [],
1945                    f = g = s[1],
1946                    p = (s[2] || "").split(".").sort(),
1947                    f && (h = y.event.special[f] || {},
1948                    f = (i ? h.delegateType : h.bindType) || f,
1949                    h = y.event.special[f] || {},
1950                    c = y.extend({
1951                        type: f,
1952                        origType: g,
1953                        data: r,
1954                        handler: n,
1955                        guid: n.guid,
1956                        selector: i,
1957                        needsContext: i && y.expr.match.needsContext.test(i),
1958                        namespace: p.join(".")
1959                    }, o),
1960                    (d = u[f]) || (d = u[f] = [],
1961                    d.delegateCount = 0,
1962                    h.setup && !1 !== h.setup.call(t, r, p, a) || t.addEventListener && t.addEventListener(f, a)),
1963                    h.add && (h.add.call(t, c),
1964                    c.handler.guid || (c.handler.guid = n.guid)),
1965                    i ? d.splice(d.delegateCount++, 0, c) : d.push(c),
1966                    y.event.global[f] = !0)
1967        },
1968        remove: function(t, e, n, r, i) {
1969            var o, a, s, u, l, c, h, d, f, p, g, m = W.hasData(t) && W.get(t);
1970            if (m && (u = m.events)) {
1971                for (e = (e || "").match(F) || [""],
1972                l = e.length; l--; )
1973                    if (s = bt.exec(e[l]) || [],
1974                    f = g = s[1],
1975                    p = (s[2] || "").split(".").sort(),
1976                    f) {
1977                        for (h = y.event.special[f] || {},
1978                        f = (r ? h.delegateType : h.bindType) || f,
1979                        d = u[f] || [],
1980                        s = s[2] && new RegExp("(^|\\.)" + p.join("\\.(?:.*\\.|)") + "(\\.|$)"),
1981                        a = o = d.length; o--; )
1982                            c = d[o],
1983                            !i && g !== c.origType || n && n.guid !== c.guid || s && !s.test(c.namespace) || r && r !== c.selector && ("**" !== r || !c.selector) || (d.splice(o, 1),
1984                            c.selector && d.delegateCount--,
1985                            h.remove && h.remove.call(t, c));
1986                        a && !d.length && (h.teardown && !1 !== h.teardown.call(t, p, m.handle) || y.removeEvent(t, f, m.handle),
1987                        delete u[f])
1988                    } else
1989                        for (f in u)
1990                            y.event.remove(t, f + e[l], n, r, !0);
1991                y.isEmptyObject(u) && W.remove(t, "handle events")
1992            }
1993        },
1994        dispatch: function(t) {
1995            var e, n, r, i, o, a, s = y.event.fix(t), u = new Array(arguments.length), l = (W.get(this, "events") || {})[s.type] || [], c = y.event.special[s.type] || {};
1996            for (u[0] = s,
1997            e = 1; e < arguments.length; e++)
1998                u[e] = arguments[e];
1999            if (s.delegateTarget = this,
2000            !c.preDispatch || !1 !== c.preDispatch.call(this, s)) {
2001                for (a = y.event.handlers.call(this, s, l),
2002                e = 0; (i = a[e++]) && !s.isPropagationStopped(); )
2003                    for (s.currentTarget = i.elem,
2004                    n = 0; (o = i.handlers[n++]) && !s.isImmediatePropagationStopped(); )
vendor: 5,364 bytes, lines 2005-2149
2005                        s.rnamespace && !s.rnamespace.test(o.namespace) || (s.handleObj = o,
2006                        s.data = o.data,
2007                        void 0 !== (r = ((y.event.special[o.origType] || {}).handle || o.handler).apply(i.elem, u)) && !1 === (s.result = r) && (s.preventDefault(),
2008                        s.stopPropagation()));
2009                return c.postDispatch && c.postDispatch.call(this, s),
2010                s.result
2011            }
2012        },
2013        handlers: function(t, e) {
2014            var n, r, i, o, a, s = [], u = e.delegateCount, l = t.target;
2015            if (u && l.nodeType && !("click" === t.type && t.button >= 1))
2016                for (; l !== this; l = l.parentNode || this)
2017                    if (1 === l.nodeType && ("click" !== t.type || !0 !== l.disabled)) {
2018                        for (o = [],
2019                        a = {},
2020                        n = 0; n < u; n++)
2021                            r = e[n],
2022                            i = r.selector + " ",
2023                            void 0 === a[i] && (a[i] = r.needsContext ? y(i, this).index(l) > -1 : y.find(i, this, null, [l]).length),
2024                            a[i] && o.push(r);
2025                        o.length && s.push({
2026                            elem: l,
2027                            handlers: o
2028                        })
2029                    }
2030            return l = this,
2031            u < e.length && s.push({
2032                elem: l,
2033                handlers: e.slice(u)
2034            }),
2035            s
2036        },
2037        addProp: function(t, e) {
2038            Object.defineProperty(y.Event.prototype, t, {
2039                enumerable: !0,
2040                configurable: !0,
2041                get: y.isFunction(e) ? function() {
2042                    if (this.originalEvent)
2043                        return e(this.originalEvent)
2044                }
2045                : function() {
2046                    if (this.originalEvent)
2047                        return this.originalEvent[t]
2048                }
2049                ,
2050                set: function(e) {
2051                    Object.defineProperty(this, t, {
2052                        enumerable: !0,
2053                        configurable: !0,
2054                        writable: !0,
2055                        value: e
2056                    })
2057                }
2058            })
2059        },
2060        fix: function(t) {
2061            return t[y.expando] ? t : new y.Event(t)
2062        },
2063        special: {
2064            load: {
2065                noBubble: !0
2066            },
2067            focus: {
2068                trigger: function() {
2069                    if (this !== _t() && this.focus)
2070                        return this.focus(),
2071                        !1
2072                },
2073                delegateType: "focusin"
2074            },
2075            blur: {
2076                trigger: function() {
2077                    if (this === _t() && this.blur)
2078                        return this.blur(),
2079                        !1
2080                },
2081                delegateType: "focusout"
2082            },
2083            click: {
2084                trigger: function() {
2085                    if (ut.test(this.type) && this.click && S(this, "input"))
2086                        return this.click(),
2087                        !1
2088                },
2089                _default: function(t) {
2090                    return S(t.target, "a")
2091                }
2092            },
2093            beforeunload: {
2094                postDispatch: function(t) {
2095                    void 0 !== t.result && t.originalEvent && (t.originalEvent.returnValue = t.result)
2096                }
2097            }
2098        }
2099    },
2100    y.removeEvent = function(t, e, n) {
2101        t.removeEventListener && t.removeEventListener(e, n)
2102    }
2103    ,
2104    y.Event = function(t, e) {
2105        return this instanceof y.Event ? (t && t.type ? (this.originalEvent = t,
2106        this.type = t.type,
2107        this.isDefaultPrevented = t.defaultPrevented || void 0 === t.defaultPrevented && !1 === t.returnValue ? wt : xt,
2108        this.target = t.target && 3 === t.target.nodeType ? t.target.parentNode : t.target,
2109        this.currentTarget = t.currentTarget,
2110        this.relatedTarget = t.relatedTarget) : this.type = t,
2111        e && y.extend(this, e),
2112        this.timeStamp = t && t.timeStamp || y.now(),
2113        void (this[y.expando] = !0)) : new y.Event(t,e)
2114    }
2115    ,
2116    y.Event.prototype = {
2117        constructor: y.Event,
2118        isDefaultPrevented: xt,
2119        isPropagationStopped: xt,
2120        isImmediatePropagationStopped: xt,
2121        isSimulated: !1,
2122        preventDefault: function() {
2123            var t = this.originalEvent;
2124            this.isDefaultPrevented = wt,
2125            t && !this.isSimulated && t.preventDefault()
2126        },
2127        stopPropagation: function() {
2128            var t = this.originalEvent;
2129            this.isPropagationStopped = wt,
2130            t && !this.isSimulated && t.stopPropagation()
2131        },
2132        stopImmediatePropagation: function() {
2133            var t = this.originalEvent;
2134            this.isImmediatePropagationStopped = wt,
2135            t && !this.isSimulated && t.stopImmediatePropagation(),
2136            this.stopPropagation()
2137        }
2138    },
2139    y.each({
2140        altKey: !0,
2141        bubbles: !0,
2142        cancelable: !0,
2143        changedTouches: !0,
2144        ctrlKey: !0,
2145        detail: !0,
2146        eventPhase: !0,
2147        metaKey: !0,
2148        pageX: !0,
2149        pageY: !0,
vendor: 4,490 bytes, lines 2150-2278
2150        shiftKey: !0,
2151        view: !0,
2152        char: !0,
2153        charCode: !0,
2154        key: !0,
2155        keyCode: !0,
2156        button: !0,
2157        buttons: !0,
2158        clientX: !0,
2159        clientY: !0,
2160        offsetX: !0,
2161        offsetY: !0,
2162        pointerId: !0,
2163        pointerType: !0,
2164        screenX: !0,
2165        screenY: !0,
2166        targetTouches: !0,
2167        toElement: !0,
2168        touches: !0,
2169        which: function(t) {
2170            var e = t.button;
2171            return null == t.which && yt.test(t.type) ? null != t.charCode ? t.charCode : t.keyCode : !t.which && void 0 !== e && vt.test(t.type) ? 1 & e ? 1 : 2 & e ? 3 : 4 & e ? 2 : 0 : t.which
2172        }
2173    }, y.event.addProp),
2174    y.each({
2175        mouseenter: "mouseover",
2176        mouseleave: "mouseout",
2177        pointerenter: "pointerover",
2178        pointerleave: "pointerout"
2179    }, function(t, e) {
2180        y.event.special[t] = {
2181            delegateType: e,
2182            bindType: e,
2183            handle: function(t) {
2184                var n, r = this, i = t.relatedTarget, o = t.handleObj;
2185                return i && (i === r || y.contains(r, i)) || (t.type = o.origType,
2186                n = o.handler.apply(this, arguments),
2187                t.type = e),
2188                n
2189            }
2190        }
2191    }),
2192    y.fn.extend({
2193        on: function(t, e, n, r) {
2194            return Ct(this, t, e, n, r)
2195        },
2196        one: function(t, e, n, r) {
2197            return Ct(this, t, e, n, r, 1)
2198        },
2199        off: function(t, e, n) {
2200            var r, i;
2201            if (t && t.preventDefault && t.handleObj)
2202                return r = t.handleObj,
2203                y(t.delegateTarget).off(r.namespace ? r.origType + "." + r.namespace : r.origType, r.selector, r.handler),
2204                this;
2205            if ("object" == typeof t) {
2206                for (i in t)
2207                    this.off(i, e, t[i]);
2208                return this
2209            }
2210            return !1 !== e && "function" != typeof e || (n = e,
2211            e = void 0),
2212            !1 === n && (n = xt),
2213            this.each(function() {
2214                y.event.remove(this, t, n, e)
2215            })
2216        }
2217    });
2218    var kt = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi
2219      , jt = /<script|<style|<link/i
2220      , Tt = /checked\s*(?:[^=]|=\s*.checked.)/i
2221      , St = /^true\/(.*)/
2222      , Et = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;
2223    function At(t, e) {
2224        return S(t, "table") && S(11 !== e.nodeType ? e : e.firstChild, "tr") ? y(">tbody", t)[0] || t : t
2225    }
2226    function Mt(t) {
2227        return t.type = (null !== t.getAttribute("type")) + "/" + t.type,
2228        t
2229    }
2230    function Qt(t) {
2231        var e = St.exec(t.type);
2232        return e ? t.type = e[1] : t.removeAttribute("type"),
2233        t
2234    }
2235    function $t(t, e) {
2236        var n, r, i, o, a, s, u, l;
2237        if (1 === e.nodeType) {
2238            if (W.hasData(t) && (o = W.access(t),
2239            a = W.set(e, o),
2240            l = o.events)) {
2241                delete a.handle,
2242                a.events = {};
2243                for (i in l)
2244                    for (n = 0,
2245                    r = l[i].length; n < r; n++)
2246                        y.event.add(e, i, l[i][n])
2247            }
2248            K.hasData(t) && (s = K.access(t),
2249            u = y.extend({}, s),
2250            K.set(e, u))
2251        }
2252    }
2253    function Dt(t, e) {
2254        var n = e.nodeName.toLowerCase();
2255        "input" === n && ut.test(t.type) ? e.checked = t.checked : "input" !== n && "textarea" !== n || (e.defaultValue = t.defaultValue)
2256    }
2257    function It(t, e, n, r) {
2258        e = a.apply([], e);
2259        var i, o, s, u, l, c, h = 0, d = t.length, f = d - 1, m = e[0], v = y.isFunction(m);
2260        if (v || d > 1 && "string" == typeof m && !p.checkClone && Tt.test(m))
2261            return t.each(function(i) {
2262                var o = t.eq(i);
2263                v && (e[0] = m.call(this, i, o.html())),
2264                It(o, e, n, r)
2265            });
2266        if (d && (i = gt(e, t[0].ownerDocument, !1, t, r),
2267        o = i.firstChild,
2268        1 === i.childNodes.length && (i = o),
2269        o || r)) {
2270            for (s = y.map(dt(i, "script"), Mt),
2271            u = s.length; h < d; h++)
2272                l = i,
2273                h !== f && (l = y.clone(l, !0, !0),
2274                u && y.merge(s, dt(l, "script"))),
2275                n.call(t[h], l, h);
2276            if (u)
2277                for (c = s[s.length - 1].ownerDocument,
2278                y.map(s, Qt),
vendor: 5,067 bytes, lines 2279-2412
2279                h = 0; h < u; h++)
2280                    l = s[h],
2281                    ct.test(l.type || "") && !W.access(l, "globalEval") && y.contains(c, l) && (l.src ? y._evalUrl && y._evalUrl(l.src) : g(l.textContent.replace(Et, ""), c))
2282        }
2283        return t
2284    }
2285    function Nt(t, e, n) {
2286        for (var r, i = e ? y.filter(e, t) : t, o = 0; null != (r = i[o]); o++)
2287            n || 1 !== r.nodeType || y.cleanData(dt(r)),
2288            r.parentNode && (n && y.contains(r.ownerDocument, r) && ft(dt(r, "script")),
2289            r.parentNode.removeChild(r));
2290        return t
2291    }
2292    y.extend({
2293        htmlPrefilter: function(t) {
2294            return t.replace(kt, "<$1></$2>")
2295        },
2296        clone: function(t, e, n) {
2297            var r, i, o, a, s = t.cloneNode(!0), u = y.contains(t.ownerDocument, t);
2298            if (!(p.noCloneChecked || 1 !== t.nodeType && 11 !== t.nodeType || y.isXMLDoc(t)))
2299                for (a = dt(s),
2300                o = dt(t),
2301                r = 0,
2302                i = o.length; r < i; r++)
2303                    Dt(o[r], a[r]);
2304            if (e)
2305                if (n)
2306                    for (o = o || dt(t),
2307                    a = a || dt(s),
2308                    r = 0,
2309                    i = o.length; r < i; r++)
2310                        $t(o[r], a[r]);
2311                else
2312                    $t(t, s);
2313            return a = dt(s, "script"),
2314            a.length > 0 && ft(a, !u && dt(t, "script")),
2315            s
2316        },
2317        cleanData: function(t) {
2318            for (var e, n, r, i = y.event.special, o = 0; void 0 !== (n = t[o]); o++)
2319                if (V(n)) {
2320                    if (e = n[W.expando]) {
2321                        if (e.events)
2322                            for (r in e.events)
2323                                i[r] ? y.event.remove(n, r) : y.removeEvent(n, r, e.handle);
2324                        n[W.expando] = void 0
2325                    }
2326                    n[K.expando] && (n[K.expando] = void 0)
2327                }
2328        }
2329    }),
2330    y.fn.extend({
2331        detach: function(t) {
2332            return Nt(this, t, !0)
2333        },
2334        remove: function(t) {
2335            return Nt(this, t)
2336        },
2337        text: function(t) {
2338            return B(this, function(t) {
2339                return void 0 === t ? y.text(this) : this.empty().each(function() {
2340                    1 !== this.nodeType && 11 !== this.nodeType && 9 !== this.nodeType || (this.textContent = t)
2341                })
2342            }, null, t, arguments.length)
2343        },
2344        append: function() {
2345            return It(this, arguments, function(t) {
2346                if (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) {
2347                    At(this, t).appendChild(t)
2348                }
2349            })
2350        },
2351        prepend: function() {
2352            return It(this, arguments, function(t) {
2353                if (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) {
2354                    var e = At(this, t);
2355                    e.insertBefore(t, e.firstChild)
2356                }
2357            })
2358        },
2359        before: function() {
2360            return It(this, arguments, function(t) {
2361                this.parentNode && this.parentNode.insertBefore(t, this)
2362            })
2363        },
2364        after: function() {
2365            return It(this, arguments, function(t) {
2366                this.parentNode && this.parentNode.insertBefore(t, this.nextSibling)
2367            })
2368        },
2369        empty: function() {
2370            for (var t, e = 0; null != (t = this[e]); e++)
2371                1 === t.nodeType && (y.cleanData(dt(t, !1)),
2372                t.textContent = "");
2373            return this
2374        },
2375        clone: function(t, e) {
2376            return t = null != t && t,
2377            e = null == e ? t : e,
2378            this.map(function() {
2379                return y.clone(this, t, e)
2380            })
2381        },
2382        html: function(t) {
2383            return B(this, function(t) {
2384                var e = this[0] || {}
2385                  , n = 0
2386                  , r = this.length;
2387                if (void 0 === t && 1 === e.nodeType)
2388                    return e.innerHTML;
2389                if ("string" == typeof t && !jt.test(t) && !ht[(lt.exec(t) || ["", ""])[1].toLowerCase()]) {
2390                    t = y.htmlPrefilter(t);
2391                    try {
2392                        for (; n < r; n++)
2393                            e = this[n] || {},
2394                            1 === e.nodeType && (y.cleanData(dt(e, !1)),
2395                            e.innerHTML = t);
2396                        e = 0
2397                    } catch (t) {}
2398                }
2399                e && this.empty().append(t)
2400            }, null, t, arguments.length)
2401        },
2402        replaceWith: function() {
2403            var t = [];
2404            return It(this, arguments, function(e) {
2405                var n = this.parentNode;
2406                y.inArray(this, t) < 0 && (y.cleanData(dt(this)),
2407                n && n.replaceChild(e, this))
2408            }, t)
2409        }
2410    }),
2411    y.each({
2412        appendTo: "append",
vendor: 17,373 bytes, lines 2413-2886
2413        prependTo: "prepend",
2414        insertBefore: "before",
2415        insertAfter: "after",
2416        replaceAll: "replaceWith"
2417    }, function(t, e) {
2418        y.fn[t] = function(t) {
2419            for (var n, r = [], i = y(t), o = i.length - 1, a = 0; a <= o; a++)
2420                n = a === o ? this : this.clone(!0),
2421                y(i[a])[e](n),
2422                s.apply(r, n.get());
2423            return this.pushStack(r)
2424        }
2425    });
2426    var Ft = /^margin/
2427      , Lt = new RegExp("^(" + Z + ")(?!px)[a-z%]+$","i")
2428      , Pt = function(e) {
2429        var n = e.ownerDocument.defaultView;
2430        return n && n.opener || (n = t),
2431        n.getComputedStyle(e)
2432    };
2433    !function() {
2434        function e() {
2435            if (u) {
2436                u.style.cssText = "box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",
2437                u.innerHTML = "",
2438                mt.appendChild(s);
2439                var e = t.getComputedStyle(u);
2440                n = "1%" !== e.top,
2441                a = "2px" === e.marginLeft,
2442                i = "4px" === e.width,
2443                u.style.marginRight = "50%",
2444                o = "4px" === e.marginRight,
2445                mt.removeChild(s),
2446                u = null
2447            }
2448        }
2449        var n, i, o, a, s = r.createElement("div"), u = r.createElement("div");
2450        u.style && (u.style.backgroundClip = "content-box",
2451        u.cloneNode(!0).style.backgroundClip = "",
2452        p.clearCloneStyle = "content-box" === u.style.backgroundClip,
2453        s.style.cssText = "border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",
2454        s.appendChild(u),
2455        y.extend(p, {
2456            pixelPosition: function() {
2457                return e(),
2458                n
2459            },
2460            boxSizingReliable: function() {
2461                return e(),
2462                i
2463            },
2464            pixelMarginRight: function() {
2465                return e(),
2466                o
2467            },
2468            reliableMarginLeft: function() {
2469                return e(),
2470                a
2471            }
2472        }))
2473    }();
2474    function Ot(t, e, n) {
2475        var r, i, o, a, s = t.style;
2476        return n = n || Pt(t),
2477        n && (a = n.getPropertyValue(e) || n[e],
2478        "" !== a || y.contains(t.ownerDocument, t) || (a = y.style(t, e)),
2479        !p.pixelMarginRight() && Lt.test(a) && Ft.test(e) && (r = s.width,
2480        i = s.minWidth,
2481        o = s.maxWidth,
2482        s.minWidth = s.maxWidth = s.width = a,
2483        a = n.width,
2484        s.width = r,
2485        s.minWidth = i,
2486        s.maxWidth = o)),
2487        void 0 !== a ? a + "" : a
2488    }
2489    function qt(t, e) {
2490        return {
2491            get: function() {
2492                return t() ? void delete this.get : (this.get = e).apply(this, arguments)
2493            }
2494        }
2495    }
2496    var Rt = /^(none|table(?!-c[ea]).+)/
2497      , zt = /^--/
2498      , Ht = {
2499        position: "absolute",
2500        visibility: "hidden",
2501        display: "block"
2502    }
2503      , Bt = {
2504        letterSpacing: "0",
2505        fontWeight: "400"
2506    }
2507      , Vt = ["Webkit", "Moz", "ms"]
2508      , Ut = r.createElement("div").style;
2509    function Wt(t) {
2510        if (t in Ut)
2511            return t;
2512        for (var e = t[0].toUpperCase() + t.slice(1), n = Vt.length; n--; )
2513            if ((t = Vt[n] + e)in Ut)
2514                return t
2515    }
2516    function Kt(t) {
2517        var e = y.cssProps[t];
2518        return e || (e = y.cssProps[t] = Wt(t) || t),
2519        e
2520    }
2521    function Gt(t, e, n) {
2522        var r = tt.exec(e);
2523        return r ? Math.max(0, r[2] - (n || 0)) + (r[3] || "px") : e
2524    }
2525    function Yt(t, e, n, r, i) {
2526        var o, a = 0;
2527        for (o = n === (r ? "border" : "content") ? 4 : "width" === e ? 1 : 0; o < 4; o += 2)
2528            "margin" === n && (a += y.css(t, n + et[o], !0, i)),
2529            r ? ("content" === n && (a -= y.css(t, "padding" + et[o], !0, i)),
2530            "margin" !== n && (a -= y.css(t, "border" + et[o] + "Width", !0, i))) : (a += y.css(t, "padding" + et[o], !0, i),
2531            "padding" !== n && (a += y.css(t, "border" + et[o] + "Width", !0, i)));
2532        return a
2533    }
2534    function Jt(t, e, n) {
2535        var r, i = Pt(t), o = Ot(t, e, i), a = "border-box" === y.css(t, "boxSizing", !1, i);
2536        return Lt.test(o) ? o : (r = a && (p.boxSizingReliable() || o === t.style[e]),
2537        (o = parseFloat(o) || 0) + Yt(t, e, n || (a ? "border" : "content"), r, i) + "px")
2538    }
2539    y.extend({
2540        cssHooks: {
2541            opacity: {
2542                get: function(t, e) {
2543                    if (e) {
2544                        var n = Ot(t, "opacity");
2545                        return "" === n ? "1" : n
2546                    }
2547                }
2548            }
2549        },
2550        cssNumber: {
2551            animationIterationCount: !0,
2552            columnCount: !0,
2553            fillOpacity: !0,
2554            flexGrow: !0,
2555            flexShrink: !0,
2556            fontWeight: !0,
2557            lineHeight: !0,
2558            opacity: !0,
2559            order: !0,
2560            orphans: !0,
2561            widows: !0,
2562            zIndex: !0,
2563            zoom: !0
2564        },
2565        cssProps: {
2566            float: "cssFloat"
2567        },
2568        style: function(t, e, n, r) {
2569            if (t && 3 !== t.nodeType && 8 !== t.nodeType && t.style) {
2570                var i, o, a, s = y.camelCase(e), u = zt.test(e), l = t.style;
2571                return u || (e = Kt(s)),
2572                a = y.cssHooks[e] || y.cssHooks[s],
2573                void 0 === n ? a && "get"in a && void 0 !== (i = a.get(t, !1, r)) ? i : l[e] : (o = typeof n,
2574                "string" === o && (i = tt.exec(n)) && i[1] && (n = it(t, e, i),
2575                o = "number"),
2576                void (null != n && n === n && ("number" === o && (n += i && i[3] || (y.cssNumber[s] ? "" : "px")),
2577                p.clearCloneStyle || "" !== n || 0 !== e.indexOf("background") || (l[e] = "inherit"),
2578                a && "set"in a && void 0 === (n = a.set(t, n, r)) || (u ? l.setProperty(e, n) : l[e] = n))))
2579            }
2580        },
2581        css: function(t, e, n, r) {
2582            var i, o, a, s = y.camelCase(e);
2583            return zt.test(e) || (e = Kt(s)),
2584            a = y.cssHooks[e] || y.cssHooks[s],
2585            a && "get"in a && (i = a.get(t, !0, n)),
2586            void 0 === i && (i = Ot(t, e, r)),
2587            "normal" === i && e in Bt && (i = Bt[e]),
2588            "" === n || n ? (o = parseFloat(i),
2589            !0 === n || isFinite(o) ? o || 0 : i) : i
2590        }
2591    }),
2592    y.each(["height", "width"], function(t, e) {
2593        y.cssHooks[e] = {
2594            get: function(t, n, r) {
2595                if (n)
2596                    return !Rt.test(y.css(t, "display")) || t.getClientRects().length && t.getBoundingClientRect().width ? Jt(t, e, r) : rt(t, Ht, function() {
2597                        return Jt(t, e, r)
2598                    })
2599            },
2600            set: function(t, n, r) {
2601                var i, o = r && Pt(t), a = r && Yt(t, e, r, "border-box" === y.css(t, "boxSizing", !1, o), o);
2602                return a && (i = tt.exec(n)) && "px" !== (i[3] || "px") && (t.style[e] = n,
2603                n = y.css(t, e)),
2604                Gt(t, n, a)
2605            }
2606        }
2607    }),
2608    y.cssHooks.marginLeft = qt(p.reliableMarginLeft, function(t, e) {
2609        if (e)
2610            return (parseFloat(Ot(t, "marginLeft")) || t.getBoundingClientRect().left - rt(t, {
2611                marginLeft: 0
2612            }, function() {
2613                return t.getBoundingClientRect().left
2614            })) + "px"
2615    }),
2616    y.each({
2617        margin: "",
2618        padding: "",
2619        border: "Width"
2620    }, function(t, e) {
2621        y.cssHooks[t + e] = {
2622            expand: function(n) {
2623                for (var r = 0, i = {}, o = "string" == typeof n ? n.split(" ") : [n]; r < 4; r++)
2624                    i[t + et[r] + e] = o[r] || o[r - 2] || o[0];
2625                return i
2626            }
2627        },
2628        Ft.test(t) || (y.cssHooks[t + e].set = Gt)
2629    }),
2630    y.fn.extend({
2631        css: function(t, e) {
2632            return B(this, function(t, e, n) {
2633                var r, i, o = {}, a = 0;
2634                if (Array.isArray(e)) {
2635                    for (r = Pt(t),
2636                    i = e.length; a < i; a++)
2637                        o[e[a]] = y.css(t, e[a], !1, r);
2638                    return o
2639                }
2640                return void 0 !== n ? y.style(t, e, n) : y.css(t, e)
2641            }, t, e, arguments.length > 1)
2642        }
2643    });
2644    function Xt(t, e, n, r, i) {
2645        return new Xt.prototype.init(t,e,n,r,i)
2646    }
2647    y.Tween = Xt,
2648    Xt.prototype = {
2649        constructor: Xt,
2650        init: function(t, e, n, r, i, o) {
2651            this.elem = t,
2652            this.prop = n,
2653            this.easing = i || y.easing._default,
2654            this.options = e,
2655            this.start = this.now = this.cur(),
2656            this.end = r,
2657            this.unit = o || (y.cssNumber[n] ? "" : "px")
2658        },
2659        cur: function() {
2660            var t = Xt.propHooks[this.prop];
2661            return t && t.get ? t.get(this) : Xt.propHooks._default.get(this)
2662        },
2663        run: function(t) {
2664            var e, n = Xt.propHooks[this.prop];
2665            return this.options.duration ? this.pos = e = y.easing[this.easing](t, this.options.duration * t, 0, 1, this.options.duration) : this.pos = e = t,
2666            this.now = (this.end - this.start) * e + this.start,
2667            this.options.step && this.options.step.call(this.elem, this.now, this),
2668            n && n.set ? n.set(this) : Xt.propHooks._default.set(this),
2669            this
2670        }
2671    },
2672    Xt.prototype.init.prototype = Xt.prototype,
2673    Xt.propHooks = {
2674        _default: {
2675            get: function(t) {
2676                var e;
2677                return 1 !== t.elem.nodeType || null != t.elem[t.prop] && null == t.elem.style[t.prop] ? t.elem[t.prop] : (e = y.css(t.elem, t.prop, ""),
2678                e && "auto" !== e ? e : 0)
2679            },
2680            set: function(t) {
2681                y.fx.step[t.prop] ? y.fx.step[t.prop](t) : 1 !== t.elem.nodeType || null == t.elem.style[y.cssProps[t.prop]] && !y.cssHooks[t.prop] ? t.elem[t.prop] = t.now : y.style(t.elem, t.prop, t.now + t.unit)
2682            }
2683        }
2684    },
2685    Xt.propHooks.scrollTop = Xt.propHooks.scrollLeft = {
2686        set: function(t) {
2687            t.elem.nodeType && t.elem.parentNode && (t.elem[t.prop] = t.now)
2688        }
2689    },
2690    y.easing = {
2691        linear: function(t) {
2692            return t
2693        },
2694        swing: function(t) {
2695            return .5 - Math.cos(t * Math.PI) / 2
2696        },
2697        _default: "swing"
2698    },
2699    y.fx = Xt.prototype.init,
2700    y.fx.step = {};
2701    var Zt, te, ee = /^(?:toggle|show|hide)$/, ne = /queueHooks$/;
2702    function re() {
2703        te && (!1 === r.hidden && t.requestAnimationFrame ? t.requestAnimationFrame(re) : t.setTimeout(re, y.fx.interval),
2704        y.fx.tick())
2705    }
2706    function ie() {
2707        return t.setTimeout(function() {
2708            Zt = void 0
2709        }),
2710        Zt = y.now()
2711    }
2712    function oe(t, e) {
2713        var n, r = 0, i = {
2714            height: t
2715        };
2716        for (e = e ? 1 : 0; r < 4; r += 2 - e)
2717            n = et[r],
2718            i["margin" + n] = i["padding" + n] = t;
2719        return e && (i.opacity = i.width = t),
2720        i
2721    }
2722    function ae(t, e, n) {
2723        for (var r, i = (le.tweeners[e] || []).concat(le.tweeners["*"]), o = 0, a = i.length; o < a; o++)
2724            if (r = i[o].call(n, e, t))
2725                return r
2726    }
2727    function se(t, e, n) {
2728        var r, i, o, a, s, u, l, c, h = "width"in e || "height"in e, d = this, f = {}, p = t.style, g = t.nodeType && nt(t), m = W.get(t, "fxshow");
2729        n.queue || (a = y._queueHooks(t, "fx"),
2730        null == a.unqueued && (a.unqueued = 0,
2731        s = a.empty.fire,
2732        a.empty.fire = function() {
2733            a.unqueued || s()
2734        }
2735        ),
2736        a.unqueued++,
2737        d.always(function() {
2738            d.always(function() {
2739                a.unqueued--,
2740                y.queue(t, "fx").length || a.empty.fire()
2741            })
2742        }));
2743        for (r in e)
2744            if (i = e[r],
2745            ee.test(i)) {
2746                if (delete e[r],
2747                o = o || "toggle" === i,
2748                i === (g ? "hide" : "show")) {
2749                    if ("show" !== i || !m || void 0 === m[r])
2750                        continue;
2751                    g = !0
2752                }
2753                f[r] = m && m[r] || y.style(t, r)
2754            }
2755        if ((u = !y.isEmptyObject(e)) || !y.isEmptyObject(f)) {
2756            h && 1 === t.nodeType && (n.overflow = [p.overflow, p.overflowX, p.overflowY],
2757            l = m && m.display,
2758            null == l && (l = W.get(t, "display")),
2759            c = y.css(t, "display"),
2760            "none" === c && (l ? c = l : (st([t], !0),
2761            l = t.style.display || l,
2762            c = y.css(t, "display"),
2763            st([t]))),
2764            ("inline" === c || "inline-block" === c && null != l) && "none" === y.css(t, "float") && (u || (d.done(function() {
2765                p.display = l
2766            }),
2767            null == l && (c = p.display,
2768            l = "none" === c ? "" : c)),
2769            p.display = "inline-block")),
2770            n.overflow && (p.overflow = "hidden",
2771            d.always(function() {
2772                p.overflow = n.overflow[0],
2773                p.overflowX = n.overflow[1],
2774                p.overflowY = n.overflow[2]
2775            })),
2776            u = !1;
2777            for (r in f)
2778                u || (m ? "hidden"in m && (g = m.hidden) : m = W.access(t, "fxshow", {
2779                    display: l
2780                }),
2781                o && (m.hidden = !g),
2782                g && st([t], !0),
2783                d.done(function() {
2784                    g || st([t]),
2785                    W.remove(t, "fxshow");
2786                    for (r in f)
2787                        y.style(t, r, f[r])
2788                })),
2789                u = ae(g ? m[r] : 0, r, d),
2790                r in m || (m[r] = u.start,
2791                g && (u.end = u.start,
2792                u.start = 0))
2793        }
2794    }
2795    function ue(t, e) {
2796        var n, r, i, o, a;
2797        for (n in t)
2798            if (r = y.camelCase(n),
2799            i = e[r],
2800            o = t[n],
2801            Array.isArray(o) && (i = o[1],
2802            o = t[n] = o[0]),
2803            n !== r && (t[r] = o,
2804            delete t[n]),
2805            (a = y.cssHooks[r]) && "expand"in a) {
2806                o = a.expand(o),
2807                delete t[r];
2808                for (n in o)
2809                    n in t || (t[n] = o[n],
2810                    e[n] = i)
2811            } else
2812                e[r] = i
2813    }
2814    function le(t, e, n) {
2815        var r, i, o = 0, a = le.prefilters.length, s = y.Deferred().always(function() {
2816            delete u.elem
2817        }), u = function() {
2818            if (i)
2819                return !1;
2820            for (var e = Zt || ie(), n = Math.max(0, l.startTime + l.duration - e), r = n / l.duration || 0, o = 1 - r, a = 0, u = l.tweens.length; a < u; a++)
2821                l.tweens[a].run(o);
2822            return s.notifyWith(t, [l, o, n]),
2823            o < 1 && u ? n : (u || s.notifyWith(t, [l, 1, 0]),
2824            s.resolveWith(t, [l]),
2825            !1)
2826        }, l = s.promise({
2827            elem: t,
2828            props: y.extend({}, e),
2829            opts: y.extend(!0, {
2830                specialEasing: {},
2831                easing: y.easing._default
2832            }, n),
2833            originalProperties: e,
2834            originalOptions: n,
2835            startTime: Zt || ie(),
2836            duration: n.duration,
2837            tweens: [],
2838            createTween: function(e, n) {
2839                var r = y.Tween(t, l.opts, e, n, l.opts.specialEasing[e] || l.opts.easing);
2840                return l.tweens.push(r),
2841                r
2842            },
2843            stop: function(e) {
2844                var n = 0
2845                  , r = e ? l.tweens.length : 0;
2846                if (i)
2847                    return this;
2848                for (i = !0; n < r; n++)
2849                    l.tweens[n].run(1);
2850                return e ? (s.notifyWith(t, [l, 1, 0]),
2851                s.resolveWith(t, [l, e])) : s.rejectWith(t, [l, e]),
2852                this
2853            }
2854        }), c = l.props;
2855        for (ue(c, l.opts.specialEasing); o < a; o++)
2856            if (r = le.prefilters[o].call(l, t, c, l.opts))
2857                return y.isFunction(r.stop) && (y._queueHooks(l.elem, l.opts.queue).stop = y.proxy(r.stop, r)),
2858                r;
2859        return y.map(c, ae, l),
2860        y.isFunction(l.opts.start) && l.opts.start.call(t, l),
2861        l.progress(l.opts.progress).done(l.opts.done, l.opts.complete).fail(l.opts.fail).always(l.opts.always),
2862        y.fx.timer(y.extend(u, {
2863            elem: t,
2864            anim: l,
2865            queue: l.opts.queue
2866        })),
2867        l
2868    }
2869    y.Animation = y.extend(le, {
2870        tweeners: {
2871            "*": [function(t, e) {
2872                var n = this.createTween(t, e);
2873                return it(n.elem, t, tt.exec(e), n),
2874                n
2875            }
2876            ]
2877        },
2878        tweener: function(t, e) {
2879            y.isFunction(t) ? (e = t,
2880            t = ["*"]) : t = t.match(F);
2881            for (var n, r = 0, i = t.length; r < i; r++)
2882                n = t[r],
2883                le.tweeners[n] = le.tweeners[n] || [],
2884                le.tweeners[n].unshift(e)
2885        },
2886        prefilters: [se],
vendor: 34,625 bytes, lines 2887-3823
2887        prefilter: function(t, e) {
2888            e ? le.prefilters.unshift(t) : le.prefilters.push(t)
2889        }
2890    }),
2891    y.speed = function(t, e, n) {
2892        var r = t && "object" == typeof t ? y.extend({}, t) : {
2893            complete: n || !n && e || y.isFunction(t) && t,
2894            duration: t,
2895            easing: n && e || e && !y.isFunction(e) && e
2896        };
2897        return y.fx.off ? r.duration = 0 : "number" != typeof r.duration && (r.duration in y.fx.speeds ? r.duration = y.fx.speeds[r.duration] : r.duration = y.fx.speeds._default),
2898        null != r.queue && !0 !== r.queue || (r.queue = "fx"),
2899        r.old = r.complete,
2900        r.complete = function() {
2901            y.isFunction(r.old) && r.old.call(this),
2902            r.queue && y.dequeue(this, r.queue)
2903        }
2904        ,
2905        r
2906    }
2907    ,
2908    y.fn.extend({
2909        fadeTo: function(t, e, n, r) {
2910            return this.filter(nt).css("opacity", 0).show().end().animate({
2911                opacity: e
2912            }, t, n, r)
2913        },
2914        animate: function(t, e, n, r) {
2915            var i = y.isEmptyObject(t)
2916              , o = y.speed(e, n, r)
2917              , a = function() {
2918                var e = le(this, y.extend({}, t), o);
2919                (i || W.get(this, "finish")) && e.stop(!0)
2920            };
2921            return a.finish = a,
2922            i || !1 === o.queue ? this.each(a) : this.queue(o.queue, a)
2923        },
2924        stop: function(t, e, n) {
2925            var r = function(t) {
2926                var e = t.stop;
2927                delete t.stop,
2928                e(n)
2929            };
2930            return "string" != typeof t && (n = e,
2931            e = t,
2932            t = void 0),
2933            e && !1 !== t && this.queue(t || "fx", []),
2934            this.each(function() {
2935                var e = !0
2936                  , i = null != t && t + "queueHooks"
2937                  , o = y.timers
2938                  , a = W.get(this);
2939                if (i)
2940                    a[i] && a[i].stop && r(a[i]);
2941                else
2942                    for (i in a)
2943                        a[i] && a[i].stop && ne.test(i) && r(a[i]);
2944                for (i = o.length; i--; )
2945                    o[i].elem !== this || null != t && o[i].queue !== t || (o[i].anim.stop(n),
2946                    e = !1,
2947                    o.splice(i, 1));
2948                !e && n || y.dequeue(this, t)
2949            })
2950        },
2951        finish: function(t) {
2952            return !1 !== t && (t = t || "fx"),
2953            this.each(function() {
2954                var e, n = W.get(this), r = n[t + "queue"], i = n[t + "queueHooks"], o = y.timers, a = r ? r.length : 0;
2955                for (n.finish = !0,
2956                y.queue(this, t, []),
2957                i && i.stop && i.stop.call(this, !0),
2958                e = o.length; e--; )
2959                    o[e].elem === this && o[e].queue === t && (o[e].anim.stop(!0),
2960                    o.splice(e, 1));
2961                for (e = 0; e < a; e++)
2962                    r[e] && r[e].finish && r[e].finish.call(this);
2963                delete n.finish
2964            })
2965        }
2966    }),
2967    y.each(["toggle", "show", "hide"], function(t, e) {
2968        var n = y.fn[e];
2969        y.fn[e] = function(t, r, i) {
2970            return null == t || "boolean" == typeof t ? n.apply(this, arguments) : this.animate(oe(e, !0), t, r, i)
2971        }
2972    }),
2973    y.each({
2974        slideDown: oe("show"),
2975        slideUp: oe("hide"),
2976        slideToggle: oe("toggle"),
2977        fadeIn: {
2978            opacity: "show"
2979        },
2980        fadeOut: {
2981            opacity: "hide"
2982        },
2983        fadeToggle: {
2984            opacity: "toggle"
2985        }
2986    }, function(t, e) {
2987        y.fn[t] = function(t, n, r) {
2988            return this.animate(e, t, n, r)
2989        }
2990    }),
2991    y.timers = [],
2992    y.fx.tick = function() {
2993        var t, e = 0, n = y.timers;
2994        for (Zt = y.now(); e < n.length; e++)
2995            (t = n[e])() || n[e] !== t || n.splice(e--, 1);
2996        n.length || y.fx.stop(),
2997        Zt = void 0
2998    }
2999    ,
3000    y.fx.timer = function(t) {
3001        y.timers.push(t),
3002        y.fx.start()
3003    }
3004    ,
3005    y.fx.interval = 13,
3006    y.fx.start = function() {
3007        te || (te = !0,
3008        re())
3009    }
3010    ,
3011    y.fx.stop = function() {
3012        te = null
3013    }
3014    ,
3015    y.fx.speeds = {
3016        slow: 600,
3017        fast: 200,
3018        _default: 400
3019    },
3020    y.fn.delay = function(e, n) {
3021        return e = y.fx ? y.fx.speeds[e] || e : e,
3022        n = n || "fx",
3023        this.queue(n, function(n, r) {
3024            var i = t.setTimeout(n, e);
3025            r.stop = function() {
3026                t.clearTimeout(i)
3027            }
3028        })
3029    }
3030    ,
3031    function() {
3032        var t = r.createElement("input")
3033          , e = r.createElement("select")
3034          , n = e.appendChild(r.createElement("option"));
3035        t.type = "checkbox",
3036        p.checkOn = "" !== t.value,
3037        p.optSelected = n.selected,
3038        t = r.createElement("input"),
3039        t.value = "t",
3040        t.type = "radio",
3041        p.radioValue = "t" === t.value
3042    }();
3043    var ce, he = y.expr.attrHandle;
3044    y.fn.extend({
3045        attr: function(t, e) {
3046            return B(this, y.attr, t, e, arguments.length > 1)
3047        },
3048        removeAttr: function(t) {
3049            return this.each(function() {
3050                y.removeAttr(this, t)
3051            })
3052        }
3053    }),
3054    y.extend({
3055        attr: function(t, e, n) {
3056            var r, i, o = t.nodeType;
3057            if (3 !== o && 8 !== o && 2 !== o)
3058                return void 0 === t.getAttribute ? y.prop(t, e, n) : (1 === o && y.isXMLDoc(t) || (i = y.attrHooks[e.toLowerCase()] || (y.expr.match.bool.test(e) ? ce : void 0)),
3059                void 0 !== n ? null === n ? void y.removeAttr(t, e) : i && "set"in i && void 0 !== (r = i.set(t, n, e)) ? r : (t.setAttribute(e, n + ""),
3060                n) : i && "get"in i && null !== (r = i.get(t, e)) ? r : (r = y.find.attr(t, e),
3061                null == r ? void 0 : r))
3062        },
3063        attrHooks: {
3064            type: {
3065                set: function(t, e) {
3066                    if (!p.radioValue && "radio" === e && S(t, "input")) {
3067                        var n = t.value;
3068                        return t.setAttribute("type", e),
3069                        n && (t.value = n),
3070                        e
3071                    }
3072                }
3073            }
3074        },
3075        removeAttr: function(t, e) {
3076            var n, r = 0, i = e && e.match(F);
3077            if (i && 1 === t.nodeType)
3078                for (; n = i[r++]; )
3079                    t.removeAttribute(n)
3080        }
3081    }),
3082    ce = {
3083        set: function(t, e, n) {
3084            return !1 === e ? y.removeAttr(t, n) : t.setAttribute(n, n),
3085            n
3086        }
3087    },
3088    y.each(y.expr.match.bool.source.match(/\w+/g), function(t, e) {
3089        var n = he[e] || y.find.attr;
3090        he[e] = function(t, e, r) {
3091            var i, o, a = e.toLowerCase();
3092            return r || (o = he[a],
3093            he[a] = i,
3094            i = null != n(t, e, r) ? a : null,
3095            he[a] = o),
3096            i
3097        }
3098    });
3099    var de = /^(?:input|select|textarea|button)$/i
3100      , fe = /^(?:a|area)$/i;
3101    y.fn.extend({
3102        prop: function(t, e) {
3103            return B(this, y.prop, t, e, arguments.length > 1)
3104        },
3105        removeProp: function(t) {
3106            return this.each(function() {
3107                delete this[y.propFix[t] || t]
3108            })
3109        }
3110    }),
3111    y.extend({
3112        prop: function(t, e, n) {
3113            var r, i, o = t.nodeType;
3114            if (3 !== o && 8 !== o && 2 !== o)
3115                return 1 === o && y.isXMLDoc(t) || (e = y.propFix[e] || e,
3116                i = y.propHooks[e]),
3117                void 0 !== n ? i && "set"in i && void 0 !== (r = i.set(t, n, e)) ? r : t[e] = n : i && "get"in i && null !== (r = i.get(t, e)) ? r : t[e]
3118        },
3119        propHooks: {
3120            tabIndex: {
3121                get: function(t) {
3122                    var e = y.find.attr(t, "tabindex");
3123                    return e ? parseInt(e, 10) : de.test(t.nodeName) || fe.test(t.nodeName) && t.href ? 0 : -1
3124                }
3125            }
3126        },
3127        propFix: {
3128            for: "htmlFor",
3129            class: "className"
3130        }
3131    }),
3132    p.optSelected || (y.propHooks.selected = {
3133        get: function(t) {
3134            var e = t.parentNode;
3135            return e && e.parentNode && e.parentNode.selectedIndex,
3136            null
3137        },
3138        set: function(t) {
3139            var e = t.parentNode;
3140            e && (e.selectedIndex,
3141            e.parentNode && e.parentNode.selectedIndex)
3142        }
3143    }),
3144    y.each(["tabIndex", "readOnly", "maxLength", "cellSpacing", "cellPadding", "rowSpan", "colSpan", "useMap", "frameBorder", "contentEditable"], function() {
3145        y.propFix[this.toLowerCase()] = this
3146    });
3147    function pe(t) {
3148        return (t.match(F) || []).join(" ")
3149    }
3150    function ge(t) {
3151        return t.getAttribute && t.getAttribute("class") || ""
3152    }
3153    y.fn.extend({
3154        addClass: function(t) {
3155            var e, n, r, i, o, a, s, u = 0;
3156            if (y.isFunction(t))
3157                return this.each(function(e) {
3158                    y(this).addClass(t.call(this, e, ge(this)))
3159                });
3160            if ("string" == typeof t && t)
3161                for (e = t.match(F) || []; n = this[u++]; )
3162                    if (i = ge(n),
3163                    r = 1 === n.nodeType && " " + pe(i) + " ") {
3164                        for (a = 0; o = e[a++]; )
3165                            r.indexOf(" " + o + " ") < 0 && (r += o + " ");
3166                        s = pe(r),
3167                        i !== s && n.setAttribute("class", s)
3168                    }
3169            return this
3170        },
3171        removeClass: function(t) {
3172            var e, n, r, i, o, a, s, u = 0;
3173            if (y.isFunction(t))
3174                return this.each(function(e) {
3175                    y(this).removeClass(t.call(this, e, ge(this)))
3176                });
3177            if (!arguments.length)
3178                return this.attr("class", "");
3179            if ("string" == typeof t && t)
3180                for (e = t.match(F) || []; n = this[u++]; )
3181                    if (i = ge(n),
3182                    r = 1 === n.nodeType && " " + pe(i) + " ") {
3183                        for (a = 0; o = e[a++]; )
3184                            for (; r.indexOf(" " + o + " ") > -1; )
3185                                r = r.replace(" " + o + " ", " ");
3186                        s = pe(r),
3187                        i !== s && n.setAttribute("class", s)
3188                    }
3189            return this
3190        },
3191        toggleClass: function(t, e) {
3192            var n = typeof t;
3193            return "boolean" == typeof e && "string" === n ? e ? this.addClass(t) : this.removeClass(t) : y.isFunction(t) ? this.each(function(n) {
3194                y(this).toggleClass(t.call(this, n, ge(this), e), e)
3195            }) : this.each(function() {
3196                var e, r, i, o;
3197                if ("string" === n)
3198                    for (r = 0,
3199                    i = y(this),
3200                    o = t.match(F) || []; e = o[r++]; )
3201                        i.hasClass(e) ? i.removeClass(e) : i.addClass(e);
3202                else
3203                    void 0 !== t && "boolean" !== n || (e = ge(this),
3204                    e && W.set(this, "__className__", e),
3205                    this.setAttribute && this.setAttribute("class", e || !1 === t ? "" : W.get(this, "__className__") || ""))
3206            })
3207        },
3208        hasClass: function(t) {
3209            var e, n, r = 0;
3210            for (e = " " + t + " "; n = this[r++]; )
3211                if (1 === n.nodeType && (" " + pe(ge(n)) + " ").indexOf(e) > -1)
3212                    return !0;
3213            return !1
3214        }
3215    });
3216    var me = /\r/g;
3217    y.fn.extend({
3218        val: function(t) {
3219            var e, n, r, i = this[0];
3220            return arguments.length ? (r = y.isFunction(t),
3221            this.each(function(n) {
3222                var i;
3223                1 === this.nodeType && (i = r ? t.call(this, n, y(this).val()) : t,
3224                null == i ? i = "" : "number" == typeof i ? i += "" : Array.isArray(i) && (i = y.map(i, function(t) {
3225                    return null == t ? "" : t + ""
3226                })),
3227                (e = y.valHooks[this.type] || y.valHooks[this.nodeName.toLowerCase()]) && "set"in e && void 0 !== e.set(this, i, "value") || (this.value = i))
3228            })) : i ? (e = y.valHooks[i.type] || y.valHooks[i.nodeName.toLowerCase()],
3229            e && "get"in e && void 0 !== (n = e.get(i, "value")) ? n : (n = i.value,
3230            "string" == typeof n ? n.replace(me, "") : null == n ? "" : n)) : void 0
3231        }
3232    }),
3233    y.extend({
3234        valHooks: {
3235            option: {
3236                get: function(t) {
3237                    var e = y.find.attr(t, "value");
3238                    return null != e ? e : pe(y.text(t))
3239                }
3240            },
3241            select: {
3242                get: function(t) {
3243                    var e, n, r, i = t.options, o = t.selectedIndex, a = "select-one" === t.type, s = a ? null : [], u = a ? o + 1 : i.length;
3244                    for (r = o < 0 ? u : a ? o : 0; r < u; r++)
3245                        if (n = i[r],
3246                        (n.selected || r === o) && !n.disabled && (!n.parentNode.disabled || !S(n.parentNode, "optgroup"))) {
3247                            if (e = y(n).val(),
3248                            a)
3249                                return e;
3250                            s.push(e)
3251                        }
3252                    return s
3253                },
3254                set: function(t, e) {
3255                    for (var n, r, i = t.options, o = y.makeArray(e), a = i.length; a--; )
3256                        r = i[a],
3257                        (r.selected = y.inArray(y.valHooks.option.get(r), o) > -1) && (n = !0);
3258                    return n || (t.selectedIndex = -1),
3259                    o
3260                }
3261            }
3262        }
3263    }),
3264    y.each(["radio", "checkbox"], function() {
3265        y.valHooks[this] = {
3266            set: function(t, e) {
3267                if (Array.isArray(e))
3268                    return t.checked = y.inArray(y(t).val(), e) > -1
3269            }
3270        },
3271        p.checkOn || (y.valHooks[this].get = function(t) {
3272            return null === t.getAttribute("value") ? "on" : t.value
3273        }
3274        )
3275    });
3276    var ye = /^(?:focusinfocus|focusoutblur)$/;
3277    y.extend(y.event, {
3278        trigger: function(e, n, i, o) {
3279            var a, s, u, l, c, d, f, p = [i || r], g = h.call(e, "type") ? e.type : e, m = h.call(e, "namespace") ? e.namespace.split(".") : [];
3280            if (s = u = i = i || r,
3281            3 !== i.nodeType && 8 !== i.nodeType && !ye.test(g + y.event.triggered) && (g.indexOf(".") > -1 && (m = g.split("."),
3282            g = m.shift(),
3283            m.sort()),
3284            c = g.indexOf(":") < 0 && "on" + g,
3285            e = e[y.expando] ? e : new y.Event(g,"object" == typeof e && e),
3286            e.isTrigger = o ? 2 : 3,
3287            e.namespace = m.join("."),
3288            e.rnamespace = e.namespace ? new RegExp("(^|\\.)" + m.join("\\.(?:.*\\.|)") + "(\\.|$)") : null,
3289            e.result = void 0,
3290            e.target || (e.target = i),
3291            n = null == n ? [e] : y.makeArray(n, [e]),
3292            f = y.event.special[g] || {},
3293            o || !f.trigger || !1 !== f.trigger.apply(i, n))) {
3294                if (!o && !f.noBubble && !y.isWindow(i)) {
3295                    for (l = f.delegateType || g,
3296                    ye.test(l + g) || (s = s.parentNode); s; s = s.parentNode)
3297                        p.push(s),
3298                        u = s;
3299                    u === (i.ownerDocument || r) && p.push(u.defaultView || u.parentWindow || t)
3300                }
3301                for (a = 0; (s = p[a++]) && !e.isPropagationStopped(); )
3302                    e.type = a > 1 ? l : f.bindType || g,
3303                    d = (W.get(s, "events") || {})[e.type] && W.get(s, "handle"),
3304                    d && d.apply(s, n),
3305                    (d = c && s[c]) && d.apply && V(s) && (e.result = d.apply(s, n),
3306                    !1 === e.result && e.preventDefault());
3307                return e.type = g,
3308                o || e.isDefaultPrevented() || f._default && !1 !== f._default.apply(p.pop(), n) || !V(i) || c && y.isFunction(i[g]) && !y.isWindow(i) && (u = i[c],
3309                u && (i[c] = null),
3310                y.event.triggered = g,
3311                i[g](),
3312                y.event.triggered = void 0,
3313                u && (i[c] = u)),
3314                e.result
3315            }
3316        },
3317        simulate: function(t, e, n) {
3318            var r = y.extend(new y.Event, n, {
3319                type: t,
3320                isSimulated: !0
3321            });
3322            y.event.trigger(r, null, e)
3323        }
3324    }),
3325    y.fn.extend({
3326        trigger: function(t, e) {
3327            return this.each(function() {
3328                y.event.trigger(t, e, this)
3329            })
3330        },
3331        triggerHandler: function(t, e) {
3332            var n = this[0];
3333            if (n)
3334                return y.event.trigger(t, e, n, !0)
3335        }
3336    }),
3337    y.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "), function(t, e) {
3338        y.fn[e] = function(t, n) {
3339            return arguments.length > 0 ? this.on(e, null, t, n) : this.trigger(e)
3340        }
3341    }),
3342    y.fn.extend({
3343        hover: function(t, e) {
3344            return this.mouseenter(t).mouseleave(e || t)
3345        }
3346    }),
3347    p.focusin = "onfocusin"in t,
3348    p.focusin || y.each({
3349        focus: "focusin",
3350        blur: "focusout"
3351    }, function(t, e) {
3352        var n = function(t) {
3353            y.event.simulate(e, t.target, y.event.fix(t))
3354        };
3355        y.event.special[e] = {
3356            setup: function() {
3357                var r = this.ownerDocument || this
3358                  , i = W.access(r, e);
3359                i || r.addEventListener(t, n, !0),
3360                W.access(r, e, (i || 0) + 1)
3361            },
3362            teardown: function() {
3363                var r = this.ownerDocument || this
3364                  , i = W.access(r, e) - 1;
3365                i ? W.access(r, e, i) : (r.removeEventListener(t, n, !0),
3366                W.remove(r, e))
3367            }
3368        }
3369    });
3370    var ve = t.location
3371      , be = y.now()
3372      , we = /\?/;
3373    y.parseXML = function(e) {
3374        var n;
3375        if (!e || "string" != typeof e)
3376            return null;
3377        try {
3378            n = (new t.DOMParser).parseFromString(e, "text/xml")
3379        } catch (t) {
3380            n = void 0
3381        }
3382        return n && !n.getElementsByTagName("parsererror").length || y.error("Invalid XML: " + e),
3383        n
3384    }
3385    ;
3386    var xe = /\[\]$/
3387      , _e = /\r?\n/g
3388      , Ce = /^(?:submit|button|image|reset|file)$/i
3389      , ke = /^(?:input|select|textarea|keygen)/i;
3390    function je(t, e, n, r) {
3391        var i;
3392        if (Array.isArray(e))
3393            y.each(e, function(e, i) {
3394                n || xe.test(t) ? r(t, i) : je(t + "[" + ("object" == typeof i && null != i ? e : "") + "]", i, n, r)
3395            });
3396        else if (n || "object" !== y.type(e))
3397            r(t, e);
3398        else
3399            for (i in e)
3400                je(t + "[" + i + "]", e[i], n, r)
3401    }
3402    y.param = function(t, e) {
3403        var n, r = [], i = function(t, e) {
3404            var n = y.isFunction(e) ? e() : e;
3405            r[r.length] = encodeURIComponent(t) + "=" + encodeURIComponent(null == n ? "" : n)
3406        };
3407        if (Array.isArray(t) || t.jquery && !y.isPlainObject(t))
3408            y.each(t, function() {
3409                i(this.name, this.value)
3410            });
3411        else
3412            for (n in t)
3413                je(n, t[n], e, i);
3414        return r.join("&")
3415    }
3416    ,
3417    y.fn.extend({
3418        serialize: function() {
3419            return y.param(this.serializeArray())
3420        },
3421        serializeArray: function() {
3422            return this.map(function() {
3423                var t = y.prop(this, "elements");
3424                return t ? y.makeArray(t) : this
3425            }).filter(function() {
3426                var t = this.type;
3427                return this.name && !y(this).is(":disabled") && ke.test(this.nodeName) && !Ce.test(t) && (this.checked || !ut.test(t))
3428            }).map(function(t, e) {
3429                var n = y(this).val();
3430                return null == n ? null : Array.isArray(n) ? y.map(n, function(t) {
3431                    return {
3432                        name: e.name,
3433                        value: t.replace(_e, "\r\n")
3434                    }
3435                }) : {
3436                    name: e.name,
3437                    value: n.replace(_e, "\r\n")
3438                }
3439            }).get()
3440        }
3441    });
3442    var Te = /%20/g
3443      , Se = /#.*$/
3444      , Ee = /([?&])_=[^&]*/
3445      , Ae = /^(.*?):[ \t]*([^\r\n]*)$/gm
3446      , Me = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/
3447      , Qe = /^(?:GET|HEAD)$/
3448      , $e = /^\/\//
3449      , De = {}
3450      , Ie = {}
3451      , Ne = "*/".concat("*")
3452      , Fe = r.createElement("a");
3453    Fe.href = ve.href;
3454    function Le(t) {
3455        return function(e, n) {
3456            "string" != typeof e && (n = e,
3457            e = "*");
3458            var r, i = 0, o = e.toLowerCase().match(F) || [];
3459            if (y.isFunction(n))
3460                for (; r = o[i++]; )
3461                    "+" === r[0] ? (r = r.slice(1) || "*",
3462                    (t[r] = t[r] || []).unshift(n)) : (t[r] = t[r] || []).push(n)
3463        }
3464    }
3465    function Pe(t, e, n, r) {
3466        var i = {}
3467          , o = t === Ie;
3468        function a(s) {
3469            var u;
3470            return i[s] = !0,
3471            y.each(t[s] || [], function(t, s) {
3472                var l = s(e, n, r);
3473                return "string" != typeof l || o || i[l] ? o ? !(u = l) : void 0 : (e.dataTypes.unshift(l),
3474                a(l),
3475                !1)
3476            }),
3477            u
3478        }
3479        return a(e.dataTypes[0]) || !i["*"] && a("*")
3480    }
3481    function Oe(t, e) {
3482        var n, r, i = y.ajaxSettings.flatOptions || {};
3483        for (n in e)
3484            void 0 !== e[n] && ((i[n] ? t : r || (r = {}))[n] = e[n]);
3485        return r && y.extend(!0, t, r),
3486        t
3487    }
3488    function qe(t, e, n) {
3489        for (var r, i, o, a, s = t.contents, u = t.dataTypes; "*" === u[0]; )
3490            u.shift(),
3491            void 0 === r && (r = t.mimeType || e.getResponseHeader("Content-Type"));
3492        if (r)
3493            for (i in s)
3494                if (s[i] && s[i].test(r)) {
3495                    u.unshift(i);
3496                    break
3497                }
3498        if (u[0]in n)
3499            o = u[0];
3500        else {
3501            for (i in n) {
3502                if (!u[0] || t.converters[i + " " + u[0]]) {
3503                    o = i;
3504                    break
3505                }
3506                a || (a = i)
3507            }
3508            o = o || a
3509        }
3510        if (o)
3511            return o !== u[0] && u.unshift(o),
3512            n[o]
3513    }
3514    function Re(t, e, n, r) {
3515        var i, o, a, s, u, l = {}, c = t.dataTypes.slice();
3516        if (c[1])
3517            for (a in t.converters)
3518                l[a.toLowerCase()] = t.converters[a];
3519        for (o = c.shift(); o; )
3520            if (t.responseFields[o] && (n[t.responseFields[o]] = e),
3521            !u && r && t.dataFilter && (e = t.dataFilter(e, t.dataType)),
3522            u = o,
3523            o = c.shift())
3524                if ("*" === o)
3525                    o = u;
3526                else if ("*" !== u && u !== o) {
3527                    if (!(a = l[u + " " + o] || l["* " + o]))
3528                        for (i in l)
3529                            if (s = i.split(" "),
3530                            s[1] === o && (a = l[u + " " + s[0]] || l["* " + s[0]])) {
3531                                !0 === a ? a = l[i] : !0 !== l[i] && (o = s[0],
3532                                c.unshift(s[1]));
3533                                break
3534                            }
3535                    if (!0 !== a)
3536                        if (a && t.throws)
3537                            e = a(e);
3538                        else
3539                            try {
3540                                e = a(e)
3541                            } catch (t) {
3542                                return {
3543                                    state: "parsererror",
3544                                    error: a ? t : "No conversion from " + u + " to " + o
3545                                }
3546                            }
3547                }
3548        return {
3549            state: "success",
3550            data: e
3551        }
3552    }
3553    y.extend({
3554        active: 0,
3555        lastModified: {},
3556        etag: {},
3557        ajaxSettings: {
3558            url: ve.href,
3559            type: "GET",
3560            isLocal: Me.test(ve.protocol),
3561            global: !0,
3562            processData: !0,
3563            async: !0,
3564            contentType: "application/x-www-form-urlencoded; charset=UTF-8",
3565            accepts: {
3566                "*": Ne,
3567                text: "text/plain",
3568                html: "text/html",
3569                xml: "application/xml, text/xml",
3570                json: "application/json, text/javascript"
3571            },
3572            contents: {
3573                xml: /\bxml\b/,
3574                html: /\bhtml/,
3575                json: /\bjson\b/
3576            },
3577            responseFields: {
3578                xml: "responseXML",
3579                text: "responseText",
3580                json: "responseJSON"
3581            },
3582            converters: {
3583                "* text": String,
3584                "text html": !0,
3585                "text json": JSON.parse,
3586                "text xml": y.parseXML
3587            },
3588            flatOptions: {
3589                url: !0,
3590                context: !0
3591            }
3592        },
3593        ajaxSetup: function(t, e) {
3594            return e ? Oe(Oe(t, y.ajaxSettings), e) : Oe(y.ajaxSettings, t)
3595        },
3596        ajaxPrefilter: Le(De),
3597        ajaxTransport: Le(Ie),
3598        ajax: function(e, n) {
3599            "object" == typeof e && (n = e,
3600            e = void 0),
3601            n = n || {};
3602            var i, o, a, s, u, l, c, h, d, f, p = y.ajaxSetup({}, n), g = p.context || p, m = p.context && (g.nodeType || g.jquery) ? y(g) : y.event, v = y.Deferred(), b = y.Callbacks("once memory"), w = p.statusCode || {}, x = {}, _ = {}, C = "canceled", k = {
3603                readyState: 0,
3604                getResponseHeader: function(t) {
3605                    var e;
3606                    if (c) {
3607                        if (!s)
3608                            for (s = {}; e = Ae.exec(a); )
3609                                s[e[1].toLowerCase()] = e[2];
3610                        e = s[t.toLowerCase()]
3611                    }
3612                    return null == e ? null : e
3613                },
3614                getAllResponseHeaders: function() {
3615                    return c ? a : null
3616                },
3617                setRequestHeader: function(t, e) {
3618                    return null == c && (t = _[t.toLowerCase()] = _[t.toLowerCase()] || t,
3619                    x[t] = e),
3620                    this
3621                },
3622                overrideMimeType: function(t) {
3623                    return null == c && (p.mimeType = t),
3624                    this
3625                },
3626                statusCode: function(t) {
3627                    var e;
3628                    if (t)
3629                        if (c)
3630                            k.always(t[k.status]);
3631                        else
3632                            for (e in t)
3633                                w[e] = [w[e], t[e]];
3634                    return this
3635                },
3636                abort: function(t) {
3637                    var e = t || C;
3638                    return i && i.abort(e),
3639                    j(0, e),
3640                    this
3641                }
3642            };
3643            if (v.promise(k),
3644            p.url = ((e || p.url || ve.href) + "").replace($e, ve.protocol + "//"),
3645            p.type = n.method || n.type || p.method || p.type,
3646            p.dataTypes = (p.dataType || "*").toLowerCase().match(F) || [""],
3647            null == p.crossDomain) {
3648                l = r.createElement("a");
3649                try {
3650                    l.href = p.url,
3651                    l.href = l.href,
3652                    p.crossDomain = Fe.protocol + "//" + Fe.host != l.protocol + "//" + l.host
3653                } catch (t) {
3654                    p.crossDomain = !0
3655                }
3656            }
3657            if (p.data && p.processData && "string" != typeof p.data && (p.data = y.param(p.data, p.traditional)),
3658            Pe(De, p, n, k),
3659            c)
3660                return k;
3661            h = y.event && p.global,
3662            h && 0 == y.active++ && y.event.trigger("ajaxStart"),
3663            p.type = p.type.toUpperCase(),
3664            p.hasContent = !Qe.test(p.type),
3665            o = p.url.replace(Se, ""),
3666            p.hasContent ? p.data && p.processData && 0 === (p.contentType || "").indexOf("application/x-www-form-urlencoded") && (p.data = p.data.replace(Te, "+")) : (f = p.url.slice(o.length),
3667            p.data && (o += (we.test(o) ? "&" : "?") + p.data,
3668            delete p.data),
3669            !1 === p.cache && (o = o.replace(Ee, "$1"),
3670            f = (we.test(o) ? "&" : "?") + "_=" + be++ + f),
3671            p.url = o + f),
3672            p.ifModified && (y.lastModified[o] && k.setRequestHeader("If-Modified-Since", y.lastModified[o]),
3673            y.etag[o] && k.setRequestHeader("If-None-Match", y.etag[o])),
3674            (p.data && p.hasContent && !1 !== p.contentType || n.contentType) && k.setRequestHeader("Content-Type", p.contentType),
3675            k.setRequestHeader("Accept", p.dataTypes[0] && p.accepts[p.dataTypes[0]] ? p.accepts[p.dataTypes[0]] + ("*" !== p.dataTypes[0] ? ", " + Ne + "; q=0.01" : "") : p.accepts["*"]);
3676            for (d in p.headers)
3677                k.setRequestHeader(d, p.headers[d]);
3678            if (p.beforeSend && (!1 === p.beforeSend.call(g, k, p) || c))
3679                return k.abort();
3680            if (C = "abort",
3681            b.add(p.complete),
3682            k.done(p.success),
3683            k.fail(p.error),
3684            i = Pe(Ie, p, n, k)) {
3685                if (k.readyState = 1,
3686                h && m.trigger("ajaxSend", [k, p]),
3687                c)
3688                    return k;
3689                p.async && p.timeout > 0 && (u = t.setTimeout(function() {
3690                    k.abort("timeout")
3691                }, p.timeout));
3692                try {
3693                    c = !1,
3694                    i.send(x, j)
3695                } catch (t) {
3696                    if (c)
3697                        throw t;
3698                    j(-1, t)
3699                }
3700            } else
3701                j(-1, "No Transport");
3702            function j(e, n, r, s) {
3703                var l, d, f, x, _, C = n;
3704                c || (c = !0,
3705                u && t.clearTimeout(u),
3706                i = void 0,
3707                a = s || "",
3708                k.readyState = e > 0 ? 4 : 0,
3709                l = e >= 200 && e < 300 || 304 === e,
3710                r && (x = qe(p, k, r)),
3711                x = Re(p, x, k, l),
3712                l ? (p.ifModified && (_ = k.getResponseHeader("Last-Modified"),
3713                _ && (y.lastModified[o] = _),
3714                (_ = k.getResponseHeader("etag")) && (y.etag[o] = _)),
3715                204 === e || "HEAD" === p.type ? C = "nocontent" : 304 === e ? C = "notmodified" : (C = x.state,
3716                d = x.data,
3717                f = x.error,
3718                l = !f)) : (f = C,
3719                !e && C || (C = "error",
3720                e < 0 && (e = 0))),
3721                k.status = e,
3722                k.statusText = (n || C) + "",
3723                l ? v.resolveWith(g, [d, C, k]) : v.rejectWith(g, [k, C, f]),
3724                k.statusCode(w),
3725                w = void 0,
3726                h && m.trigger(l ? "ajaxSuccess" : "ajaxError", [k, p, l ? d : f]),
3727                b.fireWith(g, [k, C]),
3728                h && (m.trigger("ajaxComplete", [k, p]),
3729                --y.active || y.event.trigger("ajaxStop")))
3730            }
3731            return k
3732        },
3733        getJSON: function(t, e, n) {
3734            return y.get(t, e, n, "json")
3735        },
3736        getScript: function(t, e) {
3737            return y.get(t, void 0, e, "script")
3738        }
3739    }),
3740    y.each(["get", "post"], function(t, e) {
3741        y[e] = function(t, n, r, i) {
3742            return y.isFunction(n) && (i = i || r,
3743            r = n,
3744            n = void 0),
3745            y.ajax(y.extend({
3746                url: t,
3747                type: e,
3748                dataType: i,
3749                data: n,
3750                success: r
3751            }, y.isPlainObject(t) && t))
3752        }
3753    }),
3754    y._evalUrl = function(t) {
3755        return y.ajax({
3756            url: t,
3757            type: "GET",
3758            dataType: "script",
3759            cache: !0,
3760            async: !1,
3761            global: !1,
3762            throws: !0
3763        })
3764    }
3765    ,
3766    y.fn.extend({
3767        wrapAll: function(t) {
3768            var e;
3769            return this[0] && (y.isFunction(t) && (t = t.call(this[0])),
3770            e = y(t, this[0].ownerDocument).eq(0).clone(!0),
3771            this[0].parentNode && e.insertBefore(this[0]),
3772            e.map(function() {
3773                for (var t = this; t.firstElementChild; )
3774                    t = t.firstElementChild;
3775                return t
3776            }).append(this)),
3777            this
3778        },
3779        wrapInner: function(t) {
3780            return y.isFunction(t) ? this.each(function(e) {
3781                y(this).wrapInner(t.call(this, e))
3782            }) : this.each(function() {
3783                var e = y(this)
3784                  , n = e.contents();
3785                n.length ? n.wrapAll(t) : e.append(t)
3786            })
3787        },
3788        wrap: function(t) {
3789            var e = y.isFunction(t);
3790            return this.each(function(n) {
3791                y(this).wrapAll(e ? t.call(this, n) : t)
3792            })
3793        },
3794        unwrap: function(t) {
3795            return this.parent(t).not("body").each(function() {
3796                y(this).replaceWith(this.childNodes)
3797            }),
3798            this
3799        }
3800    }),
3801    y.expr.pseudos.hidden = function(t) {
3802        return !y.expr.pseudos.visible(t)
3803    }
3804    ,
3805    y.expr.pseudos.visible = function(t) {
3806        return !!(t.offsetWidth || t.offsetHeight || t.getClientRects().length)
3807    }
3808    ,
3809    y.ajaxSettings.xhr = function() {
3810        try {
3811            return new t.XMLHttpRequest
3812        } catch (t) {}
3813    }
3814    ;
3815    var ze = {
3816        0: 200,
3817        1223: 204
3818    }
3819      , He = y.ajaxSettings.xhr();
3820    p.cors = !!He && "withCredentials"in He,
3821    p.ajax = He = !!He,
3822    y.ajaxTransport(function(e) {
3823        var n, r;
vendor: 4,081 bytes, lines 3824-3924
3824        if (p.cors || He && !e.crossDomain)
3825            return {
3826                send: function(i, o) {
3827                    var a, s = e.xhr();
3828                    if (s.open(e.type, e.url, e.async, e.username, e.password),
3829                    e.xhrFields)
3830                        for (a in e.xhrFields)
3831                            s[a] = e.xhrFields[a];
3832                    e.mimeType && s.overrideMimeType && s.overrideMimeType(e.mimeType),
3833                    e.crossDomain || i["X-Requested-With"] || (i["X-Requested-With"] = "XMLHttpRequest");
3834                    for (a in i)
3835                        s.setRequestHeader(a, i[a]);
3836                    n = function(t) {
3837                        return function() {
3838                            n && (n = r = s.onload = s.onerror = s.onabort = s.onreadystatechange = null,
3839                            "abort" === t ? s.abort() : "error" === t ? "number" != typeof s.status ? o(0, "error") : o(s.status, s.statusText) : o(ze[s.status] || s.status, s.statusText, "text" !== (s.responseType || "text") || "string" != typeof s.responseText ? {
3840                                binary: s.response
3841                            } : {
3842                                text: s.responseText
3843                            }, s.getAllResponseHeaders()))
3844                        }
3845                    }
3846                    ,
3847                    s.onload = n(),
3848                    r = s.onerror = n("error"),
3849                    void 0 !== s.onabort ? s.onabort = r : s.onreadystatechange = function() {
3850                        4 === s.readyState && t.setTimeout(function() {
3851                            n && r()
3852                        })
3853                    }
3854                    ,
3855                    n = n("abort");
3856                    try {
3857                        s.send(e.hasContent && e.data || null)
3858                    } catch (t) {
3859                        if (n)
3860                            throw t
3861                    }
3862                },
3863                abort: function() {
3864                    n && n()
3865                }
3866            }
3867    }),
3868    y.ajaxPrefilter(function(t) {
3869        t.crossDomain && (t.contents.script = !1)
3870    }),
3871    y.ajaxSetup({
3872        accepts: {
3873            script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
3874        },
3875        contents: {
3876            script: /\b(?:java|ecma)script\b/
3877        },
3878        converters: {
3879            "text script": function(t) {
3880                return y.globalEval(t),
3881                t
3882            }
3883        }
3884    }),
3885    y.ajaxPrefilter("script", function(t) {
3886        void 0 === t.cache && (t.cache = !1),
3887        t.crossDomain && (t.type = "GET")
3888    }),
3889    y.ajaxTransport("script", function(t) {
3890        if (t.crossDomain) {
3891            var e, n;
3892            return {
3893                send: function(i, o) {
3894                    e = y("<script>").prop({
3895                        charset: t.scriptCharset,
3896                        src: t.url
3897                    }).on("load error", n = function(t) {
3898                        e.remove(),
3899                        n = null,
3900                        t && o("error" === t.type ? 404 : 200, t.type)
3901                    }
3902                    ),
3903                    r.head.appendChild(e[0])
3904                },
3905                abort: function() {
3906                    n && n()
3907                }
3908            }
3909        }
3910    });
3911    var Be = []
3912      , Ve = /(=)\?(?=&|$)|\?\?/;
3913    y.ajaxSetup({
3914        jsonp: "callback",
3915        jsonpCallback: function() {
3916            var t = Be.pop() || y.expando + "_" + be++;
3917            return this[t] = !0,
3918            t
3919        }
3920    }),
3921    y.ajaxPrefilter("json jsonp", function(e, n, r) {
3922        var i, o, a, s = !1 !== e.jsonp && (Ve.test(e.url) ? "url" : "string" == typeof e.data && 0 === (e.contentType || "").indexOf("application/x-www-form-urlencoded") && Ve.test(e.data) && "data");
3923        if (s || "jsonp" === e.dataTypes[0])
3924            return i = e.jsonpCallback = y.isFunction(e.jsonpCallback) ? e.jsonpCallback() : e.jsonpCallback,
vendor: 5,939 bytes, lines 3925-4090
3925            s ? e[s] = e[s].replace(Ve, "$1" + i) : !1 !== e.jsonp && (e.url += (we.test(e.url) ? "&" : "?") + e.jsonp + "=" + i),
3926            e.converters["script json"] = function() {
3927                return a || y.error(i + " was not called"),
3928                a[0]
3929            }
3930            ,
3931            e.dataTypes[0] = "json",
3932            o = t[i],
3933            t[i] = function() {
3934                a = arguments
3935            }
3936            ,
3937            r.always(function() {
3938                void 0 === o ? y(t).removeProp(i) : t[i] = o,
3939                e[i] && (e.jsonpCallback = n.jsonpCallback,
3940                Be.push(i)),
3941                a && y.isFunction(o) && o(a[0]),
3942                a = o = void 0
3943            }),
3944            "script"
3945    }),
3946    p.createHTMLDocument = function() {
3947        var t = r.implementation.createHTMLDocument("").body;
3948        return t.innerHTML = "<form></form><form></form>",
3949        2 === t.childNodes.length
3950    }(),
3951    y.parseHTML = function(t, e, n) {
3952        if ("string" != typeof t)
3953            return [];
3954        "boolean" == typeof e && (n = e,
3955        e = !1);
3956        var i, o, a;
3957        return e || (p.createHTMLDocument ? (e = r.implementation.createHTMLDocument(""),
3958        i = e.createElement("base"),
3959        i.href = r.location.href,
3960        e.head.appendChild(i)) : e = r),
3961        o = E.exec(t),
3962        a = !n && [],
3963        o ? [e.createElement(o[1])] : (o = gt([t], e, a),
3964        a && a.length && y(a).remove(),
3965        y.merge([], o.childNodes))
3966    }
3967    ,
3968    y.fn.load = function(t, e, n) {
3969        var r, i, o, a = this, s = t.indexOf(" ");
3970        return s > -1 && (r = pe(t.slice(s)),
3971        t = t.slice(0, s)),
3972        y.isFunction(e) ? (n = e,
3973        e = void 0) : e && "object" == typeof e && (i = "POST"),
3974        a.length > 0 && y.ajax({
3975            url: t,
3976            type: i || "GET",
3977            dataType: "html",
3978            data: e
3979        }).done(function(t) {
3980            o = arguments,
3981            a.html(r ? y("<div>").append(y.parseHTML(t)).find(r) : t)
3982        }).always(n && function(t, e) {
3983            a.each(function() {
3984                n.apply(this, o || [t.responseText, e, t])
3985            })
3986        }
3987        ),
3988        this
3989    }
3990    ,
3991    y.each(["ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend"], function(t, e) {
3992        y.fn[e] = function(t) {
3993            return this.on(e, t)
3994        }
3995    }),
3996    y.expr.pseudos.animated = function(t) {
3997        return y.grep(y.timers, function(e) {
3998            return t === e.elem
3999        }).length
4000    }
4001    ,
4002    y.offset = {
4003        setOffset: function(t, e, n) {
4004            var r, i, o, a, s, u, l, c = y.css(t, "position"), h = y(t), d = {};
4005            "static" === c && (t.style.position = "relative"),
4006            s = h.offset(),
4007            o = y.css(t, "top"),
4008            u = y.css(t, "left"),
4009            l = ("absolute" === c || "fixed" === c) && (o + u).indexOf("auto") > -1,
4010            l ? (r = h.position(),
4011            a = r.top,
4012            i = r.left) : (a = parseFloat(o) || 0,
4013            i = parseFloat(u) || 0),
4014            y.isFunction(e) && (e = e.call(t, n, y.extend({}, s))),
4015            null != e.top && (d.top = e.top - s.top + a),
4016            null != e.left && (d.left = e.left - s.left + i),
4017            "using"in e ? e.using.call(t, d) : h.css(d)
4018        }
4019    },
4020    y.fn.extend({
4021        offset: function(t) {
4022            if (arguments.length)
4023                return void 0 === t ? this : this.each(function(e) {
4024                    y.offset.setOffset(this, t, e)
4025                });
4026            var e, n, r, i, o = this[0];
4027            return o ? o.getClientRects().length ? (r = o.getBoundingClientRect(),
4028            e = o.ownerDocument,
4029            n = e.documentElement,
4030            i = e.defaultView,
4031            {
4032                top: r.top + i.pageYOffset - n.clientTop,
4033                left: r.left + i.pageXOffset - n.clientLeft
4034            }) : {
4035                top: 0,
4036                left: 0
4037            } : void 0
4038        },
4039        position: function() {
4040            if (this[0]) {
4041                var t, e, n = this[0], r = {
4042                    top: 0,
4043                    left: 0
4044                };
4045                return "fixed" === y.css(n, "position") ? e = n.getBoundingClientRect() : (t = this.offsetParent(),
4046                e = this.offset(),
4047                S(t[0], "html") || (r = t.offset()),
4048                r = {
4049                    top: r.top + y.css(t[0], "borderTopWidth", !0),
4050                    left: r.left + y.css(t[0], "borderLeftWidth", !0)
4051                }),
4052                {
4053                    top: e.top - r.top - y.css(n, "marginTop", !0),
4054                    left: e.left - r.left - y.css(n, "marginLeft", !0)
4055                }
4056            }
4057        },
4058        offsetParent: function() {
4059            return this.map(function() {
4060                for (var t = this.offsetParent; t && "static" === y.css(t, "position"); )
4061                    t = t.offsetParent;
4062                return t || mt
4063            })
4064        }
4065    }),
4066    y.each({
4067        scrollLeft: "pageXOffset",
4068        scrollTop: "pageYOffset"
4069    }, function(t, e) {
4070        var n = "pageYOffset" === e;
4071        y.fn[t] = function(r) {
4072            return B(this, function(t, r, i) {
4073                var o;
4074                return y.isWindow(t) ? o = t : 9 === t.nodeType && (o = t.defaultView),
4075                void 0 === i ? o ? o[e] : t[r] : void (o ? o.scrollTo(n ? o.pageXOffset : i, n ? i : o.pageYOffset) : t[r] = i)
4076            }, t, r, arguments.length)
4077        }
4078    }),
4079    y.each(["top", "left"], function(t, e) {
4080        y.cssHooks[e] = qt(p.pixelPosition, function(t, n) {
4081            if (n)
4082                return n = Ot(t, e),
4083                Lt.test(n) ? y(t).position()[e] + "px" : n
4084        })
4085    }),
4086    y.each({
4087        Height: "height",
4088        Width: "width"
4089    }, function(t, e) {
4090        y.each({
4091            padding: "inner" + t,
4092            content: e,
4093            "": "outer" + t
4094        }, function(n, r) {
4095            y.fn[r] = function(i, o) {
4096                var a = arguments.length && (n || "boolean" != typeof i)
4097                  , s = n || (!0 === i || !0 === o ? "margin" : "border");
4098                return B(this, function(e, n, i) {
4099                    var o;
4100                    return y.isWindow(e) ? 0 === r.indexOf("outer") ? e["inner" + t] : e.document.documentElement["client" + t] : 9 === e.nodeType ? (o = e.documentElement,
4101                    Math.max(e.body["scroll" + t], o["scroll" + t], e.body["offset" + t], o["offset" + t], o["client" + t])) : void 0 === i ? y.css(e, n, s) : y.style(e, n, i, s)
4102                }, e, a ? i : void 0, a)
4103            }
4104        })
4105    }),
4106    y.fn.extend({
4107        bind: function(t, e, n) {
4108            return this.on(t, null, e, n)
4109        },
4110        unbind: function(t, e) {
4111            return this.off(t, null, e)
4112        },
4113        delegate: function(t, e, n, r) {
4114            return this.on(e, t, n, r)
4115        },
4116        undelegate: function(t, e, n) {
4117            return 1 === arguments.length ? this.off(t, "**") : this.off(e, t || "**", n)
4118        },
4119        holdReady: function(t) {
4120            t ? y.readyWait++ : y.ready(!0)
4121        }
4122    }),
4123    y.isArray = Array.isArray,
4124    y.parseJSON = JSON.parse,
4125    y.nodeName = S,
4126    "function" == typeof define && define.amd && define("jquery", [], function() {
4127        return y
4128    });
4129    var Ue = t.jQuery
4130      , We = t.$;
4131    return y.noConflict = function(e) {
4132        return t.$ === y && (t.$ = We),
4133        e && t.jQuery === y && (t.jQuery = Ue),
4134        y
4135    }
4136    ,
4137    e || (t.jQuery = t.$ = y),
4138    y
4139}),
4140"undefined" == typeof jQuery)
4141    throw new Error("Bootstrap's JavaScript requires jQuery");
4142+function(t) {
4143    "use strict";
4144    var e = t.fn.jquery.split(" ")[0].split(".");
4145    if (e[0] < 2 && e[1] < 9 || 1 == e[0] && 9 == e[1] && e[2] < 1 || e[0] > 3)
4146        throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4")
4147}(jQuery),
4148function(t) {
4149    "use strict";
4150    function e() {
4151        var t = document.createElement("bootstrap")
4152          , e = {
4153            WebkitTransition: "webkitTransitionEnd",
4154            MozTransition: "transitionend",
4155            OTransition: "oTransitionEnd otransitionend",
4156            transition: "transitionend"
4157        };
4158        for (var n in e)
4159            if (void 0 !== t.style[n])
4160                return {
4161                    end: e[n]
4162                };
4163        return !1
4164    }
4165    t.fn.emulateTransitionEnd = function(e) {
4166        var n = !1
4167          , r = this;
4168        t(this).one("bsTransitionEnd", function() {
4169            n = !0
4170        });
4171        var i = function() {
4172            n || t(r).trigger(t.support.transition.end)
4173        };
4174        return setTimeout(i, e),
4175        this
4176    }
4177    ,
4178    t(function() {
4179        t.support.transition = e(),
4180        t.support.transition && (t.event.special.bsTransitionEnd = {
4181            bindType: t.support.transition.end,
4182            delegateType: t.support.transition.end,
4183            handle: function(e) {
4184                if (t(e.target).is(this))
4185                    return e.handleObj.handler.apply(this, arguments)
4186            }
4187        })
4188    })
4189}(jQuery),
4190function(t) {
4191    "use strict";
4192    var e = '[data-dismiss="alert"]'
4193      , n = function(n) {
4194        t(n).on("click", e, this.close)
4195    };
4196    n.VERSION = "3.3.7",
4197    n.TRANSITION_DURATION = 150,
4198    n.prototype.close = function(e) {
4199        var r = t(this)
4200          , i = r.attr("data-target");
4201        i || (i = r.attr("href"),
4202        i = i && i.replace(/.*(?=#[^\s]*$)/, ""));
4203        var o = t("#" === i ? [] : i);
4204        e && e.preventDefault(),
4205        o.length || (o = r.closest(".alert")),
4206        o.trigger(e = t.Event("close.bs.alert"));
4207        function a() {
4208            o.detach().trigger("closed.bs.alert").remove()
4209        }
4210        e.isDefaultPrevented() || (o.removeClass("in"),
4211        t.support.transition && o.hasClass("fade") ? o.one("bsTransitionEnd", a).emulateTransitionEnd(n.TRANSITION_DURATION) : a())
4212    }
4213    ;
4214    function r(e) {
4215        return this.each(function() {
4216            var r = t(this)
4217              , i = r.data("bs.alert");
4218            i || r.data("bs.alert", i = new n(this)),
4219            "string" == typeof e && i[e].call(r)
4220        })
4221    }
4222    var i = t.fn.alert;
4223    t.fn.alert = r,
4224    t.fn.alert.Constructor = n,
4225    t.fn.alert.noConflict = function() {
4226        return t.fn.alert = i,
4227        this
4228    }
4229    ,
4230    t(document).on("click.bs.alert.data-api", e, n.prototype.close)
4231}(jQuery),
4232function(t) {
4233    "use strict";
4234    var e = function(n, r) {
4235        this.$element = t(n),
4236        this.options = t.extend({}, e.DEFAULTS, r),
4237        this.isLoading = !1
4238    };
4239    e.VERSION = "3.3.7",
4240    e.DEFAULTS = {
4241        loadingText: "loading..."
4242    },
4243    e.prototype.setState = function(e) {
4244        var n = "disabled"
4245          , r = this.$element
4246          , i = r.is("input") ? "val" : "html"
4247          , o = r.data();
4248        e += "Text",
4249        null == o.resetText && r.data("resetText", r[i]()),
4250        setTimeout(t.proxy(function() {
4251            r[i](null == o[e] ? this.options[e] : o[e]),
4252            "loadingText" == e ? (this.isLoading = !0,
4253            r.addClass(n).attr(n, n).prop(n, !0)) : this.isLoading && (this.isLoading = !1,
4254            r.removeClass(n).removeAttr(n).prop(n, !1))
4255        }, this), 0)
4256    }
4257    ,
4258    e.prototype.toggle = function() {
4259        var t = !0
4260          , e = this.$element.closest('[data-toggle="buttons"]');
4261        if (e.length) {
4262            var n = this.$element.find("input");
4263            "radio" == n.prop("type") ? (n.prop("checked") && (t = !1),
4264            e.find(".active").removeClass("active"),
4265            this.$element.addClass("active")) : "checkbox" == n.prop("type") && (n.prop("checked") !== this.$element.hasClass("active") && (t = !1),
4266            this.$element.toggleClass("active")),
4267            n.prop("checked", this.$element.hasClass("active")),
4268            t && n.trigger("change")
4269        } else
4270            this.$element.attr("aria-pressed", !this.$element.hasClass("active")),
4271            this.$element.toggleClass("active")
4272    }
4273    ;
4274    function n(n) {
4275        return this.each(function() {
4276            var r = t(this)
4277              , i = r.data("bs.button")
4278              , o = "object" == typeof n && n;
4279            i || r.data("bs.button", i = new e(this,o)),
4280            "toggle" == n ? i.toggle() : n && i.setState(n)
4281        })
4282    }
4283    var r = t.fn.button;
4284    t.fn.button = n,
4285    t.fn.button.Constructor = e,
4286    t.fn.button.noConflict = function() {
4287        return t.fn.button = r,
4288        this
4289    }
4290    ,
4291    t(document).on("click.bs.button.data-api", '[data-toggle^="button"]', function(e) {
4292        var r = t(e.target).closest(".btn");
4293        n.call(r, "toggle"),
4294        t(e.target).is('input[type="radio"], input[type="checkbox"]') || (e.preventDefault(),
4295        r.is("input,button") ? r.trigger("focus") : r.find("input:visible,button:visible").first().trigger("focus"))
4296    }).on("focus.bs.button.data-api blur.bs.button.data-api", '[data-toggle^="button"]', function(e) {
4297        t(e.target).closest(".btn").toggleClass("focus", /^focus(in)?$/.test(e.type))
4298    })
4299}(jQuery),
4300function(t) {
4301    "use strict";
4302    var e = function(e, n) {
4303        this.$element = t(e),
4304        this.$indicators = this.$element.find(".carousel-indicators"),
4305        this.options = n,
4306        this.paused = null,
4307        this.sliding = null,
4308        this.interval = null,
4309        this.$active = null,
4310        this.$items = null,
vendor: 39,098 bytes, lines 4311-5346
4311        this.options.keyboard && this.$element.on("keydown.bs.carousel", t.proxy(this.keydown, this)),
4312        "hover" == this.options.pause && !("ontouchstart"in document.documentElement) && this.$element.on("mouseenter.bs.carousel", t.proxy(this.pause, this)).on("mouseleave.bs.carousel", t.proxy(this.cycle, this))
4313    };
4314    e.VERSION = "3.3.7",
4315    e.TRANSITION_DURATION = 600,
4316    e.DEFAULTS = {
4317        interval: 5e3,
4318        pause: "hover",
4319        wrap: !0,
4320        keyboard: !0
4321    },
4322    e.prototype.keydown = function(t) {
4323        if (!/input|textarea/i.test(t.target.tagName)) {
4324            switch (t.which) {
4325            case 37:
4326                this.prev();
4327                break;
4328            case 39:
4329                this.next();
4330                break;
4331            default:
4332                return
4333            }
4334            t.preventDefault()
4335        }
4336    }
4337    ,
4338    e.prototype.cycle = function(e) {
4339        return e || (this.paused = !1),
4340        this.interval && clearInterval(this.interval),
4341        this.options.interval && !this.paused && (this.interval = setInterval(t.proxy(this.next, this), this.options.interval)),
4342        this
4343    }
4344    ,
4345    e.prototype.getItemIndex = function(t) {
4346        return this.$items = t.parent().children(".item"),
4347        this.$items.index(t || this.$active)
4348    }
4349    ,
4350    e.prototype.getItemForDirection = function(t, e) {
4351        var n = this.getItemIndex(e);
4352        if (("prev" == t && 0 === n || "next" == t && n == this.$items.length - 1) && !this.options.wrap)
4353            return e;
4354        var r = "prev" == t ? -1 : 1
4355          , i = (n + r) % this.$items.length;
4356        return this.$items.eq(i)
4357    }
4358    ,
4359    e.prototype.to = function(t) {
4360        var e = this
4361          , n = this.getItemIndex(this.$active = this.$element.find(".item.active"));
4362        if (!(t > this.$items.length - 1 || t < 0))
4363            return this.sliding ? this.$element.one("slid.bs.carousel", function() {
4364                e.to(t)
4365            }) : n == t ? this.pause().cycle() : this.slide(t > n ? "next" : "prev", this.$items.eq(t))
4366    }
4367    ,
4368    e.prototype.pause = function(e) {
4369        return e || (this.paused = !0),
4370        this.$element.find(".next, .prev").length && t.support.transition && (this.$element.trigger(t.support.transition.end),
4371        this.cycle(!0)),
4372        this.interval = clearInterval(this.interval),
4373        this
4374    }
4375    ,
4376    e.prototype.next = function() {
4377        if (!this.sliding)
4378            return this.slide("next")
4379    }
4380    ,
4381    e.prototype.prev = function() {
4382        if (!this.sliding)
4383            return this.slide("prev")
4384    }
4385    ,
4386    e.prototype.slide = function(n, r) {
4387        var i = this.$element.find(".item.active")
4388          , o = r || this.getItemForDirection(n, i)
4389          , a = this.interval
4390          , s = "next" == n ? "left" : "right"
4391          , u = this;
4392        if (o.hasClass("active"))
4393            return this.sliding = !1;
4394        var l = o[0]
4395          , c = t.Event("slide.bs.carousel", {
4396            relatedTarget: l,
4397            direction: s
4398        });
4399        if (this.$element.trigger(c),
4400        !c.isDefaultPrevented()) {
4401            if (this.sliding = !0,
4402            a && this.pause(),
4403            this.$indicators.length) {
4404                this.$indicators.find(".active").removeClass("active");
4405                var h = t(this.$indicators.children()[this.getItemIndex(o)]);
4406                h && h.addClass("active")
4407            }
4408            var d = t.Event("slid.bs.carousel", {
4409                relatedTarget: l,
4410                direction: s
4411            });
4412            return t.support.transition && this.$element.hasClass("slide") ? (o.addClass(n),
4413            o[0].offsetWidth,
4414            i.addClass(s),
4415            o.addClass(s),
4416            i.one("bsTransitionEnd", function() {
4417                o.removeClass([n, s].join(" ")).addClass("active"),
4418                i.removeClass(["active", s].join(" ")),
4419                u.sliding = !1,
4420                setTimeout(function() {
4421                    u.$element.trigger(d)
4422                }, 0)
4423            }).emulateTransitionEnd(e.TRANSITION_DURATION)) : (i.removeClass("active"),
4424            o.addClass("active"),
4425            this.sliding = !1,
4426            this.$element.trigger(d)),
4427            a && this.cycle(),
4428            this
4429        }
4430    }
4431    ;
4432    function n(n) {
4433        return this.each(function() {
4434            var r = t(this)
4435              , i = r.data("bs.carousel")
4436              , o = t.extend({}, e.DEFAULTS, r.data(), "object" == typeof n && n)
4437              , a = "string" == typeof n ? n : o.slide;
4438            i || r.data("bs.carousel", i = new e(this,o)),
4439            "number" == typeof n ? i.to(n) : a ? i[a]() : o.interval && i.pause().cycle()
4440        })
4441    }
4442    var r = t.fn.carousel;
4443    t.fn.carousel = n,
4444    t.fn.carousel.Constructor = e,
4445    t.fn.carousel.noConflict = function() {
4446        return t.fn.carousel = r,
4447        this
4448    }
4449    ;
4450    var i = function(e) {
4451        var r, i = t(this), o = t(i.attr("data-target") || (r = i.attr("href")) && r.replace(/.*(?=#[^\s]+$)/, ""));
4452        if (o.hasClass("carousel")) {
4453            var a = t.extend({}, o.data(), i.data())
4454              , s = i.attr("data-slide-to");
4455            s && (a.interval = !1),
4456            n.call(o, a),
4457            s && o.data("bs.carousel").to(s),
4458            e.preventDefault()
4459        }
4460    };
4461    t(document).on("click.bs.carousel.data-api", "[data-slide]", i).on("click.bs.carousel.data-api", "[data-slide-to]", i),
4462    t(window).on("load", function() {
4463        t('[data-ride="carousel"]').each(function() {
4464            var e = t(this);
4465            n.call(e, e.data())
4466        })
4467    })
4468}(jQuery),
4469function(t) {
4470    "use strict";
4471    var e = function(n, r) {
4472        this.$element = t(n),
4473        this.options = t.extend({}, e.DEFAULTS, r),
4474        this.$trigger = t('[data-toggle="collapse"][href="#' + n.id + '"],[data-toggle="collapse"][data-target="#' + n.id + '"]'),
4475        this.transitioning = null,
4476        this.options.parent ? this.$parent = this.getParent() : this.addAriaAndCollapsedClass(this.$element, this.$trigger),
4477        this.options.toggle && this.toggle()
4478    };
4479    e.VERSION = "3.3.7",
4480    e.TRANSITION_DURATION = 350,
4481    e.DEFAULTS = {
4482        toggle: !0
4483    },
4484    e.prototype.dimension = function() {
4485        return this.$element.hasClass("width") ? "width" : "height"
4486    }
4487    ,
4488    e.prototype.show = function() {
4489        if (!this.transitioning && !this.$element.hasClass("in")) {
4490            var n, i = this.$parent && this.$parent.children(".panel").children(".in, .collapsing");
4491            if (!(i && i.length && (n = i.data("bs.collapse")) && n.transitioning)) {
4492                var o = t.Event("show.bs.collapse");
4493                if (this.$element.trigger(o),
4494                !o.isDefaultPrevented()) {
4495                    i && i.length && (r.call(i, "hide"),
4496                    n || i.data("bs.collapse", null));
4497                    var a = this.dimension();
4498                    this.$element.removeClass("collapse").addClass("collapsing")[a](0).attr("aria-expanded", !0),
4499                    this.$trigger.removeClass("collapsed").attr("aria-expanded", !0),
4500                    this.transitioning = 1;
4501                    var s = function() {
4502                        this.$element.removeClass("collapsing").addClass("collapse in")[a](""),
4503                        this.transitioning = 0,
4504                        this.$element.trigger("shown.bs.collapse")
4505                    };
4506                    if (!t.support.transition)
4507                        return s.call(this);
4508                    var u = t.camelCase(["scroll", a].join("-"));
4509                    this.$element.one("bsTransitionEnd", t.proxy(s, this)).emulateTransitionEnd(e.TRANSITION_DURATION)[a](this.$element[0][u])
4510                }
4511            }
4512        }
4513    }
4514    ,
4515    e.prototype.hide = function() {
4516        if (!this.transitioning && this.$element.hasClass("in")) {
4517            var n = t.Event("hide.bs.collapse");
4518            if (this.$element.trigger(n),
4519            !n.isDefaultPrevented()) {
4520                var r = this.dimension();
4521                this.$element[r](this.$element[r]())[0].offsetHeight,
4522                this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded", !1),
4523                this.$trigger.addClass("collapsed").attr("aria-expanded", !1),
4524                this.transitioning = 1;
4525                var i = function() {
4526                    this.transitioning = 0,
4527                    this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")
4528                };
4529                if (!t.support.transition)
4530                    return i.call(this);
4531                this.$element[r](0).one("bsTransitionEnd", t.proxy(i, this)).emulateTransitionEnd(e.TRANSITION_DURATION)
4532            }
4533        }
4534    }
4535    ,
4536    e.prototype.toggle = function() {
4537        this[this.$element.hasClass("in") ? "hide" : "show"]()
4538    }
4539    ,
4540    e.prototype.getParent = function() {
4541        return t(this.options.parent).find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]').each(t.proxy(function(e, r) {
4542            var i = t(r);
4543            this.addAriaAndCollapsedClass(n(i), i)
4544        }, this)).end()
4545    }
4546    ,
4547    e.prototype.addAriaAndCollapsedClass = function(t, e) {
4548        var n = t.hasClass("in");
4549        t.attr("aria-expanded", n),
4550        e.toggleClass("collapsed", !n).attr("aria-expanded", n)
4551    }
4552    ;
4553    function n(e) {
4554        var n, r = e.attr("data-target") || (n = e.attr("href")) && n.replace(/.*(?=#[^\s]+$)/, "");
4555        return t(r)
4556    }
4557    function r(n) {
4558        return this.each(function() {
4559            var r = t(this)
4560              , i = r.data("bs.collapse")
4561              , o = t.extend({}, e.DEFAULTS, r.data(), "object" == typeof n && n);
4562            !i && o.toggle && /show|hide/.test(n) && (o.toggle = !1),
4563            i || r.data("bs.collapse", i = new e(this,o)),
4564            "string" == typeof n && i[n]()
4565        })
4566    }
4567    var i = t.fn.collapse;
4568    t.fn.collapse = r,
4569    t.fn.collapse.Constructor = e,
4570    t.fn.collapse.noConflict = function() {
4571        return t.fn.collapse = i,
4572        this
4573    }
4574    ,
4575    t(document).on("click.bs.collapse.data-api", '[data-toggle="collapse"]', function(e) {
4576        var i = t(this);
4577        i.attr("data-target") || e.preventDefault();
4578        var o = n(i)
4579          , a = o.data("bs.collapse")
4580          , s = a ? "toggle" : i.data();
4581        r.call(o, s)
4582    })
4583}(jQuery),
4584function(t) {
4585    "use strict";
4586    var e = ".dropdown-backdrop"
4587      , n = '[data-toggle="dropdown"]'
4588      , r = function(e) {
4589        t(e).on("click.bs.dropdown", this.toggle)
4590    };
4591    r.VERSION = "3.3.7";
4592    function i(e) {
4593        var n = e.attr("data-target");
4594        n || (n = e.attr("href"),
4595        n = n && /#[A-Za-z]/.test(n) && n.replace(/.*(?=#[^\s]*$)/, ""));
4596        var r = n && t(n);
4597        return r && r.length ? r : e.parent()
4598    }
4599    function o(r) {
4600        r && 3 === r.which || (t(e).remove(),
4601        t(n).each(function() {
4602            var e = t(this)
4603              , n = i(e)
4604              , o = {
4605                relatedTarget: this
4606            };
4607            n.hasClass("open") && (r && "click" == r.type && /input|textarea/i.test(r.target.tagName) && t.contains(n[0], r.target) || (n.trigger(r = t.Event("hide.bs.dropdown", o)),
4608            r.isDefaultPrevented() || (e.attr("aria-expanded", "false"),
4609            n.removeClass("open").trigger(t.Event("hidden.bs.dropdown", o)))))
4610        }))
4611    }
4612    r.prototype.toggle = function(e) {
4613        var n = t(this);
4614        if (!n.is(".disabled, :disabled")) {
4615            var r = i(n)
4616              , a = r.hasClass("open");
4617            if (o(),
4618            !a) {
4619                "ontouchstart"in document.documentElement && !r.closest(".navbar-nav").length && t(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(t(this)).on("click", o);
4620                var s = {
4621                    relatedTarget: this
4622                };
4623                if (r.trigger(e = t.Event("show.bs.dropdown", s)),
4624                e.isDefaultPrevented())
4625                    return;
4626                n.trigger("focus").attr("aria-expanded", "true"),
4627                r.toggleClass("open").trigger(t.Event("shown.bs.dropdown", s))
4628            }
4629            return !1
4630        }
4631    }
4632    ,
4633    r.prototype.keydown = function(e) {
4634        if (/(38|40|27|32)/.test(e.which) && !/input|textarea/i.test(e.target.tagName)) {
4635            var r = t(this);
4636            if (e.preventDefault(),
4637            e.stopPropagation(),
4638            !r.is(".disabled, :disabled")) {
4639                var o = i(r)
4640                  , a = o.hasClass("open");
4641                if (!a && 27 != e.which || a && 27 == e.which)
4642                    return 27 == e.which && o.find(n).trigger("focus"),
4643                    r.trigger("click");
4644                var s = o.find(".dropdown-menu li:not(.disabled):visible a");
4645                if (s.length) {
4646                    var u = s.index(e.target);
4647                    38 == e.which && u > 0 && u--,
4648                    40 == e.which && u < s.length - 1 && u++,
4649                    ~u || (u = 0),
4650                    s.eq(u).trigger("focus")
4651                }
4652            }
4653        }
4654    }
4655    ;
4656    function a(e) {
4657        return this.each(function() {
4658            var n = t(this)
4659              , i = n.data("bs.dropdown");
4660            i || n.data("bs.dropdown", i = new r(this)),
4661            "string" == typeof e && i[e].call(n)
4662        })
4663    }
4664    var s = t.fn.dropdown;
4665    t.fn.dropdown = a,
4666    t.fn.dropdown.Constructor = r,
4667    t.fn.dropdown.noConflict = function() {
4668        return t.fn.dropdown = s,
4669        this
4670    }
4671    ,
4672    t(document).on("click.bs.dropdown.data-api", o).on("click.bs.dropdown.data-api", ".dropdown form", function(t) {
4673        t.stopPropagation()
4674    }).on("click.bs.dropdown.data-api", n, r.prototype.toggle).on("keydown.bs.dropdown.data-api", n, r.prototype.keydown).on("keydown.bs.dropdown.data-api", ".dropdown-menu", r.prototype.keydown)
4675}(jQuery),
4676function(t) {
4677    "use strict";
4678    var e = function(e, n) {
4679        this.options = n,
4680        this.$body = t(document.body),
4681        this.$element = t(e),
4682        this.$dialog = this.$element.find(".modal-dialog"),
4683        this.$backdrop = null,
4684        this.isShown = null,
4685        this.originalBodyPad = null,
4686        this.scrollbarWidth = 0,
4687        this.ignoreBackdropClick = !1,
4688        this.options.remote && this.$element.find(".modal-content").load(this.options.remote, t.proxy(function() {
4689            this.$element.trigger("loaded.bs.modal")
4690        }, this))
4691    };
4692    e.VERSION = "3.3.7",
4693    e.TRANSITION_DURATION = 300,
4694    e.BACKDROP_TRANSITION_DURATION = 150,
4695    e.DEFAULTS = {
4696        backdrop: !0,
4697        keyboard: !0,
4698        show: !0
4699    },
4700    e.prototype.toggle = function(t) {
4701        return this.isShown ? this.hide() : this.show(t)
4702    }
4703    ,
4704    e.prototype.show = function(n) {
4705        var r = this
4706          , i = t.Event("show.bs.modal", {
4707            relatedTarget: n
4708        });
4709        this.$element.trigger(i),
4710        this.isShown || i.isDefaultPrevented() || (this.isShown = !0,
4711        this.checkScrollbar(),
4712        this.setScrollbar(),
4713        this.$body.addClass("modal-open"),
4714        this.escape(),
4715        this.resize(),
4716        this.$element.on("click.dismiss.bs.modal", '[data-dismiss="modal"]', t.proxy(this.hide, this)),
4717        this.$dialog.on("mousedown.dismiss.bs.modal", function() {
4718            r.$element.one("mouseup.dismiss.bs.modal", function(e) {
4719                t(e.target).is(r.$element) && (r.ignoreBackdropClick = !0)
4720            })
4721        }),
4722        this.backdrop(function() {
4723            var i = t.support.transition && r.$element.hasClass("fade");
4724            r.$element.parent().length || r.$element.appendTo(r.$body),
4725            r.$element.show().scrollTop(0),
4726            r.adjustDialog(),
4727            i && r.$element[0].offsetWidth,
4728            r.$element.addClass("in"),
4729            r.enforceFocus();
4730            var o = t.Event("shown.bs.modal", {
4731                relatedTarget: n
4732            });
4733            i ? r.$dialog.one("bsTransitionEnd", function() {
4734                r.$element.trigger("focus").trigger(o)
4735            }).emulateTransitionEnd(e.TRANSITION_DURATION) : r.$element.trigger("focus").trigger(o)
4736        }))
4737    }
4738    ,
4739    e.prototype.hide = function(n) {
4740        n && n.preventDefault(),
4741        n = t.Event("hide.bs.modal"),
4742        this.$element.trigger(n),
4743        this.isShown && !n.isDefaultPrevented() && (this.isShown = !1,
4744        this.escape(),
4745        this.resize(),
4746        t(document).off("focusin.bs.modal"),
4747        this.$element.removeClass("in").off("click.dismiss.bs.modal").off("mouseup.dismiss.bs.modal"),
4748        this.$dialog.off("mousedown.dismiss.bs.modal"),
4749        t.support.transition && this.$element.hasClass("fade") ? this.$element.one("bsTransitionEnd", t.proxy(this.hideModal, this)).emulateTransitionEnd(e.TRANSITION_DURATION) : this.hideModal())
4750    }
4751    ,
4752    e.prototype.enforceFocus = function() {
4753        t(document).off("focusin.bs.modal").on("focusin.bs.modal", t.proxy(function(t) {
4754            document === t.target || this.$element[0] === t.target || this.$element.has(t.target).length || this.$element.trigger("focus")
4755        }, this))
4756    }
4757    ,
4758    e.prototype.escape = function() {
4759        this.isShown && this.options.keyboard ? this.$element.on("keydown.dismiss.bs.modal", t.proxy(function(t) {
4760            27 == t.which && this.hide()
4761        }, this)) : this.isShown || this.$element.off("keydown.dismiss.bs.modal")
4762    }
4763    ,
4764    e.prototype.resize = function() {
4765        this.isShown ? t(window).on("resize.bs.modal", t.proxy(this.handleUpdate, this)) : t(window).off("resize.bs.modal")
4766    }
4767    ,
4768    e.prototype.hideModal = function() {
4769        var t = this;
4770        this.$element.hide(),
4771        this.backdrop(function() {
4772            t.$body.removeClass("modal-open"),
4773            t.resetAdjustments(),
4774            t.resetScrollbar(),
4775            t.$element.trigger("hidden.bs.modal")
4776        })
4777    }
4778    ,
4779    e.prototype.removeBackdrop = function() {
4780        this.$backdrop && this.$backdrop.remove(),
4781        this.$backdrop = null
4782    }
4783    ,
4784    e.prototype.backdrop = function(n) {
4785        var r = this
4786          , i = this.$element.hasClass("fade") ? "fade" : "";
4787        if (this.isShown && this.options.backdrop) {
4788            var o = t.support.transition && i;
4789            if (this.$backdrop = t(document.createElement("div")).addClass("modal-backdrop " + i).appendTo(this.$body),
4790            this.$element.on("click.dismiss.bs.modal", t.proxy(function(t) {
4791                if (this.ignoreBackdropClick)
4792                    return void (this.ignoreBackdropClick = !1);
4793                t.target === t.currentTarget && ("static" == this.options.backdrop ? this.$element[0].focus() : this.hide())
4794            }, this)),
4795            o && this.$backdrop[0].offsetWidth,
4796            this.$backdrop.addClass("in"),
4797            !n)
4798                return;
4799            o ? this.$backdrop.one("bsTransitionEnd", n).emulateTransitionEnd(e.BACKDROP_TRANSITION_DURATION) : n()
4800        } else if (!this.isShown && this.$backdrop) {
4801            this.$backdrop.removeClass("in");
4802            var a = function() {
4803                r.removeBackdrop(),
4804                n && n()
4805            };
4806            t.support.transition && this.$element.hasClass("fade") ? this.$backdrop.one("bsTransitionEnd", a).emulateTransitionEnd(e.BACKDROP_TRANSITION_DURATION) : a()
4807        } else
4808            n && n()
4809    }
4810    ,
4811    e.prototype.handleUpdate = function() {
4812        this.adjustDialog()
4813    }
4814    ,
4815    e.prototype.adjustDialog = function() {
4816        var t = this.$element[0].scrollHeight > document.documentElement.clientHeight;
4817        this.$element.css({
4818            paddingLeft: !this.bodyIsOverflowing && t ? this.scrollbarWidth : "",
4819            paddingRight: this.bodyIsOverflowing && !t ? this.scrollbarWidth : ""
4820        })
4821    }
4822    ,
4823    e.prototype.resetAdjustments = function() {
4824        this.$element.css({
4825            paddingLeft: "",
4826            paddingRight: ""
4827        })
4828    }
4829    ,
4830    e.prototype.checkScrollbar = function() {
4831        var t = window.innerWidth;
4832        if (!t) {
4833            var e = document.documentElement.getBoundingClientRect();
4834            t = e.right - Math.abs(e.left)
4835        }
4836        this.bodyIsOverflowing = document.body.clientWidth < t,
4837        this.scrollbarWidth = this.measureScrollbar()
4838    }
4839    ,
4840    e.prototype.setScrollbar = function() {
4841        var t = parseInt(this.$body.css("padding-right") || 0, 10);
4842        this.originalBodyPad = document.body.style.paddingRight || "",
4843        this.bodyIsOverflowing && this.$body.css("padding-right", t + this.scrollbarWidth)
4844    }
4845    ,
4846    e.prototype.resetScrollbar = function() {
4847        this.$body.css("padding-right", this.originalBodyPad)
4848    }
4849    ,
4850    e.prototype.measureScrollbar = function() {
4851        var t = document.createElement("div");
4852        t.className = "modal-scrollbar-measure",
4853        this.$body.append(t);
4854        var e = t.offsetWidth - t.clientWidth;
4855        return this.$body[0].removeChild(t),
4856        e
4857    }
4858    ;
4859    function n(n, r) {
4860        return this.each(function() {
4861            var i = t(this)
4862              , o = i.data("bs.modal")
4863              , a = t.extend({}, e.DEFAULTS, i.data(), "object" == typeof n && n);
4864            o || i.data("bs.modal", o = new e(this,a)),
4865            "string" == typeof n ? o[n](r) : a.show && o.show(r)
4866        })
4867    }
4868    var r = t.fn.modal;
4869    t.fn.modal = n,
4870    t.fn.modal.Constructor = e,
4871    t.fn.modal.noConflict = function() {
4872        return t.fn.modal = r,
4873        this
4874    }
4875    ,
4876    t(document).on("click.bs.modal.data-api", '[data-toggle="modal"]', function(e) {
4877        var r = t(this)
4878          , i = r.attr("href")
4879          , o = t(r.attr("data-target") || i && i.replace(/.*(?=#[^\s]+$)/, ""))
4880          , a = o.data("bs.modal") ? "toggle" : t.extend({
4881            remote: !/#/.test(i) && i
4882        }, o.data(), r.data());
4883        r.is("a") && e.preventDefault(),
4884        o.one("show.bs.modal", function(t) {
4885            t.isDefaultPrevented() || o.one("hidden.bs.modal", function() {
4886                r.is(":visible") && r.trigger("focus")
4887            })
4888        }),
4889        n.call(o, a, this)
4890    })
4891}(jQuery),
4892function(t) {
4893    "use strict";
4894    var e = function(t, e) {
4895        this.type = null,
4896        this.options = null,
4897        this.enabled = null,
4898        this.timeout = null,
4899        this.hoverState = null,
4900        this.$element = null,
4901        this.inState = null,
4902        this.init("tooltip", t, e)
4903    };
4904    e.VERSION = "3.3.7",
4905    e.TRANSITION_DURATION = 150,
4906    e.DEFAULTS = {
4907        animation: !0,
4908        placement: "top",
4909        selector: !1,
4910        template: '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',
4911        trigger: "hover focus",
4912        title: "",
4913        delay: 0,
4914        html: !1,
4915        container: !1,
4916        viewport: {
4917            selector: "body",
4918            padding: 0
4919        }
4920    },
4921    e.prototype.init = function(e, n, r) {
4922        if (this.enabled = !0,
4923        this.type = e,
4924        this.$element = t(n),
4925        this.options = this.getOptions(r),
4926        this.$viewport = this.options.viewport && t(t.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : this.options.viewport.selector || this.options.viewport),
4927        this.inState = {
4928            click: !1,
4929            hover: !1,
4930            focus: !1
4931        },
4932        this.$element[0]instanceof document.constructor && !this.options.selector)
4933            throw new Error("`selector` option must be specified when initializing " + this.type + " on the window.document object!");
4934        for (var i = this.options.trigger.split(" "), o = i.length; o--; ) {
4935            var a = i[o];
4936            if ("click" == a)
4937                this.$element.on("click." + this.type, this.options.selector, t.proxy(this.toggle, this));
4938            else if ("manual" != a) {
4939                var s = "hover" == a ? "mouseenter" : "focusin"
4940                  , u = "hover" == a ? "mouseleave" : "focusout";
4941                this.$element.on(s + "." + this.type, this.options.selector, t.proxy(this.enter, this)),
4942                this.$element.on(u + "." + this.type, this.options.selector, t.proxy(this.leave, this))
4943            }
4944        }
4945        this.options.selector ? this._options = t.extend({}, this.options, {
4946            trigger: "manual",
4947            selector: ""
4948        }) : this.fixTitle()
4949    }
4950    ,
4951    e.prototype.getDefaults = function() {
4952        return e.DEFAULTS
4953    }
4954    ,
4955    e.prototype.getOptions = function(e) {
4956        return e = t.extend({}, this.getDefaults(), this.$element.data(), e),
4957        e.delay && "number" == typeof e.delay && (e.delay = {
4958            show: e.delay,
4959            hide: e.delay
4960        }),
4961        e
4962    }
4963    ,
4964    e.prototype.getDelegateOptions = function() {
4965        var e = {}
4966          , n = this.getDefaults();
4967        return this._options && t.each(this._options, function(t, r) {
4968            n[t] != r && (e[t] = r)
4969        }),
4970        e
4971    }
4972    ,
4973    e.prototype.enter = function(e) {
4974        var n = e instanceof this.constructor ? e : t(e.currentTarget).data("bs." + this.type);
4975        return n || (n = new this.constructor(e.currentTarget,this.getDelegateOptions()),
4976        t(e.currentTarget).data("bs." + this.type, n)),
4977        e instanceof t.Event && (n.inState["focusin" == e.type ? "focus" : "hover"] = !0),
4978        n.tip().hasClass("in") || "in" == n.hoverState ? void (n.hoverState = "in") : (clearTimeout(n.timeout),
4979        n.hoverState = "in",
4980        n.options.delay && n.options.delay.show ? void (n.timeout = setTimeout(function() {
4981            "in" == n.hoverState && n.show()
4982        }, n.options.delay.show)) : n.show())
4983    }
4984    ,
4985    e.prototype.isInStateTrue = function() {
4986        for (var t in this.inState)
4987            if (this.inState[t])
4988                return !0;
4989        return !1
4990    }
4991    ,
4992    e.prototype.leave = function(e) {
4993        var n = e instanceof this.constructor ? e : t(e.currentTarget).data("bs." + this.type);
4994        if (n || (n = new this.constructor(e.currentTarget,this.getDelegateOptions()),
4995        t(e.currentTarget).data("bs." + this.type, n)),
4996        e instanceof t.Event && (n.inState["focusout" == e.type ? "focus" : "hover"] = !1),
4997        !n.isInStateTrue()) {
4998            if (clearTimeout(n.timeout),
4999            n.hoverState = "out",
5000            !n.options.delay || !n.options.delay.hide)
5001                return n.hide();
5002            n.timeout = setTimeout(function() {
5003                "out" == n.hoverState && n.hide()
5004            }, n.options.delay.hide)
5005        }
5006    }
5007    ,
5008    e.prototype.show = function() {
5009        var n = t.Event("show.bs." + this.type);
5010        if (this.hasContent() && this.enabled) {
5011            this.$element.trigger(n);
5012            var r = t.contains(this.$element[0].ownerDocument.documentElement, this.$element[0]);
5013            if (n.isDefaultPrevented() || !r)
5014                return;
5015            var i = this
5016              , o = this.tip()
5017              , a = this.getUID(this.type);
5018            this.setContent(),
5019            o.attr("id", a),
5020            this.$element.attr("aria-describedby", a),
5021            this.options.animation && o.addClass("fade");
5022            var s = "function" == typeof this.options.placement ? this.options.placement.call(this, o[0], this.$element[0]) : this.options.placement
5023              , u = /\s?auto?\s?/i
5024              , l = u.test(s);
5025            l && (s = s.replace(u, "") || "top"),
5026            o.detach().css({
5027                top: 0,
5028                left: 0,
5029                display: "block"
5030            }).addClass(s).data("bs." + this.type, this),
5031            this.options.container ? o.appendTo(this.options.container) : o.insertAfter(this.$element),
5032            this.$element.trigger("inserted.bs." + this.type);
5033            var c = this.getPosition()
5034              , h = o[0].offsetWidth
5035              , d = o[0].offsetHeight;
5036            if (l) {
5037                var f = s
5038                  , p = this.getPosition(this.$viewport);
5039                s = "bottom" == s && c.bottom + d > p.bottom ? "top" : "top" == s && c.top - d < p.top ? "bottom" : "right" == s && c.right + h > p.width ? "left" : "left" == s && c.left - h < p.left ? "right" : s,
5040                o.removeClass(f).addClass(s)
5041            }
5042            var g = this.getCalculatedOffset(s, c, h, d);
5043            this.applyPlacement(g, s);
5044            var m = function() {
5045                var t = i.hoverState;
5046                i.$element.trigger("shown.bs." + i.type),
5047                i.hoverState = null,
5048                "out" == t && i.leave(i)
5049            };
5050            t.support.transition && this.$tip.hasClass("fade") ? o.one("bsTransitionEnd", m).emulateTransitionEnd(e.TRANSITION_DURATION) : m()
5051        }
5052    }
5053    ,
5054    e.prototype.applyPlacement = function(e, n) {
5055        var r = this.tip()
5056          , i = r[0].offsetWidth
5057          , o = r[0].offsetHeight
5058          , a = parseInt(r.css("margin-top"), 10)
5059          , s = parseInt(r.css("margin-left"), 10);
5060        isNaN(a) && (a = 0),
5061        isNaN(s) && (s = 0),
5062        e.top += a,
5063        e.left += s,
5064        t.offset.setOffset(r[0], t.extend({
5065            using: function(t) {
5066                r.css({
5067                    top: Math.round(t.top),
5068                    left: Math.round(t.left)
5069                })
5070            }
5071        }, e), 0),
5072        r.addClass("in");
5073        var u = r[0].offsetWidth
5074          , l = r[0].offsetHeight;
5075        "top" == n && l != o && (e.top = e.top + o - l);
5076        var c = this.getViewportAdjustedDelta(n, e, u, l);
5077        c.left ? e.left += c.left : e.top += c.top;
5078        var h = /top|bottom/.test(n)
5079          , d = h ? 2 * c.left - i + u : 2 * c.top - o + l
5080          , f = h ? "offsetWidth" : "offsetHeight";
5081        r.offset(e),
5082        this.replaceArrow(d, r[0][f], h)
5083    }
5084    ,
5085    e.prototype.replaceArrow = function(t, e, n) {
5086        this.arrow().css(n ? "left" : "top", 50 * (1 - t / e) + "%").css(n ? "top" : "left", "")
5087    }
5088    ,
5089    e.prototype.setContent = function() {
5090        var t = this.tip()
5091          , e = this.getTitle();
5092        t.find(".tooltip-inner")[this.options.html ? "html" : "text"](e),
5093        t.removeClass("fade in top bottom left right")
5094    }
5095    ,
5096    e.prototype.hide = function(n) {
5097        var r = this
5098          , i = t(this.$tip)
5099          , o = t.Event("hide.bs." + this.type);
5100        function a() {
5101            "in" != r.hoverState && i.detach(),
5102            r.$element && r.$element.removeAttr("aria-describedby").trigger("hidden.bs." + r.type),
5103            n && n()
5104        }
5105        if (this.$element.trigger(o),
5106        !o.isDefaultPrevented())
5107            return i.removeClass("in"),
5108            t.support.transition && i.hasClass("fade") ? i.one("bsTransitionEnd", a).emulateTransitionEnd(e.TRANSITION_DURATION) : a(),
5109            this.hoverState = null,
5110            this
5111    }
5112    ,
5113    e.prototype.fixTitle = function() {
5114        var t = this.$element;
5115        (t.attr("title") || "string" != typeof t.attr("data-original-title")) && t.attr("data-original-title", t.attr("title") || "").attr("title", "")
5116    }
5117    ,
5118    e.prototype.hasContent = function() {
5119        return this.getTitle()
5120    }
5121    ,
5122    e.prototype.getPosition = function(e) {
5123        e = e || this.$element;
5124        var n = e[0]
5125          , r = "BODY" == n.tagName
5126          , i = n.getBoundingClientRect();
5127        null == i.width && (i = t.extend({}, i, {
5128            width: i.right - i.left,
5129            height: i.bottom - i.top
5130        }));
5131        var o = window.SVGElement && n instanceof window.SVGElement
5132          , a = r ? {
5133            top: 0,
5134            left: 0
5135        } : o ? null : e.offset()
5136          , s = {
5137            scroll: r ? document.documentElement.scrollTop || document.body.scrollTop : e.scrollTop()
5138        }
5139          , u = r ? {
5140            width: t(window).width(),
5141            height: t(window).height()
5142        } : null;
5143        return t.extend({}, i, s, u, a)
5144    }
5145    ,
5146    e.prototype.getCalculatedOffset = function(t, e, n, r) {
5147        return "bottom" == t ? {
5148            top: e.top + e.height,
5149            left: e.left + e.width / 2 - n / 2
5150        } : "top" == t ? {
5151            top: e.top - r,
5152            left: e.left + e.width / 2 - n / 2
5153        } : "left" == t ? {
5154            top: e.top + e.height / 2 - r / 2,
5155            left: e.left - n
5156        } : {
5157            top: e.top + e.height / 2 - r / 2,
5158            left: e.left + e.width
5159        }
5160    }
5161    ,
5162    e.prototype.getViewportAdjustedDelta = function(t, e, n, r) {
5163        var i = {
5164            top: 0,
5165            left: 0
5166        };
5167        if (!this.$viewport)
5168            return i;
5169        var o = this.options.viewport && this.options.viewport.padding || 0
5170          , a = this.getPosition(this.$viewport);
5171        if (/right|left/.test(t)) {
5172            var s = e.top - o - a.scroll
5173              , u = e.top + o - a.scroll + r;
5174            s < a.top ? i.top = a.top - s : u > a.top + a.height && (i.top = a.top + a.height - u)
5175        } else {
5176            var l = e.left - o
5177              , c = e.left + o + n;
5178            l < a.left ? i.left = a.left - l : c > a.right && (i.left = a.left + a.width - c)
5179        }
5180        return i
5181    }
5182    ,
5183    e.prototype.getTitle = function() {
5184        var t = this.$element
5185          , e = this.options;
5186        return t.attr("data-original-title") || ("function" == typeof e.title ? e.title.call(t[0]) : e.title)
5187    }
5188    ,
5189    e.prototype.getUID = function(t) {
5190        do {
5191            t += ~~(1e6 * Math.random())
5192        } while (document.getElementById(t));
5193        return t
5194    }
5195    ,
5196    e.prototype.tip = function() {
5197        if (!this.$tip && (this.$tip = t(this.options.template),
5198        1 != this.$tip.length))
5199            throw new Error(this.type + " `template` option must consist of exactly 1 top-level element!");
5200        return this.$tip
5201    }
5202    ,
5203    e.prototype.arrow = function() {
5204        return this.$arrow = this.$arrow || this.tip().find(".tooltip-arrow")
5205    }
5206    ,
5207    e.prototype.enable = function() {
5208        this.enabled = !0
5209    }
5210    ,
5211    e.prototype.disable = function() {
5212        this.enabled = !1
5213    }
5214    ,
5215    e.prototype.toggleEnabled = function() {
5216        this.enabled = !this.enabled
5217    }
5218    ,
5219    e.prototype.toggle = function(e) {
5220        var n = this;
5221        e && ((n = t(e.currentTarget).data("bs." + this.type)) || (n = new this.constructor(e.currentTarget,this.getDelegateOptions()),
5222        t(e.currentTarget).data("bs." + this.type, n))),
5223        e ? (n.inState.click = !n.inState.click,
5224        n.isInStateTrue() ? n.enter(n) : n.leave(n)) : n.tip().hasClass("in") ? n.leave(n) : n.enter(n)
5225    }
5226    ,
5227    e.prototype.destroy = function() {
5228        var t = this;
5229        clearTimeout(this.timeout),
5230        this.hide(function() {
5231            t.$element.off("." + t.type).removeData("bs." + t.type),
5232            t.$tip && t.$tip.detach(),
5233            t.$tip = null,
5234            t.$arrow = null,
5235            t.$viewport = null,
5236            t.$element = null
5237        })
5238    }
5239    ;
5240    function n(n) {
5241        return this.each(function() {
5242            var r = t(this)
5243              , i = r.data("bs.tooltip")
5244              , o = "object" == typeof n && n;
5245            !i && /destroy|hide/.test(n) || (i || r.data("bs.tooltip", i = new e(this,o)),
5246            "string" == typeof n && i[n]())
5247        })
5248    }
5249    var r = t.fn.tooltip;
5250    t.fn.tooltip = n,
5251    t.fn.tooltip.Constructor = e,
5252    t.fn.tooltip.noConflict = function() {
5253        return t.fn.tooltip = r,
5254        this
5255    }
5256}(jQuery),
5257function(t) {
5258    "use strict";
5259    var e = function(t, e) {
5260        this.init("popover", t, e)
5261    };
5262    if (!t.fn.tooltip)
5263        throw new Error("Popover requires tooltip.js");
5264    e.VERSION = "3.3.7",
5265    e.DEFAULTS = t.extend({}, t.fn.tooltip.Constructor.DEFAULTS, {
5266        placement: "right",
5267        trigger: "click",
5268        content: "",
5269        template: '<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'
5270    }),
5271    e.prototype = t.extend({}, t.fn.tooltip.Constructor.prototype),
5272    e.prototype.constructor = e,
5273    e.prototype.getDefaults = function() {
5274        return e.DEFAULTS
5275    }
5276    ,
5277    e.prototype.setContent = function() {
5278        var t = this.tip()
5279          , e = this.getTitle()
5280          , n = this.getContent();
5281        t.find(".popover-title")[this.options.html ? "html" : "text"](e),
5282        t.find(".popover-content").children().detach().end()[this.options.html ? "string" == typeof n ? "html" : "append" : "text"](n),
5283        t.removeClass("fade top bottom left right in"),
5284        t.find(".popover-title").html() || t.find(".popover-title").hide()
5285    }
5286    ,
5287    e.prototype.hasContent = function() {
5288        return this.getTitle() || this.getContent()
5289    }
5290    ,
5291    e.prototype.getContent = function() {
5292        var t = this.$element
5293          , e = this.options;
5294        return t.attr("data-content") || ("function" == typeof e.content ? e.content.call(t[0]) : e.content)
5295    }
5296    ,
5297    e.prototype.arrow = function() {
5298        return this.$arrow = this.$arrow || this.tip().find(".arrow")
5299    }
5300    ;
5301    function n(n) {
5302        return this.each(function() {
5303            var r = t(this)
5304              , i = r.data("bs.popover")
5305              , o = "object" == typeof n && n;
5306            !i && /destroy|hide/.test(n) || (i || r.data("bs.popover", i = new e(this,o)),
5307            "string" == typeof n && i[n]())
5308        })
5309    }
5310    var r = t.fn.popover;
5311    t.fn.popover = n,
5312    t.fn.popover.Constructor = e,
5313    t.fn.popover.noConflict = function() {
5314        return t.fn.popover = r,
5315        this
5316    }
5317}(jQuery),
5318function(t) {
5319    "use strict";
5320    function e(n, r) {
5321        this.$body = t(document.body),
5322        this.$scrollElement = t(t(n).is(document.body) ? window : n),
5323        this.options = t.extend({}, e.DEFAULTS, r),
5324        this.selector = (this.options.target || "") + " .nav li > a",
5325        this.offsets = [],
5326        this.targets = [],
5327        this.activeTarget = null,
5328        this.scrollHeight = 0,
5329        this.$scrollElement.on("scroll.bs.scrollspy", t.proxy(this.process, this)),
5330        this.refresh(),
5331        this.process()
5332    }
5333    e.VERSION = "3.3.7",
5334    e.DEFAULTS = {
5335        offset: 10
5336    },
5337    e.prototype.getScrollHeight = function() {
5338        return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)
5339    }
5340    ,
5341    e.prototype.refresh = function() {
5342        var e = this
5343          , n = "offset"
5344          , r = 0;
5345        this.offsets = [],
5346        this.targets = [],
vendor: 3,855 bytes, lines 5347-5453
5347        this.scrollHeight = this.getScrollHeight(),
5348        t.isWindow(this.$scrollElement[0]) || (n = "position",
5349        r = this.$scrollElement.scrollTop()),
5350        this.$body.find(this.selector).map(function() {
5351            var e = t(this)
5352              , i = e.data("target") || e.attr("href")
5353              , o = /^#./.test(i) && t(i);
5354            return o && o.length && o.is(":visible") && [[o[n]().top + r, i]] || null
5355        }).sort(function(t, e) {
5356            return t[0] - e[0]
5357        }).each(function() {
5358            e.offsets.push(this[0]),
5359            e.targets.push(this[1])
5360        })
5361    }
5362    ,
5363    e.prototype.process = function() {
5364        var t, e = this.$scrollElement.scrollTop() + this.options.offset, n = this.getScrollHeight(), r = this.options.offset + n - this.$scrollElement.height(), i = this.offsets, o = this.targets, a = this.activeTarget;
5365        if (this.scrollHeight != n && this.refresh(),
5366        e >= r)
5367            return a != (t = o[o.length - 1]) && this.activate(t);
5368        if (a && e < i[0])
5369            return this.activeTarget = null,
5370            this.clear();
5371        for (t = i.length; t--; )
5372            a != o[t] && e >= i[t] && (void 0 === i[t + 1] || e < i[t + 1]) && this.activate(o[t])
5373    }
5374    ,
5375    e.prototype.activate = function(e) {
5376        this.activeTarget = e,
5377        this.clear();
5378        var n = this.selector + '[data-target="' + e + '"],' + this.selector + '[href="' + e + '"]'
5379          , r = t(n).parents("li").addClass("active");
5380        r.parent(".dropdown-menu").length && (r = r.closest("li.dropdown").addClass("active")),
5381        r.trigger("activate.bs.scrollspy")
5382    }
5383    ,
5384    e.prototype.clear = function() {
5385        t(this.selector).parentsUntil(this.options.target, ".active").removeClass("active")
5386    }
5387    ;
5388    function n(n) {
5389        return this.each(function() {
5390            var r = t(this)
5391              , i = r.data("bs.scrollspy")
5392              , o = "object" == typeof n && n;
5393            i || r.data("bs.scrollspy", i = new e(this,o)),
5394            "string" == typeof n && i[n]()
5395        })
5396    }
5397    var r = t.fn.scrollspy;
5398    t.fn.scrollspy = n,
5399    t.fn.scrollspy.Constructor = e,
5400    t.fn.scrollspy.noConflict = function() {
5401        return t.fn.scrollspy = r,
5402        this
5403    }
5404    ,
5405    t(window).on("load.bs.scrollspy.data-api", function() {
5406        t('[data-spy="scroll"]').each(function() {
5407            var e = t(this);
5408            n.call(e, e.data())
5409        })
5410    })
5411}(jQuery),
5412function(t) {
5413    "use strict";
5414    var e = function(e) {
5415        this.element = t(e)
5416    };
5417    e.VERSION = "3.3.7",
5418    e.TRANSITION_DURATION = 150,
5419    e.prototype.show = function() {
5420        var e = this.element
5421          , n = e.closest("ul:not(.dropdown-menu)")
5422          , r = e.data("target");
5423        if (r || (r = e.attr("href"),
5424        r = r && r.replace(/.*(?=#[^\s]*$)/, "")),
5425        !e.parent("li").hasClass("active")) {
5426            var i = n.find(".active:last a")
5427              , o = t.Event("hide.bs.tab", {
5428                relatedTarget: e[0]
5429            })
5430              , a = t.Event("show.bs.tab", {
5431                relatedTarget: i[0]
5432            });
5433            if (i.trigger(o),
5434            e.trigger(a),
5435            !a.isDefaultPrevented() && !o.isDefaultPrevented()) {
5436                var s = t(r);
5437                this.activate(e.closest("li"), n),
5438                this.activate(s, s.parent(), function() {
5439                    i.trigger({
5440                        type: "hidden.bs.tab",
5441                        relatedTarget: e[0]
5442                    }),
5443                    e.trigger({
5444                        type: "shown.bs.tab",
5445                        relatedTarget: i[0]
5446                    })
5447                })
5448            }
5449        }
5450    }
5451    ,
5452    e.prototype.activate = function(n, r, i) {
5453        var o = r.find("> .active")
5454          , a = i && t.support.transition && (o.length && o.hasClass("fade") || !!r.find("> .fade").length);
5455        function s() {
5456            o.removeClass("active").find("> .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded", !1),
5457            n.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded", !0),
5458            a ? (n[0].offsetWidth,
5459            n.addClass("in")) : n.removeClass("fade"),
5460            n.parent(".dropdown-menu").length && n.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded", !0),
5461            i && i()
5462        }
5463        o.length && a ? o.one("bsTransitionEnd", s).emulateTransitionEnd(e.TRANSITION_DURATION) : s(),
5464        o.removeClass("in")
5465    }
5466    ;
5467    function n(n) {
5468        return this.each(function() {
5469            var r = t(this)
5470              , i = r.data("bs.tab");
5471            i || r.data("bs.tab", i = new e(this)),
5472            "string" == typeof n && i[n]()
5473        })
5474    }
5475    var r = t.fn.tab;
5476    t.fn.tab = n,
5477    t.fn.tab.Constructor = e,
5478    t.fn.tab.noConflict = function() {
5479        return t.fn.tab = r,
5480        this
5481    }
5482    ;
5483    var i = function(e) {
5484        e.preventDefault(),
5485        n.call(t(this), "show")
5486    };
5487    t(document).on("click.bs.tab.data-api", '[data-toggle="tab"]', i).on("click.bs.tab.data-api", '[data-toggle="pill"]', i)
5488}(jQuery),
5489function(t) {
5490    "use strict";
5491    var e = function(n, r) {
5492        this.options = t.extend({}, e.DEFAULTS, r),
5493        this.$target = t(this.options.target).on("scroll.bs.affix.data-api", t.proxy(this.checkPosition, this)).on("click.bs.affix.data-api", t.proxy(this.checkPositionWithEventLoop, this)),
5494        this.$element = t(n),
5495        this.affixed = null,
5496        this.unpin = null,
5497        this.pinnedOffset = null,
5498        this.checkPosition()
5499    };
5500    e.VERSION = "3.3.7",
5501    e.RESET = "affix affix-top affix-bottom",
5502    e.DEFAULTS = {
5503        offset: 0,
5504        target: window
5505    },
5506    e.prototype.getState = function(t, e, n, r) {
5507        var i = this.$target.scrollTop()
5508          , o = this.$element.offset()
5509          , a = this.$target.height();
5510        if (null != n && "top" == this.affixed)
5511            return i < n && "top";
5512        if ("bottom" == this.affixed)
5513            return null != n ? !(i + this.unpin <= o.top) && "bottom" : !(i + a <= t - r) && "bottom";
5514        var s = null == this.affixed
5515          , u = s ? i : o.top
5516          , l = s ? a : e;
5517        return null != n && i <= n ? "top" : null != r && u + l >= t - r && "bottom"
5518    }
5519    ,
5520    e.prototype.getPinnedOffset = function() {
5521        if (this.pinnedOffset)
5522            return this.pinnedOffset;
5523        this.$element.removeClass(e.RESET).addClass("affix");
5524        var t = this.$target.scrollTop()
5525          , n = this.$element.offset();
5526        return this.pinnedOffset = n.top - t
5527    }
5528    ,
5529    e.prototype.checkPositionWithEventLoop = function() {
5530        setTimeout(t.proxy(this.checkPosition, this), 1)
5531    }
5532    ,
5533    e.prototype.checkPosition = function() {
5534        if (this.$element.is(":visible")) {
5535            var n = this.$element.height()
5536              , r = this.options.offset
5537              , i = r.top
5538              , o = r.bottom
5539              , a = Math.max(t(document).height(), t(document.body).height());
5540            "object" != typeof r && (o = i = r),
5541            "function" == typeof i && (i = r.top(this.$element)),
5542            "function" == typeof o && (o = r.bottom(this.$element));
5543            var s = this.getState(a, n, i, o);
5544            if (this.affixed != s) {
5545                null != this.unpin && this.$element.css("top", "");
5546                var u = "affix" + (s ? "-" + s : "")
5547                  , l = t.Event(u + ".bs.affix");
5548                if (this.$element.trigger(l),
5549                l.isDefaultPrevented())
5550                    return;
5551                this.affixed = s,
5552                this.unpin = "bottom" == s ? this.getPinnedOffset() : null,
5553                this.$element.removeClass(e.RESET).addClass(u).trigger(u.replace("affix", "affixed") + ".bs.affix")
5554            }
5555            "bottom" == s && this.$element.offset({
5556                top: a - n - o
5557            })
5558        }
5559    }
5560    ;
5561    function n(n) {
5562        return this.each(function() {
5563            var r = t(this)
5564              , i = r.data("bs.affix")
5565              , o = "object" == typeof n && n;
5566            i || r.data("bs.affix", i = new e(this,o)),
5567            "string" == typeof n && i[n]()
5568        })
5569    }
5570    var r = t.fn.affix;
5571    t.fn.affix = n,
5572    t.fn.affix.Constructor = e,
5573    t.fn.affix.noConflict = function() {
5574        return t.fn.affix = r,
5575        this
5576    }
5577    ,
5578    t(window).on("load", function() {
5579        t('[data-spy="affix"]').each(function() {
5580            var e = t(this)
5581              , r = e.data();
5582            r.offset = r.offset || {},
5583            null != r.offsetBottom && (r.offset.bottom = r.offsetBottom),
5584            null != r.offsetTop && (r.offset.top = r.offsetTop),
5585            n.call(e, r)
5586        })
5587    })
5588}(jQuery);
5589/*!
5590* Parsley.js
5591* Version 2.4.4 - built Thu, Aug 4th 2016, 9:54 pm
5592* http://parsleyjs.org
5593* Guillaume Potier - <[email protected]>
5594* Marc-Andre Lafortune - <[email protected]>
5595* MIT Licensed
5596*/
5597var _slice = Array.prototype.slice;
5598function _toConsumableArray(t) {
5599    if (Array.isArray(t)) {
5600        for (var e = 0, n = Array(t.length); e < t.length; e++)
5601            n[e] = t[e];
5602        return n
5603    }
5604    return Array.from(t)
5605}
5606if (function(t, e) {
5607    "object" == typeof exports && "undefined" != typeof module ? module.exports = e(require("jquery")) : "function" == typeof define && define.amd ? define(["jquery"], e) : t.parsley = e(t.jQuery)
5608}(this, function(t) {
5609    "use strict";
5610    var e = 1
5611      , n = {}
5612      , r = {
5613        attr: function(t, e, n) {
5614            var r, i, o, a = new RegExp("^" + e,"i");
5615            if (void 0 === n)
5616                n = {};
5617            else
5618                for (r in n)
5619                    n.hasOwnProperty(r) && delete n[r];
5620            if (void 0 === t || void 0 === t[0])
5621                return n;
5622            for (o = t[0].attributes,
5623            r = o.length; r--; )
5624                (i = o[r]) && i.specified && a.test(i.name) && (n[this.camelize(i.name.slice(e.length))] = this.deserializeValue(i.value));
5625            return n
5626        },
5627        checkAttr: function(t, e, n) {
5628            return t.is("[" + e + n + "]")
5629        },
5630        setAttr: function(t, e, n, r) {
5631            t[0].setAttribute(this.dasherize(e + n), String(r))
5632        },
5633        generateID: function() {
5634            return "" + e++
5635        },
5636        deserializeValue: function(e) {
5637            var n;
5638            try {
5639                return e ? "true" == e || "false" != e && ("null" == e ? null : isNaN(n = Number(e)) ? /^[\[\{]/.test(e) ? t.parseJSON(e) 
5639: e : n) : e
5640            } catch (t) {
5641                return e
5642            }
5643        },
5644        camelize: function(t) {
5645            return t.replace(/-+(.)?/g, function(t, e) {
5646                return e ? e.toUpperCase() : ""
5647            })
5648        },
5649        dasherize: function(t) {
5650            return t.replace(/::/g, "/").replace(/([A-Z]+)([A-Z][a-z])/g, "$1_$2").replace(/([a-z\d])([A-Z])/g, "$1_$2").replace(/_/g, "-").toLowerCase()
5651        },
5652        warn: function() {
5653            var t;
5654            window.console && "function" == typeof window.console.warn && (t = window.console).warn.apply(t, arguments)
5655        },
5656        warnOnce: function(t) {
5657            n[t] || (n[t] = !0,
5658            this.warn.apply(this, arguments))
5659        },
5660        _resetWarnings: function() {
5661            n = {}
5662        },
5663        trimString: function(t) {
5664            return t.replace(/^\s+|\s+$/g, "")
5665        },
5666        namespaceEvents: function(e, n) {
5667            return e = this.trimString(e || "").split(/\s+/),
5668            e[0] ? t.map(e, function(t) {
5669                return t + "." + n
5670            }).join(" ") : ""
5671        },
5672        difference: function(e, n) {
5673            var r = [];
5674            return t.each(e, function(t, e) {
5675                -1 == n.indexOf(e) && r.push(e)
5676            }),
5677            r
5678        },
5679        all: function(e) {
5680            return t.when.apply(t, _toConsumableArray(e).concat([42, 42]))
5681        },
5682        objectCreate: Object.create || function() {
5683            var t = function() {};
5684            return function(e) {
5685                if (arguments.length > 1)
5686                    throw Error("Second argument not supported");
5687                if ("object" != typeof e)
5688                    throw TypeError("Argument must be an object");
5689                t.prototype = e;
5690                var n = new t;
5691                return t.prototype = null,
5692                n
5693            }
5694        }(),
5695        _SubmitSelector: 'input[type="submit"], button:submit'
5696    }
5697      , i = r
5698      , o = {
5699        namespace: "data-parsley-",
5700        inputs: "input, textarea, select",
5701        excluded: "input[type=button], input[type=submit], input[type=reset], input[type=hidden]",
5702        priorityEnabled: !0,
5703        multiple: null,
5704        group: null,
5705        uiEnabled: !0,
5706        validationThreshold: 3,
5707        focus: "first",
5708        trigger: !1,
5709        triggerAfterFailure: "input",
5710        errorClass: "parsley-error",
5711        successClass: "parsley-success",
5712        classHandler: function(t) {},
5713        errorsContainer: function(t) {},
5714        errorsWrapper: '<ul class="parsley-errors-list"></ul>',
5715        errorTemplate: "<li></li>"
5716    }
5717      , a = function() {
5718        this.__id__ = i.generateID()
5719    };
5720    a.prototype = {
5721        asyncSupport: !0,
5722        _pipeAccordingToValidationResult: function() {
5723            var e = this
5724              , n = function() {
5725                var n = t.Deferred();
5726                return !0 !== e.validationResult && n.reject(),
5727                n.resolve().promise()
5728            };
5729            return [n, n]
5730        },
5731        actualizeOptions: function() {
5732            return i.attr(this.$element, this.options.namespace, this.domOptions),
5733            this.parent && this.parent.actualizeOptions && this.parent.actualizeOptions(),
5734            this
5735        },
5736        _resetOptions: function(t) {
5737            this.domOptions = i.objectCreate(this.parent.options),
5738            this.options = i.objectCreate(this.domOptions);
5739            for (var e in t)
5740                t.hasOwnProperty(e) && (this.options[e] = t[e]);
5741            this.actualizeOptions()
5742        },
5743        _listeners: null,
5744        on: function(t, e) {
5745            return this._listeners = this._listeners || {},
5746            (this._listeners[t] = this._listeners[t] || []).push(e),
5747            this
5748        },
5749        subscribe: function(e, n) {
5750            t.listenTo(this, e.toLowerCase(), n)
5751        },
5752        off: function(t, e) {
5753            var n = this._listeners && this._listeners[t];
5754            if (n)
5755                if (e)
5756                    for (var r = n.length; r--; )
5757                        n[r] === e && n.splice(r, 1);
5758                else
5759                    delete this._listeners[t];
5760            return this
5761        },
5762        unsubscribe: function(e, n) {
5763            t.unsubscribeTo(this, e.toLowerCase())
5764        },
5765        trigger: function(t, e, n) {
5766            e = e || this;
5767            var r, i = this._listeners && this._listeners[t];
5768            if (i)
5769                for (var o = i.length; o--; )
5770                    if (!1 === (r = i[o].call(e, e, n)))
5771                        return r;
5772            return !this.parent || this.parent.trigger(t, e, n)
5773        },
5774        reset: function() {
5775            if ("ParsleyForm" !== this.__class__)
5776                return this._resetUI(),
5777                this._trigger("reset");
5778            for (var t = 0; t < this.fields.length; t++)
5779                this.fields[t].reset();
5780            this._trigger("reset")
5781        },
5782        destroy: function() {
5783            if (this._destroyUI(),
5784            "ParsleyForm" !== this.__class__)
5785                return this.$element.removeData("Parsley"),
5786                this.$element.removeData("ParsleyFieldMultiple"),
5787                void this._trigger("destroy");
5788            for (var t = 0; t < this.fields.length; t++)
5789                this.fields[t].destroy();
5790            this.$element.removeData("Parsley"),
5791            this._trigger("destroy")
5792        },
5793        asyncIsValid: function(t, e) {
5794            return i.warnOnce("asyncIsValid is deprecated; please use whenValid instead"),
5795            this.whenValid({
5796                group: t,
5797                force: e
5798            })
5799        },
5800        _findRelated: function() {
5801            return this.options.multiple ? this.parent.$element.find("[" + this.options.namespace + 'multiple="' + this.options.multiple + '"]') : this.$element
5802        }
5803    };
5804    var s = {
5805        string: function(t) {
5806            return t
5807        },
5808        integer: function(t) {
5809            if (isNaN(t))
5810                throw 'Requirement is not an integer: "' + t + '"';
5811            return parseInt(t, 10)
5812        },
5813        number: function(t) {
5814            if (isNaN(t))
5815                throw 'Requirement is not a number: "' + t + '"';
5816            return parseFloat(t)
5817        },
5818        reference: function(e) {
5819            var n = t(e);
5820            if (0 === n.length)
5821                throw 'No such reference: "' + e + '"';
5822            return n
5823        },
5824        boolean: function(t) {
5825            return "false" !== t
5826        },
5827        object: function(t) {
5828            return i.deserializeValue(t)
5829        },
5830        regexp: function(t) {
5831            var e = "";
5832            return /^\/.*\/(?:[gimy]*)$/.test(t) ? (e = t.replace(/.*\/([gimy]*)$/, "$1"),
5833            t = t.replace(new RegExp("^/(.*?)/" + e + "$"), "$1")) : t = "^" + t + "$",
5834            new RegExp(t,e)
5835        }
5836    }
5837      , u = function(t, e) {
5838        var n = t.match(/^\s*\[(.*)\]\s*$/);
5839        if (!n)
5840            throw 'Requirement is not an array: "' + t + '"';
5841        var r = n[1].split(",").map(i.trimString);
5842        if (r.length !== e)
5843            throw "Requirement has " + r.length + " values when " + e + " are needed";
5844        return r
5845    }
5846      , l = function(t, e) {
5847        var n = s[t || "string"];
5848        if (!n)
5849            throw 'Unknown requirement specification: "' + t + '"';
5850        return n(e)
5851    }
5852      , c = function(t, e, n) {
5853        var r = null
5854          , i = {};
5855        for (var o in t)
5856            if (o) {
5857                var a = n(o);
5858                "string" == typeof a && (a = l(t[o], a)),
5859                i[o] = a
5860            } else
5861                r = l(t[o], e);
5862        return [r, i]
5863    }
5864      , h = function(e) {
5865        t.extend(!0, this, e)
5866    };
5867    h.prototype = {
5868        validate: function(e, n) {
5869            if (this.fn)
5870                return arguments.length > 3 && (n = [].slice.call(arguments, 1, -1)),
5871                this.fn.call(this, e, n);
5872            if (t.isArray(e)) {
5873                if (!this.validateMultiple)
5874                    throw "Validator `" + this.name + "` does not handle multiple values";
5875                return this.validateMultiple.apply(this, arguments)
5876            }
5877            if (this.validateNumber)
5878                return !isNaN(e) && (arguments[0] = parseFloat(arguments[0]),
5879                this.validateNumber.apply(this, arguments));
5880            if (this.validateString)
5881                return this.validateString.apply(this, arguments);
5882            throw "Validator `" + this.name + "` only handles multiple values"
5883        },
5884        parseRequirements: function(e, n) {
5885            if ("string" != typeof e)
5886                return t.isArray(e) ? e : [e];
5887            var r = this.requirementType;
5888            if (t.isArray(r)) {
5889                for (var i = u(e, r.length), o = 0; o < i.length; o++)
5890                    i[o] = l(r[o], i[o]);
5891                return i
5892            }
5893            return t.isPlainObject(r) ? c(r, e, n) : [l(r, e)]
5894        },
5895        requirementType: "string",
5896        priority: 2
5897    };
5898    var d = function(t, e) {
5899        this.__class__ = "ParsleyValidatorRegistry",
5900        this.locale = "en",
5901        this.init(t || {}, e || {})
5902    }
5903      , f = {
5904        email: /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i,
5905        number: /^-?(\d*\.)?\d+(e[-+]?\d+)?$/i,
5906        integer: /^-?\d+$/,
5907        digits: /^\d+$/,
5908        alphanum: /^\w+$/i,
5909        url: new RegExp("^(?:(?:https?|ftp)://)?(?:\\S+(?::\\S*)?@)?(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))(?::\\d{2,5})?(?:/\\S*)?$","i")
5910    };
5911    f.range = f.number;
5912    var p = function(t) {
5913        var e = ("" + t).match(/(?:\.(\d+))?(?:[eE]([+-]?\d+))?$/);
5914        return e ? Math.max(0, (e[1] ? e[1].length : 0) - (e[2] ? +e[2] : 0)) : 0
5915    };
5916    d.prototype = {
5917        init: function(e, n) {
5918            this.catalog = n,
5919            this.validators = t.extend({}, this.validators);
5920            for (var r in e)
5921                this.addValidator(r, e[r].fn, e[r].priority);
5922            window.Parsley.trigger("parsley:validator:init")
5923        },
5924        setLocale: function(t) {
5925            if (void 0 === this.catalog[t])
5926                throw new Error(t + " is not available in the catalog");
5927            return this.locale = t,
5928            this
5929        },
5930        addCatalog: function(t, e, n) {
5931            return "object" == typeof e && (this.catalog[t] = e),
5932            !0 === n ? this.setLocale(t) : this
5933        },
5934        addMessage: function(t, e, n) {
5935            return void 0 === this.catalog[t] && (this.catalog[t] = {}),
5936            this.catalog[t][e] = n,
5937            this
5938        },
5939        addMessages: function(t, e) {
5940            for (var n in e)
5941                this.addMessage(t, n, e[n]);
5942            return this
5943        },
5944        addValidator: function(t, e, n) {
5945            if (this.validators[t])
5946                i.warn('Validator "' + t + '" is already defined.');
5947            else if (o.hasOwnProperty(t))
5948                return void i.warn('"' + t + '" is a restricted keyword and is not a valid validator name.');
5949            return this._setValidator.apply(this, arguments)
5950        },
5951        updateValidator: function(t, e, n) {
5952            return this.validators[t] ? this._setValidator.apply(this, arguments) : (i.warn('Validator "' + t + '" is not already defined.'),
5953            this.addValidator.apply(this, arguments))
5954        },
5955        removeValidator: function(t) {
5956            return this.validators[t] || i.warn('Validator "' + t + '" is not defined.'),
5957            delete this.validators[t],
5958            this
5959        },
5960        _setValidator: function(t, e, n) {
5961            "object" != typeof e && (e = {
5962                fn: e,
5963                priority: n
5964            }),
5965            e.validate || (e = new h(e)),
5966            this.validators[t] = e;
5967            for (var r in e.messages || {})
5968                this.addMessage(r, t, e.messages[r]);
5969            return this
5970        },
5971        getErrorMessage: function(t) {
5972            var e;
5973            if ("type" === t.name) {
5974                e = (this.catalog[this.locale][t.name] || {})[t.requirements]
5975            } else
5976                e = this.formatMessage(this.catalog[this.locale][t.name], t.requirements);
5977            return e || this.catalog[this.locale].defaultMessage || this.catalog.en.defaultMessage
5978        },
5979        formatMessage: function(t, e) {
5980            if ("object" == typeof e) {
5981                for (var n in e)
5982                    t = this.formatMessage(t, e[n]);
5983                return t
5984            }
5985            return "string" == typeof t ? t.replace(/%s/i, e) : ""
5986        },
5987        validators: {
5988            notblank: {
5989                validateString: function(t) {
5990                    return /\S/.test(t)
5991                },
5992                priority: 2
5993            },
5994            required: {
5995                validateMultiple: function(t) {
5996                    return t.length > 0
5997                },
5998                validateString: function(t) {
5999                    return /\S/.test(t)
6000                },
6001                priority: 512
6002            },
6003            type: {
6004                validateString: function(t, e) {
6005                    var n = arguments.length <= 2 || void 0 === arguments[2] ? {} : arguments[2]
6006                      , r = n.step
6007                      , i = void 0 === r ? "1" : r
6008                      , o = n.base
6009                      , a = void 0 === o ? 0 : o
6010                      , s = f[e];
6011                    if (!s)
6012                        throw new Error("validator type `" + e + "` is not supported");
6013                    if (!s.test(t))
6014                        return !1;
6015                    if ("number" === e && !/^any$/i.test(i || "")) {
6016                        var u = Number(t)
6017                          , l = Math.max(p(i), p(a));
6018                        if (p(u) > l)
6019                            return !1;
6020                        var c = function(t) {
6021                            return Math.round(t * Math.pow(10, l))
6022                        };
6023                        if ((c(u) - c(a)) % c(i) != 0)
6024                            return !1
6025                    }
6026                    return !0
6027                },
6028                requirementType: {
6029                    "": "string",
6030                    step: "string",
6031                    base: "number"
6032                },
6033                priority: 256
6034            },
6035            pattern: {
6036                validateString: function(t, e) {
6037                    return e.test(t)
6038                },
6039                requirementType: "regexp",
6040                priority: 64
6041            },
6042            minlength: {
6043                validateString: function(t, e) {
6044                    return t.length >= e
6045                },
6046                requirementType: "integer",
6047                priority: 30
6048            },
6049            maxlength: {
6050                validateString: function(t, e) {
6051                    return t.length <= e
6052                },
6053                requirementType: "integer",
6054                priority: 30
6055            },
6056            length: {
6057                validateString: function(t, e, n) {
6058                    return t.length >= e && t.length <= n
6059                },
6060                requirementType: ["integer", "integer"],
6061                priority: 30
6062            },
6063            mincheck: {
6064                validateMultiple: function(t, e) {
6065                    return t.length >= e
6066                },
6067                requirementType: "integer",
6068                priority: 30
6069            },
6070            maxcheck: {
6071                validateMultiple: function(t, e) {
6072                    return t.length <= e
6073                },
6074                requirementType: "integer",
6075                priority: 30
6076            },
6077            check: {
6078                validateMultiple: function(t, e, n) {
6079                    return t.length >= e && t.length <= n
6080                },
6081                requirementType: ["integer", "integer"],
6082                priority: 30
6083            },
6084            min: {
6085                validateNumber: function(t, e) {
6086                    return t >= e
6087                },
6088                requirementType: "number",
6089                priority: 30
6090            },
6091            max: {
6092                validateNumber: function(t, e) {
6093                    return t <= e
6094                },
6095                requirementType: "number",
6096                priority: 30
6097            },
6098            range: {
6099                validateNumber: function(t, e, n) {
6100                    return t >= e && t <= n
6101                },
6102                requirementType: ["number", "number"],
6103                priority: 30
6104            },
6105            equalto: {
6106                validateString: function(e, n) {
6107                    var r = t(n);
6108                    return r.length ? e === r.val() : e === n
6109                },
6110                priority: 256
6111            }
6112        }
6113    };
6114    var g = {}
6115      , m = function t(e, n, r) {
6116        for (var i = [], o = [], a = 0; a < e.length; a++) {
6117            for (var s = !1, u = 0; u < n.length; u++)
6118                if (e[a].assert.name === n[u].assert.name) {
6119                    s = !0;
6120                    break
6121                }
6122            s ? o.push(e[a]) : i.push(e[a])
6123        }
6124        return {
6125            kept: o,
6126            added: i,
6127            removed: r ? [] : t(n, e, !0).added
6128        }
6129    };
6130    g.Form = {
6131        _actualizeTriggers: function() {
6132            var t = this;
6133            this.$element.on("submit.Parsley", function(e) {
6134                t.onSubmitValidate(e)
6135            }),
6136            this.$element.on("click.Parsley", i._SubmitSelector, function(e) {
6137                t.onSubmitButton(e)
6138            }),
6139            !1 !== this.options.uiEnabled && this.$element.attr("novalidate", "")
6140        },
6141        focus: function() {
6142            if (this._focusedField = null,
6143            !0 === this.validationResult || "none" === this.options.focus)
6144                return null;
6145            for (var t = 0; t < this.fields.length; t++) {
6146                var e = this.fields[t];
6147                if (!0 !== e.validationResult && e.validationResult.length > 0 && void 0 === e.options.noFocus && (this._focusedField = e.$element,
6148                "first" === this.options.focus))
6149                    break
6150            }
6151            return null === this._focusedField ? null : this._focusedField.focus()
6152        },
6153        _destroyUI: function() {
6154            this.$element.off(".Parsley")
6155        }
6156    },
6157    g.Field = {
6158        _reflowUI: function() {
6159            if (this._buildUI(),
6160            this._ui) {
6161                var t = m(this.validationResult, this._ui.lastValidationResult);
6162                this._ui.lastValidationResult = this.validationResult,
6163                this._manageStatusClass(),
6164                this._manageErrorsMessages(t),
6165                this._actualizeTriggers(),
6166                !t.kept.length && !t.added.length || this._failedOnce || (this._failedOnce = !0,
6167                this._actualizeTriggers())
6168            }
6169        },
6170        getErrorsMessages: function() {
6171            if (!0 === this.validationResult)
6172                return [];
6173            for (var t = [], e = 0; e < this.validationResult.length; e++)
6174                t.push(this.validationResult[e].errorMessage || this._getErrorMessage(this.validationResult[e].assert));
6175            return t
6176        },
6177        addError: function(t) {
6178            var e = arguments.length <= 1 || void 0 === arguments[1] ? {}
6178 : arguments[1]
6179              , n = e.message
6180              , r = e.assert
6181              , i = e.updateClass
6182              , o = void 0 === i || i;
6183            this._buildUI(),
6184            this._addError(t, {
6185                message: n,
6186                assert: r
6187            }),
6188            o && this._errorClass()
6189        },
6190        updateError: function(t) {
6191            var e = arguments.length <= 1 || void 0 === arguments[1] ? {} : arguments[1]
6192              , n = e.message
6193              , r = e.assert
6194              , i = e.updateClass
6195              , o = void 0 === i || i;
6196            this._buildUI(),
6197            this._updateError(t, {
6198                message: n,
6199                assert: r
6200            }),
6201            o && this._errorClass()
6202        },
6203        removeError: function(t) {
6204            var e = arguments.length <= 1 || void 0 === arguments[1] ? {} : arguments[1]
6205              , n = e.updateClass
6206              , r = void 0 === n || n;
6207            this._buildUI(),
6208            this._removeError(t),
6209            r && this._manageStatusClass()
6210        },
6211        _manageStatusClass: function() {
6212            this.hasConstraints() && this.needsValidation() && !0 === this.validationResult ? this._successClass() : this.validationResult.length > 0 ? this._errorClass() : this._resetClass()
6213        },
6214        _manageErrorsMessages: function(e) {
6215            if (void 0 === this.options.errorsMessagesDisabled) {
6216                if (void 0 !== this.options.errorMessage)
6217                    return e.added.length || e.kept.length ? (this._insertErrorWrapper(),
6218                    0 === this._ui.$errorsWrapper.find(".parsley-custom-error-message").length && this._ui.$errorsWrapper.append(t(this.options.errorTemplate).addClass("parsley-custom-error-message")),
6219                    this._ui.$errorsWrapper.addClass("filled").find(".parsley-custom-error-message").html(this.options.errorMessage)) : this._ui.$errorsWrapper.removeClass("filled").find(".parsley-custom-error-message").remove();
6220                for (var n = 0; n < e.removed.length; n++)
6221                    this._removeError(e.removed[n].assert.name);
6222                for (n = 0; n < e.added.length; n++)
6223                    this._addError(e.added[n].assert.name, {
6224                        message: e.added[n].errorMessage,
6225                        assert: e.added[n].assert
6226                    });
6227                for (n = 0; n < e.kept.length; n++)
6228                    this._updateError(e.kept[n].assert.name, {
6229                        message: e.kept[n].errorMessage,
6230                        assert: e.kept[n].assert
6231                    })
6232            }
6233        },
6234        _addError: function(e, n) {
6235            var r = n.message
6236              , i = n.assert;
6237            this._insertErrorWrapper(),
6238            this._ui.$errorsWrapper.addClass("filled").append(t(this.options.errorTemplate).addClass("parsley-" + e).html(r || this._getErrorMessage(i)))
6239        },
6240        _updateError: function(t, e) {
6241            var n = e.message
6242              , r = e.assert;
6243            this._ui.$errorsWrapper.addClass("filled").find(".parsley-" + t).html(n || this._getErrorMessage(r))
6244        },
6245        _removeError: function(t) {
6246            this._ui.$errorsWrapper.removeClass("filled").find(".parsley-" + t).remove()
6247        },
6248        _getErrorMessage: function(t) {
6249            var e = t.name + "Message";
6250            return void 0 !== this.options[e] ? window.Parsley.formatMessage(this.options[e], t.requirements) : window.Parsley.getErrorMessage(t)
6251        },
6252        _buildUI: function() {
6253            if (!this._ui && !1 !== this.options.uiEnabled) {
6254                var e = {};
6255                this.$element.attr(this.options.namespace + "id", this.__id__),
6256                e.$errorClassHandler = this._manageClassHandler(),
6257                e.errorsWrapperId = "parsley-id-" + (this.options.multiple ? "multiple-" + this.options.multiple : this.__id__),
6258                e.$errorsWrapper = t(this.options.errorsWrapper).attr("id", e.errorsWrapperId),
6259                e.lastValidationResult = [],
6260                e.validationInformationVisible = !1,
6261                this._ui = e
6262            }
6263        },
6264        _manageClassHandler: function() {
6265            if ("string" == typeof this.options.classHandler && t(this.options.classHandler).length)
6266                return t(this.options.classHandler);
6267            var e = this.options.classHandler.call(this, this);
6268            return void 0 !== e && e.length ? e : this._inputHolder()
6269        },
6270        _inputHolder: function() {
6271            return !this.options.multiple || this.$element.is("select") ? this.$element : this.$element.parent()
6272        },
6273        _insertErrorWrapper: function() {
6274            var e;
6275            if (0 !== this._ui.$errorsWrapper.parent().length)
6276                return this._ui.$errorsWrapper.parent();
6277            if ("string" == typeof this.options.errorsContainer) {
6278                if (t(this.options.errorsContainer).length)
6279                    return t(this.options.errorsContainer).append(this._ui.$errorsWrapper);
6280                i.warn("The errors container `" + this.options.errorsContainer + "` does not exist in DOM")
6281            } else
6282                "function" == typeof this.options.errorsContainer && (e = this.options.errorsContainer.call(this, this));
6283            return void 0 !== e && e.length ? e.append(this._ui.$errorsWrapper) : this._inputHolder().after(this._ui.$errorsWrapper)
6284        },
6285        _actualizeTriggers: function() {
6286            var t, e = this, n = this._findRelated();
6287            n.off(".Parsley"),
6288            this._failedOnce ? n.on(i.namespaceEvents(this.options.triggerAfterFailure, "Parsley"), function() {
6289                e.validate()
6290            }) : (t = i.namespaceEvents(this.options.trigger, "Parsley")) && n.on(t, function(t) {
6291                e._eventValidate(t)
6292            })
6293        },
6294        _eventValidate: function(t) {
6295            !(!/key|input/.test(t.type) || this._ui && this._ui.validationInformationVisible) && this.getValue().length <= this.options.validationThreshold || this.validate()
6296        },
6297        _resetUI: function() {
6298            this._failedOnce = !1,
6299            this._actualizeTriggers(),
6300            void 0 !== this._ui && (this._ui.$errorsWrapper.removeClass("filled").children().remove(),
6301            this._resetClass(),
6302            this._ui.lastValidationResult = [],
6303            this._ui.validationInformationVisible = !1)
6304        },
6305        _destroyUI: function() {
6306            this._resetUI(),
6307            void 0 !== this._ui && this._ui.$errorsWrapper.remove(),
6308            delete this._ui
6309        },
6310        _successClass: function() {
6311            this._ui.validationInformationVisible = !0,
6312            this._ui.$errorClassHandler.removeClass(this.options.errorClass).addClass(this.options.successClass)
6313        },
6314        _errorClass: function() {
6315            this._ui.validationInformationVisible = !0,
6316            this._ui.$errorClassHandler.removeClass(this.options.successClass).addClass(this.options.errorClass)
6317        },
6318        _resetClass: function() {
6319            this._ui.$errorClassHandler.removeClass(this.options.successClass).removeClass(this.options.errorClass)
6320        }
6321    };
6322    var y = function(e, n, r) {
6323        this.__class__ = "ParsleyForm",
6324        this.$element = t(e),
6325        this.domOptions = n,
6326        this.options = r,
6327        this.parent = window.Parsley,
6328        this.fields = [],
6329        this.validationResult = null
6330    }
6331      , v = {
6332        pending: null,
6333        resolved: !0,
6334        rejected: !1
6335    };
6336    y.prototype = {
6337        onSubmitValidate: function(t) {
6338            var e = this;
6339            if (!0 !== t.parsley) {
6340                var n = this._$submitSource || this.$element.find(i._SubmitSelector).first();
6341                if (this._$submitSource = null,
6342                this.$element.find(".parsley-synthetic-submit-button").prop("disabled", !0),
6343                !n.is("[formnovalidate]")) {
6344                    var r = this.whenValidate({
6345                        event: t
6346                    });
6347                    "resolved" === r.state() && !1 !== this._trigger("submit") || (t.stopImmediatePropagation(),
6348                    t.preventDefault(),
6349                    "pending" === r.state() && r.done(function() {
6350                        e._submit(n)
6351                    }))
6352                }
6353            }
6354        },
6355        onSubmitButton: function(e) {
6356            this._$submitSource = t(e.currentTarget)
6357        },
6358        _submit: function(e) {
6359            if (!1 !== this._trigger("submit")) {
6360                if (e) {
6361                    var n = this.$element.find(".parsley-synthetic-submit-button").prop("disabled", !1);
6362                    0 === n.length && (n = t('<input class="parsley-synthetic-submit-button" type="hidden">').appendTo(this.$element)),
6363                    n.attr({
6364                        name: e.attr("name"),
6365                        value: e.attr("value")
6366                    })
6367                }
6368                this.$element.trigger(t.extend(t.Event("submit"), {
6369                    parsley: !0
6370                }))
6371            }
6372        },
6373        validate: function(e) {
6374            if (arguments.length >= 1 && !t.isPlainObject(e)) {
6375                i.warnOnce("Calling validate on a parsley form without passing arguments as an object is deprecated.");
6376                var n = _slice.call(arguments);
6377                e = {
6378                    group: n[0],
6379                    force: n[1],
6380                    event: n[2]
6381                }
6382            }
6383            return v[this.whenValidate(e).state()]
6384        },
6385        whenValidate: function() {
6386            var e, n = this, r = arguments.length <= 0 || void 0 === arguments[0] ? {}
6386 : arguments[0], o = r.group, a = r.force, s = r.event;
6387            this.submitEvent = s,
6388            s && (this.submitEvent = t.extend({}, s, {
6389                preventDefault: function() {
6390                    i.warnOnce("Using `this.submitEvent.preventDefault()` is deprecated; instead, call `this.validationResult = false`"),
6391                    n.validationResult = !1
6392                }
6393            })),
6394            this.validationResult = !0,
6395            this._trigger("validate"),
6396            this._refreshFields();
6397            var u = this._withoutReactualizingFormOptions(function() {
6398                return t.map(n.fields, function(t) {
6399                    return t.whenValidate({
6400                        force: a,
6401                        group: o
6402                    })
6403                })
6404            });
6405            return (e = i.all(u).done(function() {
6406                n._trigger("success")
6407            }).fail(function() {
6408                n.validationResult = !1,
6409                n.focus(),
6410                n._trigger("error")
6411            }).always(function() {
6412                n._trigger("validated")
6413            })).pipe.apply(e, _toConsumableArray(this._pipeAccordingToValidationResult()))
6414        },
6415        isValid: function(e) {
6416            if (arguments.length >= 1 && !t.isPlainObject(e)) {
6417                i.warnOnce("Calling isValid on a parsley form without passing arguments as an object is deprecated.");
6418                var n = _slice.call(arguments);
6419                e = {
6420                    group: n[0],
6421                    force: n[1]
6422                }
6423            }
6424            return v[this.whenValid(e).state()]
6425        },
6426        whenValid: function() {
6427            var e = this
6428              , n = arguments.length <= 0 || void 0 === arguments[0] ? {} : arguments[0]
6429              , r = n.group
6430              , o = n.force;
6431            this._refreshFields();
6432            var a = this._withoutReactualizingFormOptions(function() {
6433                return t.map(e.fields, function(t) {
6434                    return t.whenValid({
6435                        group: r,
6436                        force: o
6437                    })
6438                })
6439            });
6440            return i.all(a)
6441        },
6442        _refreshFields: function() {
6443            return this.actualizeOptions()._bindFields()
6444        },
6445        _bindFields: function() {
6446            var e = this
6447              , n = this.fields;
6448            return this.fields = [],
6449            this.fieldsMappedById = {},
6450            this._withoutReactualizingFormOptions(function() {
6451                e.$element.find(e.options.inputs).not(e.options.excluded).each(function(t, n) {
6452                    var r = new window.Parsley.Factory(n,{},e);
6453                    "ParsleyField" !== r.__class__ && "ParsleyFieldMultiple" !== r.__class__ || !0 === r.options.excluded || void 0 === e.fieldsMappedById[r.__class__ + "-" + r.__id__] && (e.fieldsMappedById[r.__class__ + "-" + r.__id__] = r,
6454                    e.fields.push(r))
6455                }),
6456                t.each(i.difference(n, e.fields), function(t, e) {
6457                    e._trigger("reset")
6458                })
6459            }),
6460            this
6461        },
6462        _withoutReactualizingFormOptions: function(t) {
6463            var e = this.actualizeOptions;
6464            this.actualizeOptions = function() {
6465                return this
6466            }
6467            ;
6468            var n = t();
6469            return this.actualizeOptions = e,
6470            n
6471        },
6472        _trigger: function(t) {
6473            return this.trigger("form:" + t)
6474        }
6475    };
6476    var b = function(e, n, r, i, o) {
6477        if (!/ParsleyField/.test(e.__class__))
6478            throw new Error("ParsleyField or ParsleyFieldMultiple instance expected");
6479        var a = window.Parsley._validatorRegistry.validators[n]
6480          , s = new h(a);
6481        t.extend(this, {
6482            validator: s,
6483            name: n,
6484            requirements: r,
6485            priority: i || e.options[n + "Priority"] || s.priority,
6486            isDomConstraint: !0 === o
6487        }),
6488        this._parseRequirements(e.options)
6489    }
6490      , w = function(t) {
6491        return t[0].toUpperCase() + t.slice(1)
6492    };
6493    b.prototype = {
6494        validate: function(t, e) {
6495            var n;
6496            return (n = this.validator).validate.apply(n, [t].concat(_toConsumableArray(this.requirementList), [e]))
6497        },
6498        _parseRequirements: function(t) {
6499            var e = this;
6500            this.requirementList = this.validator.parseRequirements(this.requirements, function(n) {
6501                return t[e.name + w(n)]
6502            })
6503        }
6504    };
6505    var x = function(e, n, r, i) {
6506        this.__class__ = "ParsleyField",
6507        this.$element = t(e),
6508        void 0 !== i && (this.parent = i),
6509        this.options = r,
6510        this.domOptions = n,
6511        this.constraints = [],
6512        this.constraintsByName = {},
6513        this.validationResult = !0,
6514        this._bindConstraints()
6515    }
6516      , _ = {
6517        pending: null,
6518        resolved: !0,
6519        rejected: !1
6520    };
6521    x.prototype = {
6522        validate: function(e) {
6523            arguments.length >= 1 && !t.isPlainObject(e) && (i.warnOnce("Calling validate on a parsley field without passing arguments as an object is deprecated."),
6524            e = {
6525                options: e
6526            });
6527            var n = this.whenValidate(e);
6528            if (!n)
6529                return !0;
6530            switch (n.state()) {
6531            case "pending":
6532                return null;
6533            case "resolved":
6534                return !0;
6535            case "rejected":
6536                return this.validationResult
6537            }
6538        },
6539        whenValidate: function() {
6540            var t, e = this, n = arguments.length <= 0 || void 0 === arguments[0] ? {}
vendor: 15,080 bytes, lines 6540-6844
6540 : arguments[0], r = n.force, i = n.group;
6541            if (this.refreshConstraints(),
6542            !i || this._isInGroup(i))
6543                return this.value = this.getValue(),
6544                this._trigger("validate"),
6545                (t = this.whenValid({
6546                    force: r,
6547                    value: this.value,
6548                    _refreshed: !0
6549                }).always(function() {
6550                    e._reflowUI()
6551                }).done(function() {
6552                    e._trigger("success")
6553                }).fail(function() {
6554                    e._trigger("error")
6555                }).always(function() {
6556                    e._trigger("validated")
6557                })).pipe.apply(t, _toConsumableArray(this._pipeAccordingToValidationResult()))
6558        },
6559        hasConstraints: function() {
6560            return 0 !== this.constraints.length
6561        },
6562        needsValidation: function(t) {
6563            return void 0 === t && (t = this.getValue()),
6564            !(!t.length && !this._isRequired() && void 0 === this.options.validateIfEmpty)
6565        },
6566        _isInGroup: function(e) {
6567            return t.isArray(this.options.group) ? -1 !== t.inArray(e, this.options.group) : this.options.group === e
6568        },
6569        isValid: function(e) {
6570            if (arguments.length >= 1 && !t.isPlainObject(e)) {
6571                i.warnOnce("Calling isValid on a parsley field without passing arguments as an object is deprecated.");
6572                var n = _slice.call(arguments);
6573                e = {
6574                    force: n[0],
6575                    value: n[1]
6576                }
6577            }
6578            var r = this.whenValid(e);
6579            return !r || _[r.state()]
6580        },
6581        whenValid: function() {
6582            var e = this
6583              , n = arguments.length <= 0 || void 0 === arguments[0] ? {} : arguments[0]
6584              , r = n.force
6585              , o = void 0 !== r && r
6586              , a = n.value
6587              , s = n.group;
6588            if (n._refreshed || this.refreshConstraints(),
6589            !s || this._isInGroup(s)) {
6590                if (this.validationResult = !0,
6591                !this.hasConstraints())
6592                    return t.when();
6593                if (void 0 !== a && null !== a || (a = this.getValue()),
6594                !this.needsValidation(a) && !0 !== o)
6595                    return t.when();
6596                var u = this._getGroupedConstraints()
6597                  , l = [];
6598                return t.each(u, function(n, r) {
6599                    var o = i.all(t.map(r, function(t) {
6600                        return e._validateConstraint(a, t)
6601                    }));
6602                    if (l.push(o),
6603                    "rejected" === o.state())
6604                        return !1
6605                }),
6606                i.all(l)
6607            }
6608        },
6609        _validateConstraint: function(e, n) {
6610            var r = this
6611              , o = n.validate(e, this);
6612            return !1 === o && (o = t.Deferred().reject()),
6613            i.all([o]).fail(function(t) {
6614                r.validationResult instanceof Array || (r.validationResult = []),
6615                r.validationResult.push({
6616                    assert: n,
6617                    errorMessage: "string" == typeof t && t
6618                })
6619            })
6620        },
6621        getValue: function() {
6622            var t;
6623            return t = "function" == typeof this.options.value ? this.options.value(this) : void 0 !== this.options.value ? this.options.value : this.$element.val(),
6624            void 0 === t || null === t ? "" : this._handleWhitespace(t)
6625        },
6626        refreshConstraints: function() {
6627            return this.actualizeOptions()._bindConstraints()
6628        },
6629        addConstraint: function(t, e, n, r) {
6630            if (window.Parsley._validatorRegistry.validators[t]) {
6631                var i = new b(this,t,e,n,r);
6632                "undefined" !== this.constraintsByName[i.name] && this.removeConstraint(i.name),
6633                this.constraints.push(i),
6634                this.constraintsByName[i.name] = i
6635            }
6636            return this
6637        },
6638        removeConstraint: function(t) {
6639            for (var e = 0; e < this.constraints.length; e++)
6640                if (t === this.constraints[e].name) {
6641                    this.constraints.splice(e, 1);
6642                    break
6643                }
6644            return delete this.constraintsByName[t],
6645            this
6646        },
6647        updateConstraint: function(t, e, n) {
6648            return this.removeConstraint(t).addConstraint(t, e, n)
6649        },
6650        _bindConstraints: function() {
6651            for (var t = [], e = {}, n = 0; n < this.constraints.length; n++)
6652                !1 === this.constraints[n].isDomConstraint && (t.push(this.constraints[n]),
6653                e[this.constraints[n].name] = this.constraints[n]);
6654            this.constraints = t,
6655            this.constraintsByName = e;
6656            for (var r in this.options)
6657                this.addConstraint(r, this.options[r], void 0, !0);
6658            return this._bindHtml5Constraints()
6659        },
6660        _bindHtml5Constraints: function() {
6661            (this.$element.hasClass("required") || this.$element.attr("required")) && this.addConstraint("required", !0, void 0, !0),
6662            "string" == typeof this.$element.attr("pattern") && this.addConstraint("pattern", this.$element.attr("pattern"), void 0, !0),
6663            void 0 !== this.$element.attr("min") && void 0 !== this.$element.attr("max") ? this.addConstraint("range", [this.$element.attr("min"), this.$element.attr("max")], void 0, !0) : void 0 !== this.$element.attr("min") ? this.addConstraint("min", this.$element.attr("min"), void 0, !0) : void 0 !== this.$element.attr("max") && this.addConstraint("max", this.$element.attr("max"), void 0, !0),
6664            void 0 !== this.$element.attr("minlength") && void 0 !== this.$element.attr("maxlength") ? this.addConstraint("length", [this.$element.attr("minlength"), this.$element.attr("maxlength")], void 0, !0) : void 0 !== this.$element.attr("minlength") ? this.addConstraint("minlength", this.$element.attr("minlength"), void 0, !0) : void 0 !== this.$element.attr("maxlength") && this.addConstraint("maxlength", this.$element.attr("maxlength"), void 0, !0);
6665            var t = this.$element.attr("type");
6666            return void 0 === t ? this : "number" === t ? this.addConstraint("type", ["number", {
6667                step: this.$element.attr("step"),
6668                base: this.$element.attr("min") || this.$element.attr("value")
6669            }], void 0, !0) : /^(email|url|range)$/i.test(t) ? this.addConstraint("type", t, void 0, !0) : this
6670        },
6671        _isRequired: function() {
6672            return void 0 !== this.constraintsByName.required && !1 !== this.constraintsByName.required.requirements
6673        },
6674        _trigger: function(t) {
6675            return this.trigger("field:" + t)
6676        },
6677        _handleWhitespace: function(t) {
6678            return !0 === this.options.trimValue && i.warnOnce('data-parsley-trim-value="true" is deprecated, please use data-parsley-whitespace="trim"'),
6679            "squish" === this.options.whitespace && (t = t.replace(/\s{2,}/g, " ")),
6680            "trim" !== this.options.whitespace && "squish" !== this.options.whitespace && !0 !== this.options.trimValue || (t = i.trimString(t)),
6681            t
6682        },
6683        _getGroupedConstraints: function() {
6684            if (!1 === this.options.priorityEnabled)
6685                return [this.constraints];
6686            for (var t = [], e = {}, n = 0; n < this.constraints.length; n++) {
6687                var r = this.constraints[n].priority;
6688                e[r] || t.push(e[r] = []),
6689                e[r].push(this.constraints[n])
6690            }
6691            return t.sort(function(t, e) {
6692                return e[0].priority - t[0].priority
6693            }),
6694            t
6695        }
6696    };
6697    var C = x
6698      , k = function() {
6699        this.__class__ = "ParsleyFieldMultiple"
6700    };
6701    k.prototype = {
6702        addElement: function(t) {
6703            return this.$elements.push(t),
6704            this
6705        },
6706        refreshConstraints: function() {
6707            var e;
6708            if (this.constraints = [],
6709            this.$element.is("select"))
6710                return this.actualizeOptions()._bindConstraints(),
6711                this;
6712            for (var n = 0; n < this.$elements.length; n++)
6713                if (t("html").has(this.$elements[n]).length) {
6714                    e = this.$elements[n].data("ParsleyFieldMultiple").refreshConstraints().constraints;
6715                    for (var r = 0; r < e.length; r++)
6716                        this.addConstraint(e[r].name, e[r].requirements, e[r].priority, e[r].isDomConstraint)
6717                } else
6718                    this.$elements.splice(n, 1);
6719            return this
6720        },
6721        getValue: function() {
6722            if ("function" == typeof this.options.value)
6723                return this.options.value(this);
6724            if (void 0 !== this.options.value)
6725                return this.options.value;
6726            if (this.$element.is("input[type=radio]"))
6727                return this._findRelated().filter(":checked").val() || "";
6728            if (this.$element.is("input[type=checkbox]")) {
6729                var e = [];
6730                return this._findRelated().filter(":checked").each(function() {
6731                    e.push(t(this).val())
6732                }),
6733                e
6734            }
6735            return this.$element.is("select") && null === this.$element.val() ? [] : this.$element.val()
6736        },
6737        _init: function() {
6738            return this.$elements = [this.$element],
6739            this
6740        }
6741    };
6742    var j = function(e, n, r) {
6743        this.$element = t(e);
6744        var i = this.$element.data("Parsley");
6745        if (i)
6746            return void 0 !== r && i.parent === window.Parsley && (i.parent = r,
6747            i._resetOptions(i.options)),
6748            "object" == typeof n && t.extend(i.options, n),
6749            i;
6750        if (!this.$element.length)
6751            throw new Error("You must bind Parsley on an existing element.");
6752        if (void 0 !== r && "ParsleyForm" !== r.__class__)
6753            throw new Error("Parent instance must be a ParsleyForm instance");
6754        return this.parent = r || window.Parsley,
6755        this.init(n)
6756    };
6757    j.prototype = {
6758        init: function(t) {
6759            return this.__class__ = "Parsley",
6760            this.__version__ = "2.4.4",
6761            this.__id__ = i.generateID(),
6762            this._resetOptions(t),
6763            this.$element.is("form") || i.checkAttr(this.$element, this.options.namespace, "validate") && !this.$element.is(this.options.inputs) ? this.bind("parsleyForm") : this.isMultiple() ? this.handleMultiple() : this.bind("parsleyField")
6764        },
6765        isMultiple: function() {
6766            return this.$element.is("input[type=radio], input[type=checkbox]") || this.$element.is("select") && void 0 !== this.$element.attr("multiple")
6767        },
6768        handleMultiple: function() {
6769            var e, n, r = this;
6770            if (this.options.multiple || (void 0 !== this.$element.attr("name") && this.$element.attr("name").length ? this.options.multiple = e = this.$element.attr("name") : void 0 !== this.$element.attr("id") && this.$element.attr("id").length && (this.options.multiple = this.$element.attr("id"))),
6771            this.$element.is("select") && void 0 !== this.$element.attr("multiple"))
6772                return this.options.multiple = this.options.multiple || this.__id__,
6773                this.bind("parsleyFieldMultiple");
6774            if (!this.options.multiple)
6775                return i.warn("To be bound by Parsley, a radio, a checkbox and a multiple select input must have either a name or a multiple option.", this.$element),
6776                this;
6777            this.options.multiple = this.options.multiple.replace(/(:|\.|\[|\]|\{|\}|\$)/g, ""),
6778            void 0 !== e && t('input[name="' + e + '"]').each(function(e, n) {
6779                t(n).is("input[type=radio], input[type=checkbox]") && t(n).attr(r.options.namespace + "multiple", r.options.multiple)
6780            });
6781            for (var o = this._findRelated(), a = 0; a < o.length; a++)
6782                if (void 0 !== (n = t(o.get(a)).data("Parsley"))) {
6783                    this.$element.data("ParsleyFieldMultiple") || n.addElement(this.$element);
6784                    break
6785                }
6786            return this.bind("parsleyField", !0),
6787            n || this.bind("parsleyFieldMultiple")
6788        },
6789        bind: function(e, n) {
6790            var r;
6791            switch (e) {
6792            case "parsleyForm":
6793                r = t.extend(new y(this.$element,this.domOptions,this.options), new a, window.ParsleyExtend)._bindFields();
6794                break;
6795            case "parsleyField":
6796                r = t.extend(new C(this.$element,this.domOptions,this.options,this.parent), new a, window.ParsleyExtend);
6797                break;
6798            case "parsleyFieldMultiple":
6799                r = t.extend(new C(this.$element,this.domOptions,this.options,this.parent), new k, new a, window.ParsleyExtend)._init();
6800                break;
6801            default:
6802                throw new Error(e + "is not a supported Parsley type")
6803            }
6804            return this.options.multiple && i.setAttr(this.$element, this.options.namespace, "multiple", this.options.multiple),
6805            void 0 !== n ? (this.$element.data("ParsleyFieldMultiple", r),
6806            r) : (this.$element.data("Parsley", r),
6807            r._actualizeTriggers(),
6808            r._trigger("init"),
6809            r)
6810        }
6811    };
6812    var T = t.fn.jquery.split(".");
6813    if (parseInt(T[0]) <= 1 && parseInt(T[1]) < 8)
6814        throw "The loaded version of jQuery is too old. Please upgrade to 1.8.x or better.";
6815    T.forEach || i.warn("Parsley requires ES5 to run properly. Please include https://github.com/es-shims/es5-shim");
6816    var S = t.extend(new a, {
6817        $element: t(document),
6818        actualizeOptions: null,
6819        _resetOptions: null,
6820        Factory: j,
6821        version: "2.4.4"
6822    });
6823    t.extend(C.prototype, g.Field, a.prototype),
6824    t.extend(y.prototype, g.Form, a.prototype),
6825    t.extend(j.prototype, a.prototype),
6826    t.fn.parsley = t.fn.psly = function(e) {
6827        if (this.length > 1) {
6828            var n = [];
6829            return this.each(function() {
6830                n.push(t(this).parsley(e))
6831            }),
6832            n
6833        }
6834        return t(this).length ? new j(this,e) : void i.warn("You must bind Parsley on an existing element.")
6835    }
6836    ,
6837    void 0 === window.ParsleyExtend && (window.ParsleyExtend = {}),
6838    S.options = t.extend(i.objectCreate(o), window.ParsleyConfig),
6839    window.ParsleyConfig = S.options,
6840    window.Parsley = window.psly = S,
6841    window.ParsleyUtils = i;
6842    var E = window.Parsley._validatorRegistry = new d(window.ParsleyConfig.validators,window.ParsleyConfig.i18n);
6843    window.ParsleyValidator = {},
6844    t.each("setLocale addCatalog addMessage addMessages getErrorMessage formatMessage addValidator updateV
6844alidator removeValidator".split(" "), function(e, n) {
6845        window.Parsley[n] = t.proxy(E, n),
6846        window.ParsleyValidator[n] = function() {
6847            var t;
6848            return i.warnOnce("Accessing the method '" + n + "' through ParsleyValidator is deprecated. Simply call 'window.Parsley." + n + "(...)'"),
6849            (t = window.Parsley)[n].apply(t, arguments)
6850        }
6851    }),
6852    window.Parsley.UI = g,
6853    window.ParsleyUI = {
6854        removeError: function(t, e, n) {
6855            var r = !0 !== n;
6856            return i.warnOnce("Accessing ParsleyUI is deprecated. Call 'removeError' on the instance directly. Please comment in issue 1073 as to your need to call this method."),
6857            t.removeError(e, {
6858                updateClass: r
6859            })
6860        },
6861        getErrorsMessages: function(t) {
6862            return i.warnOnce("Accessing ParsleyUI is deprecated. Call 'getErrorsMessages' on the instance directly."),
6863            t.getErrorsMessages()
6864        }
6865    },
6866    t.each("addError updateError".split(" "), function(t, e) {
6867        window.ParsleyUI[e] = function(t, n, r, o, a) {
6868            var s = !0 !== a;
6869            return i.warnOnce("Accessing ParsleyUI is deprecated. Call '" + e + "' on the instance directly. Please comment in issue 1073 as to your need to call this method."),
6870            t[e](n, {
6871                message: r,
6872                assert: o,
6873                updateClass: s
6874            })
6875        }
6876    }),
6877    !1 !== window.ParsleyConfig.autoBind && t(function() {
6878        t("[data-parsley-validate]").length && t("[data-parsley-validate]").parsley()
6879    });
6880    var A = t({})
6881      , M = function() {
6882        i.warnOnce("Parsley's pubsub module is deprecated; use the 'on' and 'off' methods on parsley instances or window.Parsley")
6883    };
6884    function Q(t, e) {
6885        return t.parsleyAdaptedCallback || (t.parsleyAdaptedCallback = function() {
6886            var n = Array.prototype.slice.call(arguments, 0);
6887            n.unshift(this),
6888            t.apply(e || A, n)
6889        }
6890        ),
6891        t.parsleyAdaptedCallback
6892    }
6893    var $ = "parsley:";
6894    function D(t) {
6895        return 0 === t.lastIndexOf($, 0) ? t.substr($.length) : t
6896    }
6897    t.listen = function(t, e) {
6898        var n;
6899        if (M(),
6900        "object" == typeof arguments[1] && "function" == typeof arguments[2] && (n = arguments[1],
6901        e = arguments[2]),
6902        "function" != typeof e)
6903            throw new Error("Wrong parameters");
6904        window.Parsley.on(D(t), Q(e, n))
6905    }
6906    ,
6907    t.listenTo = function(t, e, n) {
6908        if (M(),
6909        !(t instanceof C || t instanceof y))
6910            throw new Error("Must give Parsley instance");
6911        if ("string" != typeof e || "function" != typeof n)
6912            throw new Error("Wrong parameters");
6913        t.on(D(e), Q(n))
6914    }
6915    ,
6916    t.unsubscribe = function(t, e) {
6917        if (M(),
6918        "string" != typeof t || "function" != typeof e)
6919            throw new Error("Wrong arguments");
6920        window.Parsley.off(D(t), e.parsleyAdaptedCallback)
6921    }
6922    ,
6923    t.unsubscribeTo = function(t, e) {
6924        if (M(),
6925        !(t instanceof C || t instanceof y))
6926            throw new Error("Must give Parsley instance");
6927        t.off(D(e))
6928    }
6929    ,
6930    t.unsubscribeAll = function(e) {
6931        M(),
6932        window.Parsley.off(D(e)),
6933        t("form,input,textarea,select").each(function() {
6934            var n = t(this).data("Parsley");
6935            n && n.off(D(e))
6936        })
6937    }
6938    ,
6939    t.emit = function(t, e) {
6940        var n;
6941        M();
6942        var r = e instanceof C || e instanceof y
6943          , i = Array.prototype.slice.call(arguments, r ? 2 : 1);
6944        i.unshift(D(t)),
6945        r || (e = window.Parsley),
6946        (n = e).trigger.apply(n, _toConsumableArray(i))
6947    }
6948    ;
6949    t.extend(!0, S, {
6950        asyncValidators: {
6951            default: {
6952                fn: function(t) {
6953                    return t.status >= 200 && t.status < 300
6954                },
6955                url: !1
6956            },
6957            reverse: {
6958                fn: function(t) {
6959                    return t.status < 200 || t.status >= 300
6960                },
6961                url: !1
6962            }
6963        },
6964        addAsyncValidator: function(t, e, n, r) {
6965            return S.asyncValidators[t] = {
6966                fn: e,
6967                url: n || !1,
6968                options: r || {}
6969            },
6970            this
6971        }
6972    }),
6973    S.addValidator("remote", {
6974        requirementType: {
6975            "": "string",
6976            validator: "string",
6977            reverse: "boolean",
6978            options: "object"
6979        },
6980        validateString: function(e, n, r, i) {
6981            var o, a, s = {}, u = r.validator || (!0 === r.reverse ? "reverse" : "default");
6982            if (void 0 === S.asyncValidators[u])
6983                throw new Error("Calling an undefined async validator: `" + u + "`");
6984            n = S.asyncValidators[u].url || n,
6985            n.indexOf("{value}") > -1 ? n = n.replace("{value}", encodeURIComponent(e)) : s[i.$element.attr("name") || i.$element.attr("id")] = e;
6986            var l = t.extend(!0, r.options || {}, S.asyncValidators[u].options);
6987            o = t.extend(!0, {}, {
6988                url: n,
6989                data: s,
6990                type: "GET"
6991            }, l),
6992            i.trigger("field:ajaxoptions", i, o),
6993            a = t.param(o),
6994            void 0 === S._remoteCache && (S._remoteCache = {});
6995            var c = S._remoteCache[a] = S._remoteCache[a] || t.ajax(o)
6996              , h = function() {
6997                var e = S.asyncValidators[u].fn.call(i, c, n, r);
6998                return e || (e = t.Deferred().reject()),
6999                t.when(e)
7000            };
7001            return c.then(h, h)
7002        },
7003        priority: -1
7004    }),
7005    S.on("form:submit", function() {
7006        S._remoteCache = {}
7007    }),
7008    window.ParsleyExtend.addAsyncValidator = function() {
7009        return ParsleyUtils.warnOnce("Accessing the method `addAsyncValidator` through an instance is deprecated. Simply call `Parsley.addAsyncValidator(...)`"),
7010        S.addAsyncValidator.apply(S, arguments)
7011    }
7012    ,
7013    S.addMessages("en", {
7014        defaultMessage: "This value seems to be invalid.",
7015        type: {
7016            email: "This value should be a valid email.",
7017            url: "This value should be a valid url.",
7018            number: "This value should be a valid number.",
7019            integer: "This value should be a valid integer.",
7020            digits: "This value should be digits.",
7021            alphanum: "This value should be alphanumeric."
7022        },
7023        notblank: "This value should not be blank.",
7024        required: "This value is required.",
7025        pattern: "This value seems to be invalid.",
7026        min: "This value should be greater than or equal to %s.",
7027        max: "This value should be lower than or equal to %s.",
7028        range: "This value should be between %s and %s.",
7029        minlength: "This value is too short. It should have %s characters or more.",
7030        maxlength: "This value is too long. It should have %s characters or fewer.",
7031        length: "This value length is invalid. It should be between %s and %s characters long.",
7032        mincheck: "You must select at least %s choices.",
7033        maxcheck: "You must select %s choices or fewer.",
7034        check: "You must select between %s and %s choices.",
7035        equalto: "This value should be the same."
7036    }),
7037    S.setLocale("en");
7038    /**
7039   * inputevent - Alleviate browser bugs for input events
7040   * https://github.com/marcandre/inputevent
7041   * @version v0.0.3 - (built Thu, Apr 14th 2016, 5:58 pm)
7042   * @author Marc-Andre Lafortune <[email protected]>
7043   * @license MIT
7044   */
7045    function I() {
7046        var e = this
7047          , n = window || global;
7048        t.extend(this, {
7049            isNativeEvent: function(t) {
7050                return t.originalEvent && !1 !== t.originalEvent.isTrusted
7051            },
7052            fakeInputEvent: function(n) {
7053                e.isNativeEvent(n) && t(n.target).trigger("input")
7054            },
7055            misbehaves: function(n) {
7056                e.isNativeEvent(n) && (e.behavesOk(n),
7057                t(document).on("change.inputevent", n.data.selector, e.fakeInputEvent),
7058                e.fakeInputEvent(n))
7059            },
7060            behavesOk: function(n) {
7061                e.isNativeEvent(n) && t(document).off("input.inputevent", n.data.selector, e.behavesOk).off("change.inputevent", n.data.selector, e.misbehaves)
7062            },
7063            install: function() {
7064                if (!n.inputEventPatched) {
7065                    n.inputEventPatched = "0.0.3";
7066                    for (var r = ["select", 'input[type="checkbox"]', 'input[type="radio"]', 'input[type="file"]'], i = 0; i < r.length; i++) {
7067                        var o = r[i];
7068                        t(document).on("input.inputevent", o, {
7069                            selector: o
7070                        }, e.behavesOk).on("change.inputevent", o, {
7071                            selector: o
7072                        }, e.misbehaves)
7073                    }
7074                }
7075            },
7076            uninstall: function() {
7077                delete n.inputEventPatched,
7078                t(document).off(".inputevent")
7079            }
7080        })
7081    }
7082    return (new I).install(),
7083    S
7084}),
7085/*!
7086 * classie v1.0.0
7087 * class helper functions
7088 * from bonzo https://github.com/ded/bonzo
7089 * MIT license
7090 *
7091 * classie.has( elem, 'my-class' ) -> true/false
7092 * classie.add( elem, 'my-new-class' )
7093 * classie.remove( elem, 'my-unwanted-class' )
7094 * classie.toggle( elem, 'my-class' )
7095 */
7096function(t) {
7097    "use strict";
7098    function e(t) {
7099        return new RegExp("(^|\\s+)" + t + "(\\s+|$)")
7100    }
7101    var n, r, i;
7102    "classList"in document.documentElement ? (n = function(t, e) {
7103        return t.classList.contains(e)
7104    }
7105    ,
7106    r = function(t, e) {
7107        t.classList.add(e)
7108    }
7109    ,
7110    i = function(t, e) {
7111        t.classList.remove(e)
7112    }
7113    ) : (n = function(t, n) {
7114        return e(n).test(t.className)
7115    }
7116    ,
7117    r = function(t, e) {
7118        n(t, e) || (t.className = t.className + " " + e)
7119    }
7120    ,
7121    i = function(t, n) {
7122        t.className = t.className.replace(e(n), " ")
7123    }
7124    );
7125    function o(t, e) {
7126        (n(t, e) ? i : r)(t, e)
7127    }
7128    var a = {
7129        hasClass: n,
7130        addClass: r,
7131        removeClass: i,
7132        toggleClass: o,
7133        has: n,
7134        add: r,
7135        remove: i,
7136        toggle: o
7137    };
7138    "function" == typeof define && define.amd ? define(a) : t.classie = a
7139}(window),
7140/*!
7141 * IE10 viewport hack for Surface/desktop Windows 8 bug
7142 * Copyright 2014-2015 Twitter, Inc.
7143 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
7144 */
7145function() {
7146    "use strict";
7147    if (navigator.userAgent.match(/IEMobile\/10\.0/)) {
7148        var t = document.createElement("style");
7149        t.appendChild(document.createTextNode("@-ms-viewport{width:auto!important}")),
7150        document.querySelector("head").appendChild(t)
7151    }
7152}(),
7153jQuery(".show-more").click(function() {
7154    var t = $(this);
7155    t.toggleClass("SeeMore2"),
7156    t.hasClass("SeeMore2") ? t.text("View full profile") : t.text("Hide full profile")
7157}),
7158jQuery("path").click(function() {}),
7159jQuery(document).ready(function() {
7160    setTimeout(function() {
7161        jQuery("#iframe-realex-join").contents().find("#realexForm").submit()
7162    }, 600),
7163    setTimeout(function() {
7164        jQuery("#iframe-realex").contents().find("#realexForm").submit()
7165    }, 600);
7166    var t = $(".cd-timeline-block");
7167    !function(t, e) {
7168        t.each(function() {
7169            $(this).offset().top > $(window).scrollTop() + $(window).height() * e && $(this).find(".cd-timeline-img, .cd-timeline-content").addClass("is-hidden")
7170        })
7171    }(t, .8),
7172    $(window).on("scroll", function() {
7173        window.requestAnimationFrame ? window.requestAnimationFrame(function() {
7174            e(t, .8)
7175        }) : setTimeout(function() {
7176            e(t, .8)
7177        }, 100)
7178    });
7179    function e(t, e) {
7180        t.each(function() {
7181            $(this).offset().top <= $(window).scrollTop() + $(window).height() * e && $(this).find(".cd-timeline-img").hasClass("is-hidden") && $(this).find(".cd-timeline-img, .cd-timeline-content").removeClass("is-hidden").addClass("bounce-in")
7182        })
7183    }
7184    var n = new Bloodhound({
7185        datumTokenizer: Bloodhound.tokenizers.obj.whitespace("name", "role", "area", "brief", "link"),
7186        queryTokenizer: Bloodhound.tokenizers.whitespace,
7187        prefetch: {
7188            cache: !1,
7189            url: "https://www.finegael.ie/people.json",
7190            filter: function(t) {
7191                return $.map(t, function(t) {
7192                    return {
7193                        name: t.name,
7194                        brief: t.brief,
7195                        area: t.area,
7196                        link: t.link
7197                    }
7198                })
7199            }
7200        }
7201    });
7202    n.initialize(),
7203    $(".typeahead").typeahead({
7204        highlight: !0,
7205        minLength: 2,
7206        hint: !0,
7207        highlight: !0,
7208        selectable: !1
7209    }, {
7210        displayKey: "name",
7211        source: n.ttAdapter(),
7212        limit: 100,
7213        templates: {
7214            empty: ['<div class="search-entry">', "<p>Unable to find any result</p>", "</div>"].join("\n"),
7215            suggestion: function(t) {
7216                var e = "";
7217                return null != t.brief && (e = ' <div class="title">' + t.brief + " </div>"),
7218                '<div class="search-entry"> <a href="' + t.link + '"> <div class="name">' + t.name + '</div> <div class="constituency"> ' + t.area + "</div> " + e + " </a> </div>"
7219            }
7220        }
7221    }),
7222    jQuery(".map-view").length && jQuery("html, body").animate({
7223        scrollTop: jQuery(".map-view").offset().top
7224    }, "fast"),
7225    jQuery("#jump-top").on("click", function() {
7226        console.log("to top"),
7227        jQuery("html, body").animate({
7228            scrollTop: jQuery("#top").offset().top
7229        }, "slow")
7230    }),
7231    jQuery(".join-payment").length && jQuery("html, body").animate({
7232        scrollTop: jQuery(".join-payment").offset().top
7233    }, "slow"),
7234    jQuery(".amount-button label").click(function() {
7235        jQuery(".amount-button label").removeClass("selected"),
7236        jQuery(this).addClass("selected"),
7237        jQuery("#otherAmountInput").val(""),
7238        jQuery("#hiddenAmount").val(jQuery(this).data("value"))
7239    }),
7240    jQuery("#otherAmountInput").focus(function() {
7241        jQuery(".amount-button label").removeClass("selected"),
7242        jQuery(".amount-button input").prop("checked", !1)
7243    }),
7244    jQuery("#otherAmountInput").keyup(function() {
7245        jQuery("#hiddenAmount").val(this.value)
7246    }),
7247    jQuery(window).bind("scroll", function() {
7248        jQuery(window).scrollTop() > 55 && jQuery(window).width() >= 992 ? jQuery(".navbar").addClass("navbar-fixed-top") : jQuery(".navbar").removeClass("navbar-fixed-top")
7249    });
7250    window.onload = function() {
7251        window.addEventListener("scroll", function(t) {
7252            var e = window.pageYOffset || document.documentElement.scrollTop
7253              , n = document.querySelector(".navbar");
7254            e > 560 ? classie.add(n, "smaller") : classie.has(n, "smaller") && classie.remove(n, "smaller")
7255        })
7256    }(),
7257    jQuery("#form-join-finegael").length && jQuery("#form-join-finegael").parsley().on("field:validated", function() {
7258        var t = 0 === jQuery(".parsley-error").length;
7259        jQuery(".bs-callout-warning").toggleClass("hidden", t)
7260    }).on("form:submit", function() {
7261        var t = jQuery("#prefix").val()
7262          , e = jQuery("#fname").val()
7263          , n = jQuery("#surname").val()
7264          , r = jQuery("#dob-dd").val() + "/" + jQuery("#dob-mm").val() + "/" + jQuery("#dob-yyyy").val()
7265          , i = jQuery("#mobile-prefix").val() + jQuery("#mobile-number").val()
7266          , o = jQuery("#telephone-number").val()
7267          , a = jQuery("#email").val()
7268          , s = jQuery("#constituency").val()
7269          , u = jQuery("#address1").val()
7270          , l = jQuery("#address2").val()
7271          , l = jQuery("#address2").val()
7272          , c = jQuery("#address3").val()
7273          , h = jQuery("#address4").val()
7274          , d = jQuery("#eircode").val()
7275          , f = jQuery("#comments").val()
7276          , p = jQuery("#_wpnonce").val()
7277          , g = jQuery("input[name=fee]:checked", "#form-join-finegael").val()
7278          , m = jQuery("input[name=fee]:checked", "#form-join-finegael").attr("id")
7279          , y = jQuery("input[name=latest-information]:checked", "#form-join-finegael").val()
7280          , v = {
7281            title: t,
7282            firstname: e,
7283            lastname: n,
7284            dateOfBirth: r,
7285            email: a,
7286            mobile: i,
7287            homePhone: o,
7288            constituency: s,
7289            address1: u,
7290            address2: l,
7291            address3: c,
7292            address4: h,
7293            eircode: d,
7294            comments: f,
7295            fee: g,
7296            affiliation_status: m,
7297            receiveInfo: y,
7298            _wpnonce: p
7299        };
7300        jQuery.post("/app/themes/finegael/app/form-actions/submit-join-finegael.php", v, function(t) {
7301            if ("success" == t.return)
7302                window.location.href = "/get-involved/join-fine-gael/payment/";
7303            else if ("email_exists" == t.return) {
7304                var e = "<div class='failure'><h2>Sorry</h2><p>This email address is already registered</p></div>";
7305                jQuery(".bs-callout-warning").toggleClass("hidden", !1),
7306                jQuery(".bs-callout-warning").html(e),
7307                jQuery("html, body").animate({
7308                    scrollTop: jQuery(".failure").offset().top
7309                }, "fast")
7310            } else {
7311                var e = "<div class='failure'><h2>Sorry</h2><p>Something went wrong, please try again</p></div>";
7312                jQuery(".bs-callout-warning").toggleClass("hidden", !1),
7313                jQuery(".bs-callout-warning").html(e),
7314                jQuery("html, body").animate({
7315                    scrollTop: jQuery(".failure").offset().top
7316                }, "fast")
7317            }
7318        })
7319    }),
7320    jQuery("#form-donate").length && jQuery("#form-donate").parsley().on("field:validated", function() {
7321        var t = 0 === jQuery(".parsley-error").length;
7322        jQuery(".bs-callout-warning").toggleClass("hidden", t)
7323    }).on("form:submit", function() {
7324        var t = jQuery("#first-name").val()
7325          , e = jQuery("#last-name").val()
7326          , n = jQuery("#country-code :selected").text()
7327          , r = jQuery("#email").val()
7328          , i = jQuery("#address1").val()
7329          , o = jQuery("#_wpnonce").val()
7330          , a = jQuery("#amount").val(),
7331          recaptcha = jQuery("#g-recaptcha-response").val()
7332          , s = {
7333            firstname: t,
7334            lastname: e,
7335            email: r,
7336            country: n,
7337            donationAmount: a,
7338            address: i,
7339            _wpnonce: o,
7340            recaptcha: recaptcha,
7341        };
7342
7343        if (jQuery("#g-recaptcha-response").val() == "") {
7344            jQuery("#recaptcha-errors").toggleClass("hidden", !1);
7345            return false;
7346        }
7347        jQuery.post("/app/themes/finegael/app/form-actions/submit-donation-details.php", s, function(t) {
7348            if (null != t.return || "" != t.return)
7349                if ("success" == t.return)
7350                    window.location.href = "/donate/details/payment/";
7351                else {
7352                    jQuery(".bs-callout-warning").toggleClass("hidden", !1),
7353                    jQuery(".bs-callout-warning").html("<div class='failure'><h2>Sorry</h2><p>Something went wrong, please try again</p></div>")
7354                }
7355        })
7356    }),
7357    jQuery("#donate-select-amount").length && jQuery("#donate-select-amount").parsley().on("form:validate", function(t) {
7358        var e = t.isValid({
7359            group: "block1",
7360            force: !0
7361        }) || t.isValid({
7362            group: "block2",
7363            force: !0
7364        });
7365        if (jQuery(".invalid-form-error-message").html(e ? "" : "<p>Please select an amount before continuing</p>").toggleClass("filled", !e),
7366        !e)
7367            return t.validationResult = !1,
7368            !1
7369    }),
7370    jQuery("#air-your-views").length && jQuery("#air-your-views").parsley().on("field:validated", function() {
7371        var t = 0 === jQuery(".parsley-error").length;
7372        jQuery(".bs-callout-warning").toggleClass("hidden", t)
7373    }).on("form:submit", function() {
7374        jQuery("#send-air-your-views").text("Processing"),
7375        jQuery("#send-air-your-views").addClass("disabled");
7376        var t = jQuery("#fname").val()
7377          , e = jQuery("#surname").val()
7378          , n = jQuery("#mobile-prefix").val() + jQuery("#mobile-number").val()
7379          , r = jQuery("#email").val()
7380          , i = jQuery("#address1").val()
7381          , o = jQuery("#address2").val()
7382          , a = jQuery("#city-town").val()
7383          , s = jQuery("#_wpnonce").val()
7384          , u = jQuery("#comments").val()
7385          , l = {
7386            firstname: t,
7387            lastname: e,
7388            email: r,
7389            mobile: n,
7390            address1: i,
7391            address2: o,
7392            cityTown: a,
7393            comments: u,
7394            _wpnonce: s
7395        };
7396        jQuery.post("/app/themes/finegael/app/form-actions/submit-air-your-views.php", l, function(t) {
7397            if ("success" == t.return) {
7398                var e = "<div class='thank-you has-success'><h2>Thank you</h2><p>Thank you for taking the time to share your views with Fine Gael. Join the conversation on the Fine Gael <a href='https://www.facebook.com/FineGael/'>Facebook</a> and <a href='https://twitter.com/finegael'>Twitter</a> accounts.</p></div>";
7399                jQuery("#air-your-views").html(e)
7400            } else {
7401                var e = "<div class='failure'><h2>Sorry</h2><p>Something went wrong, please try again</p></div>";
7402                jQuery(".bs-callout-warning").toggleClass("hidden", !1),
7403                jQuery(".bs-callout-warning").html(e)
7404            }
7405        })
7406    }),
7407    jQuery("#form-in-your-area").length && jQuery("#form-in-your-area").parsley().on("field:validated", function() {
7408        var t = 0 === jQuery(".parsley-error").length;
7409        jQuery(".bs-callout-warning").toggleClass("hidden", t)
7410    }).on("form:submit", function() {
7411        "0" == jQuery("#emailCookieSet").val() && (setInYourAreaCookies(),
7412        jQuery.ajax({
7413            url: "https://finegael.newsweaver.com/WeeklyMessageFromAnTaoiseachEndaKennynewsletter/subscribe/1gmw52l9ewa/submit.html",
7414            type: "post",
7415            data: jQuery("#form-in-your-area").serialize(),
7416            success: function() {},
7417            error: function() {
7418                var t = jQuery("#county-select option:selected").text();
7419                window.location.replace("/" + t)
7420            }
7421        }));
7422        var t = {
7423            "county-URL": jQuery("#county-select option:selected").val(),
7424            county: jQuery("#county-select option:selected").text(),
7425            email: jQuery("#email").val(),
7426            _wpnonce: jQuery("#_wpnonce").val()
7427        };
7428        jQuery.post("/app/themes/finegael/app/form-actions/submit-in-your-area.php", t, function(t) {
7429            (t.return = "redirect") && (window.location.href = t.area)
7430        })
7431    }),
7432    jQuery("#stay-up-to-date").length && jQuery("#stay-up-to-date").parsley().on("field:validated", function() {
7433        var t = 0 === jQuery(".parsley-error").length;
7434        jQuery(".bs-callout-warning").toggleClass("hidden", t)
7435    }).on("form:submit", function() {
7436        var t = {
7437            name: jQuery("#fname").val(),
7438            email: jQuery("#email").val(),
7439            _wpnonce: jQuery("#_wpnonce").val()
7440        };
7441        jQuery.post("/app/themes/finegael/app/form-actions/submit-stay-up-to-date.php", t, function(t) {
7442            if ("success" == t.return) {
7443                jQuery("#stay-up-to-date").html("<div class='thank-you has-success'><h2>Thank you</h2><p>Nearly there! An email has been sent to your inbox.  Please click on the link to activate your email subscription to Fine Gael's exclusive updates.</p></div>")
7444            }
7445        })
7446    }),
7447    jQuery("#stay-up-to-date-master").length && jQuery("#stay-up-to-date-master").parsley().on("field:validated", function() {
7448        var t = 0 === jQuery(".parsley-error").length;
7449        jQuery(".bs-callout-warning").toggleClass("hidden", t)
7450    }).on("form:submit", function() {
7451        var t = {
7452            name: jQuery("#fname-master").val(),
7453            email: jQuery("#email-master").val(),
7454            _wpnonce: jQuery("#_wpnonce").val(),
7455            url: jQuery("#url").val()
7456        };
7457        jQuery.post("/app/themes/finegael/app/form-actions/submit-stay-up-to-date.php", t, function(t) {
7458            if ("success" == t.return) {
7459                var e = new Date;
7460                e.setTime(e.getTime() + 864e5);
7461                var n = "expires=" + e.toUTCString();
7462                document.cookie = "back_button=" + t.url + "; expires=" + n + "; path=/",
7463                window.location.href = "/get-involved/stay-up-to-date/?result=subscribed"
7464            }
7465        })
7466    }),
7467    jQuery("#members-hub-visitors").length && jQuery("#members-hub-visitors").parsley().on("field:validated", function() {
7468        var t = 0 === jQuery(".parsley-error").length;
7469        jQuery(".bs-callout-warning").toggleClass("hidden", t)
7470    }).on("form:submit", function() {
7471        var t = {
7472            email: jQuery("#hub-email").val(),
7473            _wpnonce: jQuery("#_wpnonce").val()
7474        };
7475        jQuery.post("/app/themes/finegael/app/form-actions/submit-members-hub.php", t, function(t) {
7476            if ("success" == t.return) {
7477                jQuery("#members-hub-visitors").html("<div class='thank-you has-success'><h2>Thank you</h2><p></p></div>")
7478            }
7479        })
7480    })
7481}),
7482function(t) {
7483    t.fn.countTo = function(e) {
7484        return e = e || {},
7485        t(this).each(function() {
7486            var n = t.extend({}, t.fn.countTo.defaults, {
7487                from: t(this).data("from"),
7488                to: t(this).data("to"),
7489                speed: t(this).data("speed"),
7490                refreshInterval: t(this).data("refresh-interval"),
7491                decimals: t(this).data("decimals")
7492            }, e)
7493              , r = Math.ceil(n.speed / n.refreshInterval)
7494              , i = (n.to - n.from) / r
7495              , o = this
7496              , a = t(this)
7497              , s = 0
7498              , u = n.from
7499              , l = a.data("countTo") || {};
7500            a.data("countTo", l),
7501            l.interval && clearInterval(l.interval),
7502            l.interval = setInterval(c, n.refreshInterval),
7503            h(u);
7504            function c() {
7505                u += i,
7506                s++,
7507                h(u),
7508                "function" == typeof n.onUpdate && n.onUpdate.call(o, u),
7509                s >= r && (a.removeData("countTo"),
7510                clearInterval(l.interval),
7511                u = n.to,
7512                "function" == typeof n.onComplete && n.onComplete.call(o, u))
7513            }
7514            function h(t) {
7515                var e = n.formatter.call(o, t, n);
7516                a.html(e)
7517            }
7518        })
7519    }
7520    ,
7521    t.fn.countTo.defaults = {
7522        from: 0,
7523        to: 0,
7524        speed: 1e3,
7525        refreshInterval: 100,
7526        decimals: 0,
7527        formatter: e,
7528        onUpdate: null,
7529        onComplete: null
7530    };
7531    function e(t, e) {
7532        return t.toFixed(e.decimals)
7533    }
7534}(jQuery),
7535jQuery(function(t) {
7536    t(".count-number").data("countToOptions", {
7537        formatter: function(t, e) {
7538            return t.toFixed(e.decimals).replace(/\B(?=(?:\d{3})+(?!\d))/g, ",")
7539        }
7540    }),
7541    t(".timer").each(e);
7542    function e(e) {
7543        var n = t(this);
7544        e = t.extend({}, e || {}, n.data("countToOptions") || {}),
7545        n.countTo(e)
7546    }
7547}),
7548jQuery("#form-presidential-dinner").length) {
7549    jQuery("#form-presidential-dinner").parsley().on("form:error", function() {
7550        var t = 0 === jQuery(".parsley-error").length;
7551        jQuery(".bs-callout-warning").toggleClass("hidden", t),
7552        jQuery(".bs-callout-warning").attr("class", "bs-callout-warning alert alert-danger")
7553    }).on("form:submit", function() {
7554        var t = jQuery("#fname").val()
7555          , e = jQuery("#lname").val()
7556          , n = jQuery("#mobile-number").val()
7557          , r = jQuery("#email").val()
7558          , i = jQuery("#address1").val()
7559          , o = jQuery("#address2").val()
7560          , a = jQuery("#eircode").val()
7561          , s = jQuery("#total-amount").val()
7562          , u = jQuery("#reserve-table").val()
7563          , l = jQuery("#individual").val()
7564          , c = jQuery("input[name=optin]:checked", "#form-presidential-dinner").val() ? 1 : 0
7565          , h = jQuery("#_wpnonce").val()
7566          , d = {
7567            fname: t,
7568            lname: e,
7569            email: r,
7570            mobile: n,
7571            address1: i,
7572            address2: o,
7573            eircode: a,
7574            _wpnonce: h,
7575            reserveTableOf10: parseInt(u),
7576            individualTickets: parseInt(l),
7577            totalAmount: parseInt(s),
7578            optin: c
7579        };
7580        console.log(d),
7581        jQuery.post("/app/themes/finegael/app/form-actions/submit-presidential-dinner.php", d, function(t) {
7582            var e = "";
7583            "success" == t.return ? window.location.href = "/lunch/payment/" : (e = "<div class='failure'><h2>Sorry</h2><p>Something went wrong, please try again</p></div>",
7584            jQuery(".bs-callout-warning").toggleClass("hidden", !1),
7585            jQuery(".bs-callout-warning").html(e))
7586        })
7587    });
7588    function calculateTotal() {
7589        var t = jQuery("#reserve-table").val()
7590          , e = jQuery("#individual").val()
7591          , n = 0;
7592        n = parseInt(t) + parseInt(e) + parseInt(0);
7593        var r = document.getElementById("totalPrice");
7594        r.style.display = "block",
7595        r.innerHTML = "Total booking &euro; " + n,
7596        jQuery("#total-amount").val(n),
7597        jQuery("form#form-presidential-dinner").parsley().validate({
7598            group: "total-booking"
7599        })
7600    }
7601    jQuery("input[type=radio][name=reserve-10]").change(function() {
7602        calculateTotal()
7603    }),
7604    jQuery("input[type=radio][name=reserve-12]").change(function() {
7605        calculateTotal()
7606    }),
7607    jQuery(".btn-reset").click(function() {
7608        jQuery("#form-presidential-dinner")[0].reset(),
7609        document.getElementById("totalPrice").style.display = "none"
7610    })
7611}
7612jQuery("#form-flex-payment").length && jQuery("#form-flex-payment").parsley().on("field:validated", function() {
7613    var t = 0 === jQuery(".parsley-error").length;
7614    jQuery(".bs-callout-warning").toggleClass("hidden", t)
7615}).on("form:submit", function() {
7616    var t = jQuery("#first-name").val()
7617      , e = jQuery("#last-name").val()
7618      , n = jQuery("#country-code :selected").text()
7619      , r = jQuery("#email").val()
7620      , i = jQuery("#address").val()
7621      , o = jQuery("#product :selected").text()
7622      , a = jQuery("#_wpnonce").val()
7623      , s = jQuery("#amount").val()
7624      ,
7625    _county = jQuery("#county").val()
7626      , _eircode = jQuery("#eircode").val()
7627
7628      , u = {
7629        county: _county,
7630        eircode: _eircode,
7631        firstname: t,
7632        lastname: e,
7633        email: r,
7634        country: n,
7635        amount: s,
7636        product: o,
7637        product_other: jQuery("#otherta").val(),
7638        address: i,
7639        _wpnonce: a
7640    };
7641    console.log(u, 'Data');
7642    jQuery.post("/app/themes/finegael/app/form-actions/submit-flexible-payment-details.php", u, function(t) {
7643        null == t.return && "" == t.return || ("success" == t.return ? window.location.href = "/payment/details/payment/" : (jQuery(".bs-callout-warning").toggleClass("hidden", !1),
7644        jQuery(".bs-callout-warning").html("<div class='failure'><h2>Sorry</h2><p>Something went wrong, please try again</p></div>")))
7645    })
7646}),
7647jQuery("#form-superdraw").length && (jQuery("#form-superdraw").parsley().on("field:validated", function() {
7648    0 !== jQuery(".parsley-error").length && (jQuery(".bs-callout-warning").attr("class", "bs-callout-warning alert alert-warning"),
7649    jQuery(".bs-callout-warning").html("<p>There are errors on the form. Please fix them before continuing </p>"))
7650}
7650).on("form:submit", function() {
7651    jQuery(".bs-callout-warning").toggleClass("alert alert-warning", !1),
7652    jQuery(".bs-callout-warning").html("");
7653    var t = jQuery("#fname").val()
7654      , e = jQuery("#lname").val()
7655      , n = jQuery("#email").val()
7656      , r = jQuery("#address1").val()
7657      , i = jQuery("#address2").val()
7658      , o = jQuery("#eircode").val()
7659      , a = $("#form-superdraw input[name=credit-card]:checked").val()
7660      , s = jQuery("#_wpnonce").val()
7661      , u = !!jQuery("input[name=optin]:checked", "#form-superdraw").val()
7662      , l = !!jQuery("input[name=contact-SMS]:checked", "#form-superdraw").val()
7663      , c = jQuery("#mobile-number").val()
7664      , h = jQuery("#constituency").val()
7665      , d = jQuery("#number-of-tickets").val()
7666      , f = jQuery("#seller").val()
7667      , p = {
7668        creditCardType: a,
7669        constituency: h,
7670        numberOfTickets: d,
7671        fname: t,
7672        lname: e,
7673        address1: r,
7674        address2: i,
7675        eircode: o,
7676        email: n,
7677        mobile: c,
7678        contactViaSMS: l,
7679        optin: u,
7680        seller: f,
7681        _wpnonce: s
7682    };
7683    console.log(p),
7684    jQuery.post("/app/themes/finegael/app/form-actions/submit-superdraw.php", p, function(t) {
7685        if (null != t.return || "" != t.return)
7686            if ("success" == t.return)
7687                window.location.href = "/sd/payment/";
7688            else {
7689                jQuery(".bs-callout-warning").toggleClass("hidden", !1),
7690                jQuery(".bs-callout-warning").html("<div class='failure'><h2>Sorry</h2><p>Something went wrong, please try again</p></div>")
7691            }
7692    })
7693}),
7694jQuery(".btn-reset").click(function() {
7695    jQuery("#form-superdraw")[0].reset()
7696}),
7697jQuery("input[type=radio][name=credit-card]").change(function() {
7698    "personal" == this.value ? (jQuery(".personal-tickets-dropdown").show(),
7699    jQuery(".corporate-tickets-dropdown").hide()) : (jQuery(".personal-tickets-dropdown").hide(),
7700    jQuery(".corporate-tickets-dropdown").show())
7701})),
7702jQuery(document).ready(function() {
7703    function t() {
7704        for (var t, e = [], n = window.location.href.slice(window.location.href.indexOf("?") + 1).split("&"), r = 0; r < n.length; r++)
7705            t = n[r].split("="),
7706            e.push(t[0]),
7707            e[t[0]] = t[1];
7708        return e
7709    }
7710    this.memberSearchSingleClicked = function(t) {
7711        var e = {
7712            memberID: t
7713        };
7714        jQuery.post("/app/themes/finegael/app/form-actions/members-hub/submit-events-admin-single-member.php", e, function(t) {
7715            var e = t[0][0];
7716            if (void 0 !== t[1] && void 0 !== t[1][0] && "undefined" !== t[1][0].Attended) {
7717                var n = "<p>This member is already registered.</p>";
7718                0 != t[1][0].Attended && (n = n.concat("<br><p>Scanned " + t[1][0].Attended + "</p>")),
7719                jQuery(".bs-callout-warning").attr("class", "bs-callout-warning alert alert-danger"),
7720                jQuery(".bs-callout-warning").html(n)
7721            }
7722            var r = jQuery("#form-events-admin-member-registration")
7723              , i = "";
7724            switch (parseInt(e.TitleID)) {
7725            case 1:
7726                i = "Mr.";
7727                break;
7728            case 2:
7729                i = "Ms.";
7730                break;
7731            case 3:
7732                i = "Mrs.";
7733                break;
7734            case 4:
7735                i = "Cllr.";
7736                break;
7737            case 5:
7738                i = "Dr.";
7739                break;
7740            case 6:
7741                i = "Sen.";
7742                break;
7743            case 7:
7744                i = "Rev.";
7745                break;
7746            case 8:
7747                i = "Fr.";
7748                break;
7749            case 9:
7750                i = "Prof.";
7751                break;
7752            case 10:
7753                i = "Sr.";
7754                break;
7755            case 11:
7756                i = "Lt.";
7757                break;
7758            case 12:
7759                i = "Capt.";
7760                break;
7761            case 13:
7762                i = "Lt. Col.";
7763                break;
7764            case 15:
7765                i = "An tUas";
7766                break;
7767            case 16:
7768                i = "Col.";
7769                break;
7770            case 17:
7771                i = "The";
7772                break;
7773            case 18:
7774                i = "Ald.";
7775                break;
7776            case 19:
7777                i = "Minister";
7778                break;
7779            case 20:
7780                i = "His Excellency";
7781                break;
7782            case 21:
7783                i = "Her Excellency";
7784                break;
7785            case 22:
7786                i = "Miss";
7787                break;
7788            case 23:
7789                i = "Mx."
7790            }
7791            jQuery("#form-events-admin-member-registration #firstname").val(e.Forename),
7792            jQuery("#form-events-admin-member-registration #surname").val(e.Surname),
7793            jQuery("#form-events-admin-member-registration #email").val(e.HomeEmail),
7794            jQuery("#form-events-admin-member-registration #phone").val(e.HomeMobile),
7795            jQuery("#form-events-admin-member-registration #address-1").val(e.Address1),
7796            jQuery("#form-events-admin-member-registration #address-2").val(e.Address2),
7797            jQuery("#form-events-admin-member-registration #address-3").val(e.Address3),
7798            jQuery("#form-events-admin-member-registration #address-4").val(e.Address4),
7799            jQuery("#form-events-admin-member-registration #address-5").val(e.Address
77995),
7800            jQuery("#form-events-admin-member-registration #mid").val(e.MemberID),
7801            jQuery("#form-events-admin-member-registration #title").val(i),
7802            jQuery("#form-events-admin-member-registration #constituency").val(e.ConstituencyPrefix),
7803            r.removeClass("hidden"),
7804            jQuery("html, body").animate({
7805                scrollTop: r.offset().top - 70
7806            }, 2e3)
7807        })
7808    }
7809    ,
7810    this.formatDate = function(t) {
7811        var e = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]
7812          , n = new Array(7);
7813        n[0] = "Sunday",
7814        n[1] = "Monday",
7815        n[2] = "Tuesday",
7816        n[3] = "Wednesday",
7817        n[4] = "Thursday",
7818        n[5] = "Friday",
7819        n[6] = "Saturday";
7820        var r = t.getDate()
7821          , i = t.getMonth()
7822          , o = t.getFullYear();
7823        return n[t.getDay()] + ", " + r + " " + e[i] + " " + o
7824    }
7825    ,
7826    this.print = function(t) {
7827        var e = jQuery("#container-barcode").html()
7828          , n = window.open("", "page content", "height=600,width=800")
7829          , r = t.Surname.replace("#", "'")
7830          , i = t.Forename.replace("#", "'");
7831        n.document.write('<!doctype html><html><head> <meta charset="utf-8">\n<title>Page Content</title><link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-/Y6pD6FV/Vv2HJnA6t+vslU6fwYXjCFtcEpHbNJ0lyAFsXTsjBbfaDjzALeQsN6M" crossorigin="anonymous"></head>'),
7832        n.document.write("<style>body{font-size: 12px;}header {margin-top: 2.5vh;height: 17.5vh;}article {height: 55vh;}footer {height: 25vh;;}@media print {.container {max-width: 80%;}}</style>"),
7833        n.document.write('<body><header><div class="container h-100"><div class="row h-100">'),
7834        n.document.write('<div class="col-6 h-100"><address><b>' + t.Title + " " + i + " " + r + "</b><br>" + t.Address1 + "<br>" + t.Address2 + "<br>" + t.Address3 + "<br>" + t.Address4 + "<br>" + t.Address5 + '</address></div><div class="col-6 h-100"></div></div></div></header>'),
7835        n.document.write('<article><div class="container h-100"><div class="row h-100"><div class="col h-100"><p>Dear ' + i + ",</p><p>Thank you for Registering for the National Spring Conference 2019 which takes place in Clayton White’s Hotel, Abbey Street, Wexford on Friday 22nd and Saturday 23rd March 2019. The Conference will discuss the latest version of Building a Republic of Opportunity and, as agreed at the Árd Fheis, constitutional amendments providing for a new means of dealing with disciplinary issues.</p><p>This will be a significant event for the Party, coming as it does, eight weeks before the Local and European Elections, and, of course, it is likely that Brexit will still be highly topical and relevant. Our Conference agenda will also reflect these priorities.</p><p>The Conference will begin with the Opening Ceremony at 7.30pm on Friday night and will run all day on Saturday, including the live TV session on Saturday, 11am to 1pm. The final programme is attached and will also be available in the Members’ Hub on our website - finegael.ie.</p><p>We will have a crèche facility a short drive away from the Hotel; if you wish to book a place, please contact Eileen Bradley (01 619 8444 / <a href='mailto:[email protected]'>[email protected]</a>).</p><p>Your Registration Pass is included at the bottom of this page; please take good care of it. Before you arrive at the Hotel you should detach your Pass, by bending it carefully and peeling it off; then, you simply insert it in the plastic pouch enclosed. You will need to have your Registration Pass attached to the lanyard to gain access to the Conference.  Please wear your lanyard around your neck, to speed things up. You must also bring your current Membership Card and a form of photo ID. The Registration Pass enclosed will guarantee ease of access to the Conference for you and you alone.  It is not transferrable. </p> <p>Any companions will also need a Registration Pass. If they have not registered yet, they will have an opportunity to do so in the Registration Unit – which is located in the Hotel reception area from 3.30pm-8.00pm on Friday and 9.00am-8.00pm on Saturday. Further information is available from National Office at 01-6198444. If anyone travelling with you is not a Member of the Party, they will have to be accompanied to the Registration Unit by a current Member, who can vouch for them. They will also need to bring photo I.D. Please be advised that only those who have registered will gain access to the Conference. </p> <p>I hope you enjoy the weekend and I look forward to seeing you at the event. </p></div></div></div></article>"),
7836        n.document.write('<footer><div class="container h-100"><div class="row h-100"><div class="col-6 h-100"><p>Yours sincerely,</p><img id="signature" style="width: 50%;" src="https://www.finegael.ie/app/uploads/2017/11/TC-signature.jpg"><p><strong>Tom Curran</strong><br><strong>General Secretary</strong></p></div>'),
7837        n.document.write('<div class="col-6 h-100"><div class="p-4"><h2><b>' + t.Category + "</b></h2><p><strong>" + t.Title + " " + i + " " + r + "</strong><br><strong>" + t.Constituency + "</strong></p>" + e + "</div></div>"),
7838        n.document.write("</div></div></footer></body></html>"),
7839        n.document.close(),
7840        n.focus(),
7841        setTimeout(function() {
7842            n.print(),
7843            n.close()
7844        }, 250)
7845    }
7846    ,
7847    this.printMemberPass = function(t) {
7848        console.log(t.Barcode),
7849        JsBarcode("#barcode", t.Barcode, {
7850            format: "CODE39",
7851            displayValue: !1,
7852            height: 30,
7853            width: 1
7854        }),
7855        this.print(t)
7856    }
7857    ,
7858    jQuery(".payment-type label").click(function() {
7859        jQuery(".payment-type label").removeClass("selected"),
7860        jQuery(this).addClass("selected"),
7861        jQuery("#hidden-amount").val(jQuery(this).data("value")),
7862        jQuery("#hidden-type").val(jQuery(this).next().attr("id"))
7863    }),
7864    jQuery("#form-membershub-login").length && jQuery("#form-membershub-login").parsley().on("field:validated", function() {
7865        0 === jQuery(".parsley-error").length ? jQuery(".bs-callout-warning").attr("class", "bs-callout-warning hidden") : (jQuery(".bs-callout-warning").attr("class", "bs-callout-warning alert alert-warning"),
7866        jQuery(".bs-callout-warning").html("<p>There are errors on the form. Please fix them before continuing </p>"))
7867    }).on("form:submit", function() {
7868        var e = {
7869            email: jQuery("#email").val(),
7870            password: jQuery("#password").val(),
7871            _wpnonce: jQuery("#_wpnonce").val()
7872        }
7873          , n = t().redirect_to;
7874        jQuery.post("/app/themes/finegael/app/form-actions/members-hub/submit-login.php", e, function(t) {
7875            if (console.log("submit login", t.return),
7876            "success" == t.return)
7877                null == n || "" == n ? (console.log(n),
7878                window.location.href = "/members-hub-home/") : window.location.href = n;
7879            else if ("notConfirmed" == t.return) {
7880                var e = "<p>Please confirm your email before trying to login</p>";
7881                jQuery(".bs-callout-warning").attr("class", "bs-callout-warning alert alert-danger"),
7882                jQuery(".bs-callout-warning").html(e)
7883            } else if ("needRenewal" == t.return) {
7884                var e = "<p><b>Your membership has expired. <a href='/members-hub/membership/renewal/'>Click here to renew!</a></b></p>";
7885                jQuery(".bs-callout-warning").attr("class", "bs-callout-warning alert alert-danger"),
7886                jQuery(".bs-callout-warning").html(e)
7887            } else {
7888                var e = "<p>The password you entered for the email address " + t.email + " is incorrect. <a href='/members-hub/members-hub-forgot-password/'>Lost your password?</a></p>";
7889                jQuery(".bs-callout-warning").attr("class", "bs-callout-warning alert alert-danger"),
7890                jQuery(".bs-callout-warning").html(e)
7891            }
7892        })
7893    }),
7894    jQuery("#form-membershub-change-password").length && jQuery("#form-membershub-change-password").parsley().on("field:validated", function() {
7895        0 === jQuery(".parsley-error").length ? jQuery(".bs-callout-warning").attr("class", "bs-callout-warning hidden") : (jQuery(".bs-callout-warning").attr("class", "bs-callout-warning alert alert-warning"),
7896        jQuery(".bs-callout-warning").html("<p>There are errors on the form. Please fix them before continuing </p>"))
7897    }).on("form:submit", function() {
7898        var t = {
7899            password: jQuery("#password").val(),
7900            mid: jQuery("#mid").val(),
7901            _wpnonce: jQuery("#_wpnonce").val()
7902        };
7903        jQuery.post("/app/themes/finegael/app/form-actions/members-hub/submit-set-password.php", t, function(t) {
7904            if ("success" == t.return)
7905                window.location.href = "/members-hub-home/";
7906            else {
7907                jQuery(".bs-callout-warning").attr("class", "bs-callout-warning alert alert-danger"),
7908                jQuery(".bs-callout-warning").html("<h2>Oh no!</h2><p>Something went wrong, please try again</p>")
7909            }
7910        })
7911    }),
7912    jQuery("#form-membershub-forgot-password").length && jQuery("#form-membershub-forgot-password").parsley().on("field:validated", function() {
7913        0 === jQuery(".parsley-error").length ? jQuery(".bs-callout-warning").attr("class", "bs-callout-warning hidden") : (jQuery(".bs-callout-warning").attr("class", "bs-callout-warning alert alert-warning"),
7914        jQuery(".bs-callout-warning").html("<p>There are errors on the form. Please fix them before continuing </p>"))
7915    }).on("form:submit", function() {
7916        var t = {
7917            email: jQuery("#email").val(),
7918            mid: jQuery("#mid").val(),
7919            _wpnonce: jQuery("#_wpnonce").val()
7920        };
7921        console.log(t),
7922        jQuery.post("/app/themes/finegael/app/form-actions/members-hub/submit-forgot-password.php", t, function(t) {
7923            if ("success" == t.return) {
7924                var e = "<p>An email has been sent you to reset your password.</p>";
7925                jQuery(".bs-callout-warning").attr("class", "bs-callout-warning alert alert-success"),
7926                jQuery(".bs-callout-warning").html(e)
7927            } else {
7928                var e = "<h2>Oh no!</h2><p>Please try again</p>";
7929                jQuery(".bs-callout-warning").attr("class", "bs-callout-warning alert alert-danger"),
7930                jQuery(".bs-callout-warning").html(e)
7931            }
7932        })
7933    }),
7934    jQuery("#form-membershub-set-password").length && jQuery("#form-membershub-set-password").parsley().on("field:validated", function() {
7935        0 === jQuery(".parsley-error").length ? jQuery(".bs-callout-warning").attr("class", "bs-callout-warning hidden") : (jQuery(".bs-callout-warning").attr("class", "bs-callout-warning alert alert-warning"),
7936        jQuery(".bs-callout-warning").html("<p>There are errors on the form. Please fix them before continuing </p>"))
7937    }).on("form:submit", function() {
7938        var t = jQuery("#password").val()
7939          , e = jQuery("#mid").val()
7940          , n = {
7941            password: t,
7942            mid: e,
7943            _wpnonce: jQuery("#_wpnonce").val()
7944        };
7945        jQuery.post("/app/themes/finegael/app/form-actions/members-hub/submit-set-password.php", n, function(t) {
7946            if (console.log(t),
7947            "success" == t.return) {
7948                var e = "<p>Password is set correctly. You can login <a class='alert-link' href='/members-hub/login/'>here</a> </p>";
7949                jQuery(".bs-callout-warning").attr("class", "bs-callout-warning alert alert-success"),
7950                jQuery(".bs-callout-warning").html(e)
7951            } else {
7952                var e = "<h2>Oh no!</h2><p>Something went wrong, please try again</p>";
7953                jQuery(".bs-callout-warning").attr("class", "bs-callout-warning alert alert-danger"),
7954                jQuery(".bs-callout-warning").html(e)
7955            }
7956        })
7957    }),
7958    jQuery("#form-membershub-registration-1").length && jQuery("#form-membershub-registration-1").parsley().on("field:validated", function() {
7959        0 === jQuery(".parsley-error").length ? jQuery(".bs-callout-warning").attr("class", "bs-callout-warning hidden") : (jQuery(".bs-callout-warning").attr("class", "bs-callout-warning alert alert-warning"),
7960        jQuery(".bs-callout-warning").html("<p>There are errors on the form. Please fix them before continuing </p>"))
7961    }).on("form:submit", function() {
7962        var t = {
7963            surname: jQuery("#surname").val(),
7964            card_number_prefix: jQuery("#card-number-prefix").val(),
7965            card_number_year: jQuery("#card-number-year").val(),
7966            card_number_member_no: jQuery("#card-number-member-no").val(),
7967            _wpnonce: jQuery("#_wpnonce").val()
7968        };
7969        jQuery.post("/app/themes/finegael/app/form-actions/members-hub/submit-registration-step1.php", t, function(t) {
7970            if ("success" == t.return)
7971                window.location.href = "/members-hub/members-hub-registration-step-2/";
7972            else {
7973                jQuery(".bs-callout-warning").attr("class", "bs-callout-warning alert alert-danger"),
7974                jQuery(".bs-callout-warning").html("<h4>Something's not right!</h4><p>Please ensure that you enter your details exactly as they're displayed on your membership card. For example, any apostrophes, space
7974s or capital letters must be entered exactly as they're displayed.</p>")
7975            }
7976        })
7977    }),
7978    jQuery("#form-membershub-registration-2").length && jQuery("#form-membershub-registration-2").parsley().on("field:validated", function() {
7979        0 === jQuery(".parsley-error").length ? jQuery(".bs-callout-warning").attr("class", "bs-callout-warning hidden") : (jQuery(".bs-callout-warning").attr("class", "bs-callout-warning alert alert-warning"),
7980        jQuery(".bs-callout-warning").html("<p>There are errors on the form. Please fix them before continuing </p>"))
7981    }).on("form:submit", function() {
7982        var t = {
7983            surname: jQuery("#surname").val(),
7984            email: jQuery("#email").val(),
7985            phone: jQuery("#phone").val(),
7986            password: jQuery("#password").val(),
7987            memberId: jQuery("#member-id").val(),
7988            _wpnonce: jQuery("#_wpnonce").val()
7989        };
7990        jQuery.post("/app/themes/finegael/app/form-actions/members-hub/submit-registration-step2.php", t, function(t) {
7991            if (console.log(t.return),
7992            "success" == t.return) {
7993                jQuery(".bs-callout-warning").attr("class", "bs-callout-warning alert alert-info"),
7994                jQuery(".bs-callout-warning").html("<h3>Thank you for updating your details!</h3><p>We have sent a confirmation email to the address you provided us with. Please follow the instructions contained in the email to complete the registration process.</p><p>If you need to amend the email address you provided us with, please do so below:</p>")
7995            }
7996        })
7997    }),
7998    jQuery("#form-membership-update-details").length && jQuery("#form-membership-update-details").parsley().on("field:validated", function() {
7999        0 === jQuery(".parsley-error").length ? jQuery(".bs-callout-warning").attr("class", "bs-callout-warning hidden") : (jQuery(".bs-callout-warning").attr("class", "bs-callout-warning alert alert-warning"),
8000        jQuery(".bs-callout-warning").html("<p>There are errors on the form. Please fix them before continuing </p>"))
8001    }).on("form:submit", function() {
8002        var t = {
8003            firstname: jQuery("#firstname").val(),
8004            surname: jQuery("#surname").val(),
8005            email: jQuery("#email").val(),
8006            phone: jQuery("#phone").val(),
8007            address1: jQuery("#address-1").val(),
8008            address2: jQuery("#address-2").val(),
8009            address3: jQuery("#address-3").val(),
8010            mid: jQuery("#mid").val(),
8011            _wpnonce: jQuery("#_wpnonce").val()
8012        };
8013        jQuery.post("/app/themes/finegael/app/form-actions/members-hub/submit-update-details.php", t, function(t) {
8014            if ("success" == t.return) {
8015                jQuery(".bs-callout-warning").attr("class", "bs-callout-warning alert alert-info"),
8016                jQuery(".bs-callout-warning").html("<p>Your new details have been submitted for approval. We will let you know 
8016when these changes have been accepted.</p><p>Please note that you will still see your previous details here until the changes have been approved.</p>")
8017            }
8018        })
8019    }),
8020    jQuery("#form-superdraw-details").length && jQuery("#form-superdraw-details").parsley().on("field:validated", function() {
8021        0 !== jQuery(".parsley-error").length && (jQuery(".bs-callout-warning").attr("class", "bs-callout-warning alert alert-warning"),
8022        jQuery(".bs-callout-warning").html("<p>There are errors on the form. Please fix them before continuing </p>"))
8023    }).on("form:submit", function() {
8024        jQuery(".bs-callout-warning").toggleClass("alert alert-warning", !1),
8025        jQuery(".bs-callout-warning").html("");
8026        var t = jQuery("#first-name").val()
8027          , e = jQuery("#last-name").val()
8028          , n = jQuery("#phone").val()
8029          , r = jQuery("#email").val()
8030          , i = jQuery("#address1").val()
8031          , o = jQuery("#eircode").val()
8032          , a = jQuery("#_wpnonce").val()
8033          , s = jQuery("#amount").val()
8034          , u = {
8035            firstname: t,
8036            lastname: e,
8037            email: r,
8038            phone: n,
8039            amount: s,
8040            address: i,
8041            eircode: o,
8042            _wpnonce: a
8043        };
8044        jQuery.post("/app/themes/finegael/app/form-actions/submit-superdraw-details.php", u, function(t) {
8045            if (null != t.return || "" != t.return)
8046                if ("success" == t.return)
8047                    ;
8048                else {
8049                    jQuery(".bs-callout-warning").toggleClass("hidden", !1),
8050                    jQuery(".bs-callout-warning").html("<div class='failure'><h2>Sorry</h2><p>Something went wrong, please try again</p></div>")
8051                }
8052        })
8053    }),
8054    jQuery("#form-membership-renewal").length && jQuery("#form-membership-renewal").parsley().on("field:validated", function() {
8055        var t = 0 === jQuery(".parsley-error").length;
8056        jQuery(".bs-callout-warning").toggleClass("hidden", t)
8057    }).on("form:submit", function() {
8058        var t = jQuery("#prefix").val()
8059          , e = jQuery("#member-id").val()
8060          , n = jQuery("#fname").val()
8061          , r = jQuery("#surname").val()
8062          , i = jQuery("#mobile-prefix").val() + jQuery("#mobile-number").val()
8063          , o = jQuery("#email").val()
8064          , a = jQuery("#constituency").val()
8065          , s = jQuery("#address1").val()
8066          , u = jQuery("#address2").val()
8067          , u = jQuery("#address2").val()
8068          , l = jQuery("#address3").val()
8069          , c = jQuery("#address4").val()
8070          , h = jQuery("#eircode").val()
8071          , d = jQuery("#comments").val()
8072          , f = jQuery("#_wpnonce").val()
8073          , p = jQuery("input[name=fee]:checked", "#form-membership-renewal").val()
8074          , g = jQuery("input[name=fee]:checked", "#form-membership-renewal").attr("id")
8075          , m = jQuery("input[name=latest-information]:checked", "#form-membership-renewal").val()
8076          , y = {
8077            memberID: e,
8078            title: t,
8079            firstname: n,
8080            lastname: r,
8081            email: o,
8082            mobile: i,
8083            constituency: a,
8084            address1: s,
8085            address2: u,
8086            address3: l,
8087            address4: c,
8088            eircode: h,
8089            comments: d,
8090            fee: p,
8091            affiliation_status: g,
8092            receiveInfo: m,
8093            _wpnonce: f
8094        };
8095        jQuery.post("/app/themes/finegael/app/form-actions/members-hub/submit-membership-renewal.php", y, function(t) {
8096            if ("success" == t.return)
8097                window.location.href = "/members-hub/membership/renewal/payment/";
8098            else if ("email_exists" == t.return) {
8099                var e = "<div class='failure'><h2>Sorry</h2><p>This email address is already registered</p></div>";
8100                jQuery(".bs-callout-warning").toggleClass("hidden", !1),
8101                jQuery(".bs-callout-warning").html(e),
8102                jQuery("html, body").animate({
8103                    scrollTop: jQuery(".failure").offset().top
8104                }, "fast")
8105            } else {
8106                var e = "<div class='failure'><h2>Sorry</h2><p>Something went wrong, please try again</p></div>";
8107                jQuery(".bs-callout-warning").toggleClass("hidden", !1),
8108                jQuery(".bs-callout-warning").html(e),
8109                jQuery("html, body").animate({
8110                    scrollTop: jQuery(".failure").offset().top
8111                }, "fast")
8112            }
8113        })
8114    }),
8115    jQuery("#form-admin-nonmember-event-registration").length && jQuery("#form-admin-nonmember-event-registration").parsley().on("field:validated", function() {
8116        0 === jQuery(".parsley-error").length ? jQuery(".bs-callout-warning").attr("class", "bs-callout-warning hidden") : (jQuery(".bs-callout-warning").attr("class", "bs-callout-warning alert alert-warning"),
8117        jQuery(".bs-callout-warning").html("<p>There are errors on the form. Please fix them before continuing </p>"))
8118    }).on("form:submit", function() {
8119        var t = {
8120            category: jQuery("#category").val(),
8121            title: jQuery("#prefix").val(),
8122            firstname: jQuery("#firstname").val(),
8123            surname: jQuery("#surname").val(),
8124            email: jQuery("#email").val(),
8125            phone: jQuery("#phone").val(),
8126            address1: jQuery("#address-1").val(),
8127            address2: jQuery("#address-2").val(),
8128            address3: jQuery("#address-3").val(),
8129            address4: jQuery("#address-4").val(),
8130            address5: jQuery("#address-5").val(),
8131            company: jQuery("#company").val(),
8132            _wpnonce: jQuery("#_wpnonce").val(),
8133            wheelchair: jQuery("input#wheelchair").is(":checked") ? "YES" : "NO",
8134            friday: jQuery("input#friday").is(":checked") ? "YES" : "NO",
8135            saturday: jQuery("input#saturday").is(":checked") ? "YES" : "NO",
8136            leader_speech: jQuery("input#leader-speech").is(":checked") ? "YES" : "NO"
8137        };
8138        jQuery.post("/app/themes/finegael/app/form-actions/members-hub/submit-admin-nonmember-event-registration.php", t, function(t) {
8139            var e = t.response;
8140            if ("success" === t.return) {
8141                var n = "<p>Registration is completed.</p><br><p>Print Pass?</p><button class='btn btn-default' onClick='printMemberPass(" + JSON.stringify(e).replace(/'/g, "#") + ")'>Yes</button>&nbsp;&nbsp;&nbsp;<button class='btn btn-default' onClick='window.location.reload()'>No</button><div id='container-barcode' style='display: none;'><svg id='barcode'></svg></div>";
8142                jQuery(".bs-callout-warning").attr("class", "bs-callout-warning alert alert-success"),
8143                jQuery(".bs-callout-warning").html(n),
8144                jQuery("form#form-admin-nonmember-event-registration").css("display", "none")
8145            } else {
8146                var n = "<h4>Something's not right!</h4>";
8147                jQuery(".bs-callout-warning").attr("class", "bs-callout-warning alert alert-error"),
8148                jQuery(".bs-callout-warning").html(n)
8149            }
8150        })
8151    }),
8152    jQuery("#form-events-admin-member-registration").length && jQuery("#form-events-admin-member-registration").parsley().on("field:validated", function() {
8153        0 === jQuery(".parsley-error").length ? jQuery(".bs-callout-warning").attr("class", "bs-callout-warning hidden") : (jQuery(".bs-callout-warning").attr("class", "bs-callout-warning alert alert-warning"),
8154        jQuery(".bs-callout-warning").html("<p>There are errors on the form. Please fix them before continuing </p>"))
8155    }).on("form:submit", function() {
8156        var t = "";
8157        switch (jQuery("#title").val()) {
8158        case "Mr.":
8159            t = 1;
8160            break;
8161        case "Ms.":
8162            t = 2;
8163            break;
8164        case "Mrs.":
8165            t = 3;
8166            break;
8167        case "Cllr.":
8168            t = 4;
8169            break;
8170        case "Dr.":
8171            t = 5;
8172            break;
8173        case "Sen.":
8174            t = 6;
8175            break;
8176        case "Rev.":
8177            t = 7;
8178            break;
8179        case "Fr.":
8180            t = 8;
8181            break;
8182        case "Prof.":
8183            t = 9;
8184            break;
8185        case "Sr.":
8186            t = 10;
8187            break;
8188        case "Lt.":
8189            t = 11;
8190            break;
8191        case "Capt.":
8192            t = 12;
8193            break;
8194        case "Lt. Col.":
8195            t = 13;
8196            break;
8197        case "An tUas":
8198            t = 15;
8199            break;
8200        case "Col.":
8201            t = 16;
8202            break;
8203        case "The":
8204            t = 17;
8205            break;
8206        case "Ald.":
8207            t = 18;
8208            break;
8209        case "Minister":
8210            t = 19;
8211            break;
8212        case "His Excellency":
8213            t = 20;
8214            break;
8215        case "Her Excellency":
8216            t = 21;
8217            break;
8218        case "Miss":
8219            t = 22;
8220            break;
8221        case "Mx.":
8222            t = 23
8223        }
8224        var e = {
8225            title: t,
8226            firstname: jQuery("#firstname").val(),
8227            constituency: jQuery("#constituency").val(),
8228            surname: jQuery("#surname").val(),
8229            email: jQuery("#email").val(),
8230            phone: jQuery("#phone").val(),
8231            address1: jQuery("#address-1").val(),
8232            address2: jQuery("#address-2").val(),
8233            address3: jQuery("#address-3").val(),
8234            address4: jQuery("#address-4").val(),
8235            address5: jQuery("#address-5").val(),
8236            _wpnonce: jQuery("#_wpnonce").val(),
8237            wheelchair: jQuery("input#wheelchair").is(":checked") ? "YES" : "NO",
8238            mid: jQuery("#mid").val(),
8239            friday: jQuery("input#friday").is(":checked") ? "YES" : "NO",
8240            saturday: jQuery("input#saturday").is(":checked") ? "YES" : "NO",
8241            leader_speech: jQuery("input#leader-speech").is(":checked") ? "YES" : "NO"
8242        };
8243        jQuery.post("/app/themes/finegael/app/form-actions/members-hub/submit-admin-events-register.php", e, function(t) {
8244            var e = t.response
8245              , n = ""
8246              , r = jQuery(".bs-callout-warning");
8247            "success" === t.return ? (n = "<p>The member is registered to attend our National Conference.</p><br><p>Print Pass?</p><button class='btn btn-default' onClick='printMemberPass(" + JSON.stringify(e).replace(/'/g, "#") + ")'>Yes</button>&nbsp;&nbsp;&nbsp;<button class='btn btn-default' onClick='window.location.reload()'>No</button><div id='container-barcode' style='display: none;'><svg id='barcode'></svg></div>",
8248            r.attr("class", "bs-callout-warning alert alert-success")) : "alreadyRegistered" === t.return ? (n = "<p>This member has been re-registered to attend our National Conference.</p><br><p>Print Pass?</p><button class='btn btn-default' onClick='printMemberPass(" + JSON.stringify(e).replace(/'/g, "#") + ")'>Yes</button>&nbsp;&nbsp;&nbsp;<button class='btn btn-default' onClick='window.location.reload()'>No</button><br><div id='container-barcode' style='display: none;'><svg id='barcode'></svg></div>",
8249            r.attr("class", "bs-callout-warning alert alert-warning")) : (n = "<p>Something went wrong. Please try again.</p>",
8250            r.attr("class", "bs-callout-warning alert alert-danger")),
8251            r.html(n),
8252            jQuery("form#form-events-admin-member-registration").css("display", "none")
8253        })
8254    }),
8255    jQuery("#form-membershub-events-admin").length && jQuery("#form-membershub-events-admin").parsley().on("field:validated", function() {
8256        0 === jQuery(".parsley-error").length ? jQuery(".bs-callout-warning").attr("class", "bs-callout-warning hidden") : (jQuery(".bs-callout-warning").attr("class", "bs-callout-warning alert alert-warning"),
8257        jQuery(".bs-callout-warning").html("<p>There are errors on the form. Please fix them before continuing </p>"))
8258    }).on("form:submit", function() {
8259        var t = {
8260            firstname: jQuery("#fname").val(),
8261            surname: jQuery("#surname").val(),
8262            constituencyPrefix: jQuery("#constituency-prefix").val()
8263        };
8264        window.location.href = "/members-hub/admin-search-result/?fname=" + t.firstname + "&surname=" + t.surname + "&prefix=" + t.constituencyPrefix
8265    }),
8266    jQuery("#form-nonmember-event-registration").length && jQuery("#form-nonmember-event-registration").parsley().on("field:validated", function() {
8267        0 === jQuery(".parsley-error").length ? jQuery(".bs-callout-warning").attr("class", "bs-callout-warning hidden") : (jQuery(".bs-callout-warning").attr("class", "bs-callout-warning alert alert-warning"),
8268        jQuery(".bs-callout-warning").html("<p>There are errors on the form. Please fix them before continuing </p>"))
8269    }).on("form:submit", function() {
8270        var t = {
8271            title: jQuery("#prefix").val(),
8272            firstname: jQuery("#firstname").val(),
8273            surname: jQuery("#surname").val(),
8274            email: jQuery("#email").val(),
8275            phone: jQuery("#phone").val(),
8276            address1: jQuery("#address-1").val(),
8277            address2: jQuery("#address-2").val(),
8278            address3: jQuery("#address-3").val(),
8279            address4: jQuery("#address-4").val(),
8280            address5: jQuery("#address-5").val(),
8281            _wpnonce: jQuery("#_wpnonce").val(),
8282            wheelchair: jQuery("input#wheelchair").is(":checked") ? "YES" : "NO",
8283            mid: jQuery("#mid").val(),
8284            friday: jQuery("input#friday").is(":checked") ? "YES" : "NO",
8285            saturday: jQuery("input#saturday").is(":checked") ? "YES" : "NO",
8286            leader_speech: jQuery("input#leader-speech").is(":checked") ? "YES" : "NO"
8287        };
8288        console.log(t),
8289        jQuery.post("/app/themes/finegael/app/form-actions/members-hub/submit-nonmember-event-registration.php", t, function(t) {
8290            if ("success" == t.return) {
8291                var e = "<p>Thank you for registering to attend our National Conference.</p><p>We will send an email to confirm that we’ve received your registration. (If you don’t receive an email, please check your Spam/Junk folder)</p><p>Please click <a href='/members-hub/events/national-conference/'>here</a>, if you want more information on the National Conference.</p><p>If you would like to add a spouse or friend to attend, please click <a href='/members-hub/non-member-event-registration/'>here</a></p><p>If you have any queries, you can contact us by email (<a href='mailto:[email protected]'>[email protected]</a>) or at 01-6198466</p>";
8292                jQuery(".bs-callout-warning").attr("class", "bs-callout-warning alert alert-success"),
8293                jQuery(".bs-callout-warning").html(e),
8294                jQuery("form#form-nonmember-event-registration").css("display", "none")
8295            } else {
8296                var e = "<h4>Something's not right!</h4><p>Please contact Fine Gael by email <a href='mailto:[email protected]'>[email protected]</a> or Phone 01 6198444</p>";
8297                jQuery(".bs-callout-warning").attr("class", "bs-callout-warning alert alert-error"),
8298                jQuery(".bs-callout-warning").html(e)
8299            }
8300        })
8301    }),
8302    jQuery("#form-national-conf-registration").length && jQuery("#form-national-conf-registration").parsley().on("field:validated", function() {
8303        0 === jQuery(".parsley-error").length ? jQuery(".bs-callout-warning").attr("class", "bs-callout-warning hidden") : (jQuery(".bs-callout-warning").attr("class", "bs-callout-warning alert alert-warning"),
8304        jQuery(".bs-callout-warning").html("<p>There are errors on the form. Please fix them before continuing </p>"))
8305    }).on("form:submit", function() {
8306        var t = {
8307            title: jQuery("#title").val(),
8308            firstname: jQuery("#firstname").val(),
8309            constituency: jQuery("#constituency").val(),
8310            surname: jQuery("#surname").val(),
8311            email: jQuery("#email").val(),
8312            phone: jQuery("#phone").val(),
8313            address1: jQuery("#address-1").val(),
8314            address2: jQuery("#address-2").val(),
8315            address3: jQuery("#address-3").val(),
8316            address4: jQuery("#address-4").val(),
8317            address5: jQuery("#address-5").val(),
8318            _wpnonce: jQuery("#_wpnonce").val(),
8319            wheelchair: jQuery("input#wheelchair").is(":checked") ? "YES" : "NO",
8320            mid: jQuery("#mid").val(),
8321            friday: jQuery("input#friday").is(":checked") ? "YES" : "NO",
8322            saturday: jQuery("input#saturday").is(":checked") ? "YES" : "NO",
8323            leader_speech: jQuery("input#leader-speech").is(":checked") ? "YES" : "NO",
8324            event: "National conference"
8325        };
8326        jQuery.post("/app/themes/finegael/app/form-actions/members-hub/submit-event-registration.php", t, function(t) {
8327            if ("success" == t.return) {
8328                var e = "<p>Thank you for registering to attend our National Conference.</p><p>We will send an email to confirm that we’ve received your registration. (If you don’t receive an email, please check your Spam/Junk folder)</p><p>Please click <a href='/members-hub/events/national-conference/'>here</a>, if you want more information on the National Conference.</p><p>If you would like to add a spouse or friend to attend, please click <a href='/members-hub/non-member-event-registration/'>here</a></p><p>If you have any queries, you can contact us by email (<a href='mailto:[email protected]'>[email protected]</a>) or at 01-6198466</p>";
8329                jQuery(".bs-callout-warning").attr("class", "bs-callout-warning alert alert-success"),
8330                jQuery(".bs-callout-warning").html(e),
8331                jQuery("form#form-national-conf-registration").css("display", "none")
8332            } else if ("alreadyRegistered" == t.return) {
8333                var e = "<p>You have already registered to attend our National Conference.</p>";
8334                jQuery(".bs-callout-warning").attr("class", "bs-callout-warning alert alert-warning"),
8335                jQuery(".bs-callout-warning").html(e),
8336                jQuery("form#form-national-conf-registration").css("display", "none")
8337            } else {
8338                var e = "<p>Something went wrong. Please try again.</p>";
8339                jQuery(".bs-callout-warning").attr("class", "bs-callout-warning alert alert-danger"),
8340                jQuery(".bs-callout-warning").html(e),
8341                jQuery("form#form-national-conf-registration").css("display", "none")
8342            }
8343        })
8344    })
8345}),
8346/*!
8347 * typeahead.js 0.11.1
8348 * https://github.com/twitter/typeahead.js
8349 * Copyright 2013-2015 Twitter, Inc. and other contributors; Licensed MIT
8350 */
8351function(t, e) {
8352    "function" == typeof define && define.amd ? define("bloodhound", ["jquery"], function(n) {
8353        return t.Bloodhound = e(n)
8354    }) : "object" == typeof exports ? module.exports = e(require("jquery")) : t.Bloodhound = e(jQuery)
8355}(this, function(t) {
8356    var e = function() {
8357        "use strict";
8358        return {
8359            isMsie: function() {
8360                return !!/(msie|trident)/i.test(navigator.userAgent) && navigator.userAgent.match(/(msie |rv:)(\d+(.\d+)?)/i)[2]
8361            },
8362            isBlankString: function(t) {
8363                return !t || /^\s*$/.test(t)
8364            },
8365            escapeRegExChars: function(t) {
8366                return t.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&")
8367            },
8368            isString: function(t) {
8369                return "string" == typeof t
8370            },
8371            isNumber: function(t) {
8372                return "number" == typeof t
8373            },
8374            isArray: t.isArray,
8375            isFunction: t.isFunction,
8376            isObject: t.isPlainObject,
8377            isUndefined: function(t) {
8378                return void 0 === t
8379            },
8380            isElement: function(t) {
8381                return !(!t || 1 !== t.nodeType)
8382            },
8383            isJQuery: function(e) {
8384                return e instanceof t
8385            },
8386            toStr: function(t) {
8387                return e.isUndefined(t) || null === t ? "" : t + ""
8388            },
8389            bind: t.proxy,
8390            each: function(e, n) {
8391                t.each(e, r);
8392                function r(t, e) {
8393                    return n(e, t)
8394                }
8395            },
8396            map: t.map,
8397            filter: t.grep,
8398            every: function(e, n) {
8399                var r = !0;
8400                return e ? (t.each(e, function(t, i) {
8401                    if (!(r = n.call(null, i, t, e)))
8402                        return !1
8403                }),
8404                !!r) : r
8405            },
8406            some: function(e, n) {
8407                var r = !1;
8408                return e ? (t.each(e, function(t, i) {
8409                    if (r = n.call(null, i, t, e))
8410                        return !1
8411                }),
8412                !!r) : r
8413            },
8414            mixin: t.extend,
8415            identity: function(t) {
8416                return t
8417            },
8418            clone: function(e) {
8419                return t.extend(!0, {}, e)
8420            },
8421            getIdGenerator: function() {
8422                var t = 0;
8423                return function() {
8424                    return t++
8425                }
8426            },
8427            templatify: function(e) {
8428                return t.isFunction(e) ? e : n;
8429                function n() {
8430                    return String(e)
8431                }
8432            },
8433            defer: function(t) {
8434                setTimeout(t, 0)
8435            },
8436            debounce: function(t, e, n) {
8437                var r, i;
8438                return function() {
8439                    var o, a, s = this, u = arguments;
8440                    return o = function() {
8441                        r = null,
8442                        n || (i = t.apply(s, u))
8443                    }
8444                    ,
8445                    a = n && !r,
8446                    clearTimeout(r),
8447                    r = setTimeout(o, e),
8448                    a && (i = t.apply(s, u)),
8449                    i
8450                }
8451            },
8452            throttle: function(t, e) {
8453                var n, r, i, o, a, s;
8454                return a = 0,
8455                s = function() {
8456                    a = new Date,
8457                    i = null,
8458                    o = t.apply(n, r)
8459                }
8460                ,
8461                function() {
8462                    var u = new Date
8463                      , l = e - (u - a);
8464                    return n = this,
8465                    r = arguments,
8466                    l <= 0 ? (clearTimeout(i),
8467                    i = null,
8468                    a = u,
8469                    o = t.apply(n, r)) : i || (i = setTimeout(s, l)),
8470                    o
8471                }
8472            },
vendor: 5,789 bytes, lines 8473-8657
8473            stringify: function(t) {
8474                return e.isString(t) ? t : JSON.stringify(t)
8475            },
8476            noop: function() {}
8477        }
8478    }()
8479      , n = "0.11.1"
8480      , r = function() {
8481        "use strict";
8482        return {
8483            nonword: n,
8484            whitespace: t,
8485            obj: {
8486                nonword: r(n),
8487                whitespace: r(t)
8488            }
8489        };
8490        function t(t) {
8491            return t = e.toStr(t),
8492            t ? t.split(/\s+/) : []
8493        }
8494        function n(t) {
8495            return t = e.toStr(t),
8496            t ? t.split(/\W+/) : []
8497        }
8498        function r(t) {
8499            return function(n) {
8500                return n = e.isArray(n) ? n : [].slice.call(arguments, 0),
8501                function(r) {
8502                    var i = [];
8503                    return e.each(n, function(n) {
8504                        i = i.concat(t(e.toStr(r[n])))
8505                    }),
8506                    i
8507                }
8508            }
8509        }
8510    }()
8511      , i = function() {
8512        "use strict";
8513        function n(n) {
8514            this.maxSize = e.isNumber(n) ? n : 100,
8515            this.reset(),
8516            this.maxSize <= 0 && (this.set = this.get = t.noop)
8517        }
8518        e.mixin(n.prototype, {
8519            set: function(t, e) {
8520                var n, r = this.list.tail;
8521                this.size >= this.maxSize && (this.list.remove(r),
8522                delete this.hash[r.key],
8523                this.size--),
8524                (n = this.hash[t]) ? (n.val = e,
8525                this.list.moveToFront(n)) : (n = new i(t,e),
8526                this.list.add(n),
8527                this.hash[t] = n,
8528                this.size++)
8529            },
8530            get: function(t) {
8531                var e = this.hash[t];
8532                if (e)
8533                    return this.list.moveToFront(e),
8534                    e.val
8535            },
8536            reset: function() {
8537                this.size = 0,
8538                this.hash = {},
8539                this.list = new r
8540            }
8541        });
8542        function r() {
8543            this.head = this.tail = null
8544        }
8545        e.mixin(r.prototype, {
8546            add: function(t) {
8547                this.head && (t.next = this.head,
8548                this.head.prev = t),
8549                this.head = t,
8550                this.tail = this.tail || t
8551            },
8552            remove: function(t) {
8553                t.prev ? t.prev.next = t.next : this.head = t.next,
8554                t.next ? t.next.prev = t.prev : this.tail = t.prev
8555            },
8556            moveToFront: function(t) {
8557                this.remove(t),
8558                this.add(t)
8559            }
8560        });
8561        function i(t, e) {
8562            this.key = t,
8563            this.val = e,
8564            this.prev = this.next = null
8565        }
8566        return n
8567    }()
8568      , o = function() {
8569        "use strict";
8570        var n;
8571        try {
8572            n = window.localStorage,
8573            n.setItem("~~~", "!"),
8574            n.removeItem("~~~")
8575        } catch (t) {
8576            n = null
8577        }
8578        function r(t, r) {
8579            this.prefix = ["__", t, "__"].join(""),
8580            this.ttlKey = "__ttl__",
8581            this.keyMatcher = new RegExp("^" + e.escapeRegExChars(this.prefix)),
8582            this.ls = r || n,
8583            !this.ls && this._noop()
8584        }
8585        return e.mixin(r.prototype, {
8586            _prefix: function(t) {
8587                return this.prefix + t
8588            },
8589            _ttlKey: function(t) {
8590                return this._prefix(t) + this.ttlKey
8591            },
8592            _noop: function() {
8593                this.get = this.set = this.remove = this.clear = this.isExpired = e.noop
8594            },
8595            _safeSet: function(t, e) {
8596                try {
8597                    this.ls.setItem(t, e)
8598                } catch (t) {
8599                    "QuotaExceededError" === t.name && (this.clear(),
8600                    this._noop())
8601                }
8602            },
8603            get: function(t) {
8604                return this.isExpired(t) && this.remove(t),
8605                a(this.ls.getItem(this._prefix(t)))
8606            },
8607            set: function(t, n, r) {
8608                return e.isNumber(r) ? this._safeSet(this._ttlKey(t), o(i() + r)) : this.ls.removeItem(this._ttlKey(t)),
8609                this._safeSet(this._prefix(t), o(n))
8610            },
8611            remove: function(t) {
8612                return this.ls.removeItem(this._ttlKey(t)),
8613                this.ls.removeItem(this._prefix(t)),
8614                this
8615            },
8616            clear: function() {
8617                var t, e = s(this.keyMatcher);
8618                for (t = e.length; t--; )
8619                    this.remove(e[t]);
8620                return this
8621            },
8622            isExpired: function(t) {
8623                var n = a(this.ls.getItem(this._ttlKey(t)));
8624                return !!(e.isNumber(n) && i() > n)
8625            }
8626        }),
8627        r;
8628        function i() {
8629            return (new Date).getTime()
8630        }
8631        function o(t) {
8632            return JSON.stringify(e.isUndefined(t) ? null : t)
8633        }
8634        function a(e) {
8635            return t.parseJSON(e)
8636        }
8637        function s(t) {
8638            var e, r, i = [], o = n.length;
8639            for (e = 0; e < o; e++)
8640                (r = n.key(e)).match(t) && i.push(r.replace(t, ""));
8641            return i
8642        }
8643    }()
8644      , a = function() {
8645        "use strict";
8646        var n = 0
8647          , r = {}
8648          , o = 6
8649          , a = new i(10);
8650        function s(t) {
8651            t = t || {},
8652            this.cancelled = !1,
8653            this.lastReq = null,
8654            this._send = t.transport,
8655            this._get = t.limiter ? t.limiter(this._get) : this._get,
8656            this._cache = !1 === t.cache ? new i(0) : a
8657        }
8658        return s.setMaxPendingRequests = function(t) {
8659            o = t
8660        }
8661        ,
8662        s.resetCache = function() {
8663            a.reset()
8664        }
8665        ,
8666        e.mixin(s.prototype, {
8667            _fingerprint: function(e) {
8668                return e = e || {},
8669                e.url + e.type + t.param(e.data || {})
8670            },
8671            _get: function(t, e) {
8672                var i, a, s = this;
8673                i = this._fingerprint(t);
8674                function u(t) {
8675                    e(null, t),
8676                    s._cache.set(i, t)
8677                }
8678                function l() {
8679                    e(!0)
8680                }
8681                function c() {
8682                    n--,
8683                    delete r[i],
8684                    s.onDeckRequestArgs && (s._get.apply(s, s.onDeckRequestArgs),
8685                    s.onDeckRequestArgs = null)
8686                }
8687                this.cancelled || i !== this.lastReq || ((a = r[i]) ? a.done(u).fail(l) : n < o ? (n++,
8688                r[i] = this._send(t).done(u).fail(l).always(c)) : this.onDeckRequestArgs = [].slice.call(arguments, 0))
8689            },
8690            get: function(n, r) {
8691                var i, o;
8692                r = r || t.noop,
8693                n = e.isString(n) ? {
8694                    url: n
8695                } : n || {},
8696                o = this._fingerprint(n),
8697                this.cancelled = !1,
8698                this.lastReq = o,
8699                (i = this._cache.get(o)) ? r(null, i) : this._get(n, r)
8700            },
8701            cancel: function() {
8702                this.cancelled = !0
8703            }
8704        }),
8705        s
8706    }()
8707      , s = window.SearchIndex = function() {
8708        "use strict";
8709        var n = "c"
8710          , r = "i";
8711        function i(n) {
8712            n = n || {},
8713            n.datumTokenizer && n.queryTokenizer || t.error("datumTokenizer and queryTokenizer are both required"),
8714            this.identify = n.identify || e.stringify,
8715            this.datumTokenizer = n.datumTokenizer,
8716            this.queryTokenizer = n.queryTokenizer,
8717            this.reset()
8718        }
8719        return e.mixin(i.prototype, {
8720            bootstrap: function(t) {
8721                this.datums = t.datums,
8722                this.trie = t.trie
8723            },
8724            add: function(t) {
8725                var i = this;
8726                t = e.isArray(t) ? t : [t],
8727                e.each(t, function(t) {
8728                    var s, u;
8729                    i.datums[s = i.identify(t)] = t,
8730                    u = o(i.datumTokenizer(t)),
8731                    e.each(u, function(t) {
8732                        var e, o, u;
8733                        for (e = i.trie,
8734                        o = t.split(""); u = o.shift(); )
8735                            e = e[n][u] || (e[n][u] = a()),
8736                            e[r].push(s)
8737                    })
8738                })
8739            },
8740            get: function(t) {
8741                var n = this;
8742                return e.map(t, function(t) {
8743                    return n.datums[t]
8744                })
8745            },
8746            search: function(t) {
8747                var i, a, l = this;
8748                return i = o(this.queryTokenizer(t)),
8749                e.each(i, function(t) {
8750                    var e, i, o, s;
8751                    if (a && 0 === a.length)
8752                        return !1;
8753                    for (e = l.trie,
8754                    i = t.split(""); e && (o = i.shift()); )
8755                        e = e[n][o];
8756                    if (!e || 0 !== i.length)
8757                        return a = [],
8758                        !1;
8759                    s = e[r].slice(0),
8760                    a = a ? u(a, s) : s
8761                }),
8762                a ? e.map(s(a), function(t) {
8763                    return l.datums[t]
8764                }) : []
8765            },
8766            all: function() {
8767                var t = [];
8768                for (var e in this.datums)
8769                    t.push(this.datums[e]);
8770                return t
8771            },
8772            reset: function() {
8773                this.datums = {},
8774                this.trie = a()
8775            },
8776            serialize: function() {
8777                return {
8778                    datums: this.datums,
8779                    trie: this.trie
8780                }
8781            }
8782        }),
8783        i;
8784        function o(t) {
8785            return t = e.filter(t, function(t) {
8786                return !!t
8787            }),
8788            t = e.map(t, function(t) {
8789                return t.toLowerCase()
8790            })
8791        }
8792        function a() {
8793            var t = {};
8794            return t[r] = [],
8795            t[n] = {},
8796            t
8797        }
8798        function s(t) {
8799            for (var e = {}, n = [], r = 0, i = t.length; r < i; r++)
8800                e[t[r]] || (e[t[r]] = !0,
8801                n.push(t[r]));
8802            return n
8803        }
8804        function u(t, e) {
8805            var n = 0
8806              , r = 0
8807              , i = [];
8808            t = t.sort(),
8809            e = e.sort();
8810            for (var o = t.length, a = e.length; n < o && r < a; )
8811                t[n] < e[r] ? n++ : t[n] >
vendor: 5,744 bytes, lines 8811-8987
8811 e[r] ? r++ : (i.push(t[n]),
8812                n++,
8813                r++);
8814            return i
8815        }
8816    }()
8817      , u = function() {
8818        "use strict";
8819        var t;
8820        t = {
8821            data: "data",
8822            protocol: "protocol",
8823            thumbprint: "thumbprint"
8824        };
8825        function n(t) {
8826            this.url = t.url,
8827            this.ttl = t.ttl,
8828            this.cache = t.cache,
8829            this.prepare = t.prepare,
8830            this.transform = t.transform,
8831            this.transport = t.transport,
8832            this.thumbprint = t.thumbprint,
8833            this.storage = new o(t.cacheKey)
8834        }
8835        return e.mixin(n.prototype, {
8836            _settings: function() {
8837                return {
8838                    url: this.url,
8839                    type: "GET",
8840                    dataType: "json"
8841                }
8842            },
8843            store: function(e) {
8844                this.cache && (this.storage.set(t.data, e, this.ttl),
8845                this.storage.set(t.protocol, location.protocol, this.ttl),
8846                this.storage.set(t.thumbprint, this.thumbprint, this.ttl))
8847            },
8848            fromCache: function() {
8849                var e, n = {};
8850                return this.cache ? (n.data = this.storage.get(t.data),
8851                n.protocol = this.storage.get(t.protocol),
8852                n.thumbprint = this.storage.get(t.thumbprint),
8853                e = n.thumbprint !== this.thumbprint || n.protocol !== location.protocol,
8854                n.data && !e ? n.data : null) : null
8855            },
8856            fromNetwork: function(t) {
8857                var e, n = this;
8858                function r() {
8859                    t(!0)
8860                }
8861                function i(e) {
8862                    t(null, n.transform(e))
8863                }
8864                t && (e = this.prepare(this._settings()),
8865                this.transport(e).fail(r).done(i))
8866            },
8867            clear: function() {
8868                return this.storage.clear(),
8869                this
8870            }
8871        }),
8872        n
8873    }()
8874      , l = function() {
8875        "use strict";
8876        function t(t) {
8877            this.url = t.url,
8878            this.prepare = t.prepare,
8879            this.transform = t.transform,
8880            this.transport = new a({
8881                cache: t.cache,
8882                limiter: t.limiter,
8883                transport: t.transport
8884            })
8885        }
8886        return e.mixin(t.prototype, {
8887            _settings: function() {
8888                return {
8889                    url: this.url,
8890                    type: "GET",
8891                    dataType: "json"
8892                }
8893            },
8894            get: function(t, e) {
8895                var n, r = this;
8896                function i(t, n) {
8897                    e(t ? [] : r.transform(n))
8898                }
8899                if (e)
8900                    return t = t || "",
8901                    n = this.prepare(t, this._settings()),
8902                    this.transport.get(n, i)
8903            },
8904            cancelLastRequest: function() {
8905                this.transport.cancel()
8906            }
8907        }),
8908        t
8909    }()
8910      , c = function() {
8911        "use strict";
8912        return function(n) {
8913            var o, a;
8914            return o = {
8915                initialize: !0,
8916                identify: e.stringify,
8917                datumTokenizer: null,
8918                queryTokenizer: null,
8919                sufficient: 5,
8920                sorter: null,
8921                local: [],
8922                prefetch: null,
8923                remote: null
8924            },
8925            n = e.mixin(o, n || {}),
8926            !n.datumTokenizer && t.error("datumTokenizer is required"),
8927            !n.queryTokenizer && t.error("queryTokenizer is required"),
8928            a = n.sorter,
8929            n.sorter = a ? function(t) {
8930                return t.sort(a)
8931            }
8932            : e.identity,
8933            n.local = e.isFunction(n.local) ? n.local() : n.local,
8934            n.prefetch = r(n.prefetch),
8935            n.remote = i(n.remote),
8936            n
8937        }
8938        ;
8939        function r(r) {
8940            var i;
8941            return r ? (i = {
8942                url: null,
8943                ttl: 864e5,
8944                cache: !0,
8945                cacheKey: null,
8946                thumbprint: "",
8947                prepare: e.identity,
8948                transform: e.identity,
8949                transport: null
8950            },
8951            r = e.isString(r) ? {
8952                url: r
8953            } : r,
8954            r = e.mixin(i, r),
8955            !r.url && t.error("prefetch requires url to be set"),
8956            r.transform = r.filter || r.transform,
8957            r.cacheKey = r.cacheKey || r.url,
8958            r.thumbprint = n + r.thumbprint,
8959            r.transport = r.transport ? s(r.transport) : t.ajax,
8960            r) : null
8961        }
8962        function i(n) {
8963            var r;
8964            if (n)
8965                return r = {
8966                    url: null,
8967                    cache: !0,
8968                    prepare: null,
8969                    replace: null,
8970                    wildcard: null,
8971                    limiter: null,
8972                    rateLimitBy: "debounce",
8973                    rateLimitWait: 300,
8974                    transform: e.identity,
8975                    transport: null
8976                },
8977                n = e.isString(n) ? {
8978                    url: n
8979                } : n,
8980                n = e.mixin(r, n),
8981                !n.url && t.error("remote requires url to be set"),
8982                n.transform = n.filter || n.transform,
8983                n.prepare = o(n),
8984                n.limiter = a(n),
8985                n.transport = n.transport ? s(n.transport) : t.ajax,
8986                delete n.replace,
8987                delete n.wildcard,
8988                delete n.rateLimitBy,
8989                delete n.rateLimitWait,
8990                n
8991        }
8992        function o(t) {
8993            var e, n, r;
8994            return e = t.prepare,
8995            n = t.replace,
8996            r = t.wildcard,
8997            e || (e = n ? i : t.wildcard ? o : a);
8998            function i(t, e) {
8999                return e.url = n(e.url, t),
9000                e
9001            }
9002            function o(t, e) {
9003                return e.url = e.url.replace(r, encodeURIComponent(t)),
9004                e
9005            }
9006            function a(t, e) {
9007                return e
9008            }
9009        }
9010        function a(t) {
9011            var n, r, i;
9012            return n = t.limiter,
9013            r = t.rateLimitBy,
9014            i = t.rateLimitWait,
9015            n || (n = /^throttle$/i.test(r) ? function(t) {
9016                return function n(r) {
9017                    return e.throttle(r, t)
9018                }
9019            }(i) : function(t) {
9020                return function n(r) {
9021                    return e.debounce(r, t)
9022                }
9023            }(i)),
9024            n
9025        }
9026        function s(n) {
9027            return function(r) {
9028                var i = t.Deferred();
9029                return n(r, o, a),
9030                i;
9031                function o(t) {
9032                    e.defer(function() {
9033                        i.resolve(t)
9034                    })
9035                }
9036                function a(t) {
9037                    e.defer(function() {
9038                        i.reject(t)
9039                    })
9040                }
9041            }
9042        }
9043    }();
9044    return function() {
9045        "use strict";
9046        var n;
9047        n = window && window.Bloodhound;
9048        function i(t) {
9049            t = c(t),
9050            this.sorter = t.sorter,
9051            this.identify = t.identify,
9052            this.sufficient = t.sufficient,
9053            this.local = t.local,
9054            this.remote = t.remote ? new l(t.remote) : null,
9055            this.prefetch = t.prefetch ? new u(t.prefetch) : null,
9056            this.index = new s({
9057                identify: this.identify,
9058                datumTokenizer: t.datumTokenizer,
9059                queryTokenizer: t.queryTokenizer
9060            }),
9061            !1 !== t.initialize && this.initialize()
9062        }
9063        return i.noConflict = function() {
9064            return window && (window.Bloodhound = n),
9065            i
9066        }
9067        ,
9068        i.tokenizers = r,
9069        e.mixin(i.prototype, {
9070            __ttAdapter: function() {
9071                var t = this;
9072                return this.remote ? e : n;
9073                function e(e, n, r) {
9074                    return t.search(e, n, r)
9075                }
9076                function n(e, n) {
9077                    return t.search(e, n)
9078                }
9079            },
9080            _loadPrefetch: function() {
9081                var e, n, r = this;
9082                return e = t.Deferred(),
9083                this.prefetch ? (n = this.prefetch.fromCache()) ? (this.index.bootstrap(n),
9084                e.resolve()) : this.prefetch.fromNetwork(i) : e.resolve(),
9085                e.promise();
9086                function i(t, n) {
9087                    if (t)
9088                        return e.reject();
9089                    r.add(n),
9090                    r.prefetch.store(r.index.serialize()),
9091                    e.resolve()
9092                }
9093            },
9094            _initialize: function() {
9095                var t = this;
9096                return this.clear(),
9097                (this.initPromise = this._loadPrefetch()).done(e),
9098                this.initPromise;
9099                function e() {
9100                    t.add(t.local)
9101                }
9102            },
9103            initialize: function(t) {
9104                return !this.initPromise || t ? this._initialize() : this.initPromise
9105            },
9106            add: function(t) {
9107                return this.index.add(t),
9108                this
9109            },
9110            get: function(t) {
9111                return t = e.isArray(t) ? t : [].slice.call(arguments),
9112                this.index.get(t)
9113            },
9114            search: function(t, n, r) {
9115                var i, o = this;
9116                return i = this.sorter(this.index.search(t)),
9117                n(this.remote ? i.slice() : i),
9118                this.remote && i.length < this.sufficient ? this.remote.get(t, a) : this.remote && this.remote.cancelLastRequest(),
9119                this;
9120                function a(t) {
9121                    var n = [];
9122                    e.each(t, function(t) {
9123                        !e.some(i, function(e) {
9124                            return o.identify(t) === o.identify(e)
9125                        }) && n.push(t)
9126                    }),
9127                    r && r(n)
9128                }
9129            },
9130            all: function() {
9131                return this.index.all()
9132            },
9133            clear: function() {
9134                return this.index.reset(),
9135                this
9136            },
9137            clearPrefetchCache: function() {
9138                return this.prefetch && this.prefetch.clear(),
9139                this
9140            },
9141            clearRemoteCache: function() {
9142                return a.resetCache(),
9143                this
9144            },
9145            ttAdapter: function() {
9146                return this.__ttAdapter()
9147            }
9148        }),
9149        i
9150    }()
9151}),
9152jQuery(function() {
9153    jQuery('a[href*="#"]:not([href="#"])').click(function() {
9154        if (location.pathname.replace(/^\//, "") == this.pathname.replace(/^\//, "") && location.hostname == this.hostname) {
9155            var t = jQuery(this.hash);
9156            if (t = t.length ? t : jQuery("[name=" + this.hash.slice(1) + "]"),
9157            t.length)
9158                return jQuery("html, body").animate({
9159                    scrollTop: t.offset().top
9160                }, 1e3),
9161                !1
9162        }
9163    })
9164}),
9165jQuery(window).bind("scroll", function() {
9166    jQuery(window).scrollTop() > 55 && jQuery(window).width() >= 992 ? jQuery(".navbar").addClass("navbar-fixed-top") : jQuery(".navbar").removeClass("navbar-fixed-top")
9167});
9168function init() {
9169    window.addEventListener("scroll", function(t) {
9170        var e = window.pageYOffset || document.documentElement.scrollTop
9171          , n = document.querySelector(".navbar");
9172        e > 560 ? classie.add(n, "smaller") : classie.has(n, "smaller") && classie.remove(n, "smaller")
9173    })
9174}
9175window.onload = init(),
9176function() {
9177    function t(t) {
9178        for (var e = -1, n = t.length, r = []; ++e < n; )
9179            r.push(t[e]);
9180        return r
9181    }
9182    function e(t) {
9183        return Array.prototype.slice.call(t)
9184    }
9185    function n() {}
9186    function r(t) {
9187        return t
9188    }
9189    function i() {
9190        return this
9191    }
9192    function o() {
9193        return !0
9194    }
9195    function a(t) {
9196        return "function" == typeof t ? t : function() {
9197            return t
9198        }
9199    }
9200    function s(t, e, n) {
9201        return function() {
9202            var r = n.apply(e, arguments);
9203            return arguments.length ? t : r
9204        }
9205    }
9206    function u(t) {
9207        return null != t && !isNaN(t)
9208    }
9209    function l(t) {
9210        return t.length
9211    }
9212    function c(t) {
9213        return null == t
9214    }
9215    function h(t) {
9216        return t.trim().replace(/\s+/g, " ")
9217    }
9218    function d(t) {
9219        for (var e = 1; t * e % 1; )
9220            e *= 10;
9221        return e
9222    }
9223    function f() {}
9224    function p(t) {
9225        function e() {
9226            for (var e, n = r, i = -1, o = n.length; ++i < o; )
9227                (e = n[i].on) && e.apply(this, arguments);
9228            return t
9229        }
9230        var r = []
9231          , i = new n;
9232        return e.on = function(e, n) {
9233            var o, a = i.get(e);
9234            return arguments.length < 2 ? a && a.on : (a && (a.on = null,
9235            r = r.slice(0, o = r.indexOf(a)).concat(r.slice(o + 1)),
9236            i.remove(e)),
9237            n && r.push(i.set(e, {
9238                on: n
9239            })),
9240            t)
9241        }
9242        ,
9243        e
9244    }
9245    function g(t, e) {
9246        return e - (t ? 1 + Math.floor(Math.log(t + Math.pow(10, 1 + Math.floor(Math.log(t) / Math.LN10) - e)) / Math.LN10) : 1)
9247    }
9248    function m(t) {
9249        return t + ""
9250    }
9251    function y(t) {
9252        for (var e = t.lastIndexOf("."), n = e >= 0 ? t.substring(e) : (e = t.length,
9253        ""), r = []; e > 0; )
9254            r.push(t.substring(e -= 3, e + 3));
9255        return r.reverse().join(",") + n
9256    }
9257    function v(t, e) {
9258        var n = Math.pow(10, 3 * Math.abs(8 - e));
9259        return {
9260            scale: e > 8 ? function(t) {
9261                return t / n
9262            }
9263            : function(t) {
9264                return t * n
9265            }
9266            ,
9267            symbol: t
9268        }
9269    }
9270    function b(t) {
9271        return function(e) {
9272            return e <= 0 ? 0 : e >= 1 ? 1 : t(e)
9273        }
9274    }
9275    function w(t) {
9276        return function(e) {
9277            return 1 - t(1 - e)
9278        }
9279    }
9280    function x(t) {
9281        return function(e) {
9282            return .5 * (e < .5 ? t(2 * e) : 2 - t(2 - 2 * e))
9283        }
9284    }
9285    function _(t) {
9286        return t
9287    }
9288    function C(t) {
9289        return function(e) {
9290            return Math.pow(e, t)
9291        }
9292    }
9293    function k(t) {
9294        return 1 - Math.cos(t * Math.PI / 2)
9295    }
9296    function j(t) {
9297        return Math.pow(2, 10 * (t - 1))
9298    }
9299    function T(t) {
9300        return 1 - Math.sqrt(1 - t * t)
9301    }
9302    function S(t, e) {
9303        var n;
9304        return arguments.length < 2 && (e = .45),
9305        arguments.length < 1 ? (t = 1,
9306        n = e / 4) : n = e / (2 * Math.PI) * Math.asin(1 / t),
9307        function(r) {
9308            return 1 + t * Math.pow(2, 10 * -r) * Math.sin(2 * (r - n) * Math.PI / e)
9309        }
9310    }
9311    function E(t) {
9312        return t || (t = 1.70158),
9313        function(e) {
9314            return e * e * ((t + 1) * e - t)
9315        }
9316    }
9317    function A(t) {
9318        return t < 1 / 2.75 ? 7.5625 * t * t : t < 2 / 2.75 ? 7.5625 * (t -= 1.5 / 2.75) * t + .75 : t < 2.5 / 2.75 ? 7.5625 * (t -= 2.25 / 2.75) * t + .9375 : 7.5625 * (t -= 2.625 / 2.75) * t + .984375
9319    }
9320    function M() {
9321        d3.event.stopPropagation(),
9322        d3.event.preventDefault()
9323    }
9324    function Q() {
9325        for (var t, e = d3.event; t = e.sourceEvent; )
9326            e = t;
9327        return e
9328    }
9329    function $(t) {
9330        for (var e = new f, n = 0, r = arguments.length; ++n < r; )
9331            e[arguments[n]] = p(e);
9332        return e.of = function(n, r) {
9333            return function(i) {
9334                try {
9335                    var o = i.sourceEvent = d3.event;
9336                    i.target = t,
9337                    d3.event = i,
9338                    e[i.type].apply(n, r)
9339                } finally {
9340                    d3.event = o
9341                }
9342            }
9343        }
9344        ,
9345        e
9346    }
9347    function D(t) {
9348        var e = [t.a, t.b]
9349          , n = [t.c, t.d]
9350          , r = N(e)
9351          , i = I(e, n)
9352          , o = N(F(n, e, -i)) || 0;
9353        e[0] * n[1] < n[0] * e[1] && (e[0] *= -1,
9354        e[1] *= -1,
9355        r *= -1,
9356        i *= -1),
9357        this.rotate = (r ? Math.atan2(e[1], e[0]) : Math.atan2(-n[0], n[1])) * ii,
9358        this.translate = [t.e, t.f],
9359        this.scale = [r, o],
9360        this.skew = o ? Math.atan2(i, o) * ii : 0
9361    }
9362    function I(t, e) {
9363        return t[0] * e[0] + t[1] * e[1]
9364    }
9365    function N(t) {
9366        var e = Math.sqrt(I(t, t));
9367        return e && (t[0] /= e,
9368        t[1] /= e),
9369        e
9370    }
9371    function F(t, e, n) {
9372        return t[0] += n * e[0],
9373        t[1] += n * e[1],
9374        t
9375    }
9376    function L(t) {
9377        return "transform" == t ? d3.interpolateTransform : d3.interpolate
9378    }
9379    function P(t, e) {
9380        return e = e - (t = +t) ? 1 / (e - t) : 0,
9381        function(n) {
9382            return (n - t) * e
9383        }
9384    }
9385    function O(t, e) {
9386        return e = e - (t = +t) ? 1 / (e - t) : 0,
9387        function(n) {
9388            return Math.max(0, Math.min(1, (n - t) * e))
9389        }
9390    }
9391    function q() {}
9392    function R(t, e, n) {
9393        return new z(t,e,n)
9394    }
9395    function z(t, e, n) {
9396        this.r = t,
9397        this.g = e,
9398        this.b = n
9399    }
9400    function H(t) {
9401        return t < 16 ? "0" + Math.max(0, t).toString(16) : Math.min(255, t).toString(16)
9402    }
9403    function B(t, e, n) {
9404        var r, i, o, a = 0, s = 0, u = 0;
9405        if (r = /([a-z]+)\((.*)\)/i.exec(t))
9406            switch (i = r[2].split(","),
9407            r[1]) {
9408            case "hsl":
9409                return n(parseFloat(i[0]), parseFloat(i[1]) / 100, parseFloat(i[2]) / 100);
9410            case "rgb":
9411                return e(K(i[0]), K(i[1]), K(i[2]))
9412            }
9413        return (o = ui.get(t)) ? e(o.r, o.g, o.b) : (null != t && "#" === t.charAt(0) && (4 === t.length ? (a = t.charAt(1),
9414        a += a,
9415        s = t.charAt(2),
9416        s += s,
9417        u = t.charAt(3),
9418        u += u) : 7 === t.length && (a = t.substring(1, 3),
9419        s = t.substring(3, 5),
9420        u = t.substring(5, 7)),
9421        a = parseInt(a, 16),
9422        s = parseInt(s, 16),
9423        u = parseInt(u, 16)),
9424        e(a, s, u))
9425    }
9426    function V(t, e, n) {
9427        var r, i, o = Math.min(t /= 255, e /= 255, n /= 255), a = Math.max(t, e, n), s = a - o, u = (a + o) / 2;
9428        return s ? (i = u < .5 ? s / (a + o) : s / (2 - a - o),
9429        r = t == a ? (e - n) / s + (e < n ? 6 : 0) : e == a ? (n - t) / s + 2 : (t - e) / s + 4,
9430        r *= 60) : i = r = 0,
9431        G(r, i, u)
9432    }
9433    function U(t, e, n) {
9434        t = W(t),
9435        e = W(e),
9436        n = W(n);
9437        var r = at((.4124564 * t + .3575761 * e + .1804375 * n) / di)
9438          , i = at((.2126729 * t + .7151522 * e + .072175 * n) / fi);
9439        return et(116 * i - 16, 500 * (r - i), 200 * (i - at((.0193339 * t + .119192 * e + .9503041 * n) / pi)))
9440    }
9441    function W(t) {
9442        return (t /= 255) <= .04045 ? t / 12.92 : Math.pow((t + .055) / 1.055, 2.4)
9443    }
9444    function K(t) {
9445        var e = parseFloat(t);
9446        return "%" === t.charAt(t.length - 1) ? Math.round(2.55 * e) : e
9447    }
9448    function G(t, e, n) {
9449        return new Y(t,e,n)
9450    }
9451    function Y(t, e, n) {
9452        this.h = t,
9453        this.s = e,
9454        this.l = n
9455    }
9456    function J(t, e, n) {
9457        function r(t) {
9458            return t > 360 ? t -= 360 : t < 0 && (t += 360),
9459            t < 60 ? o + (a - o) * t / 60 : t < 180 ? a : t < 240 ? o + (a - o) * (240 - t) / 60 : o
9460        }
9461        function i(t) {
9462            return Math.round(255 * r(t))
9463        }
9464        var o, a;
9465        return t %= 360,
9466        t < 0 && (t += 360),
9467        e = e < 0 ? 0 : e > 1 ? 1 : e,
9468        n = n < 0 ? 0 : n > 1 ? 1 : n,
9469        a = n <= .5 ? n * (1 + e) : n + e - n * e,
9470        o = 2 * n - a,
9471        R(i(t + 120), i(t), i(t - 120))
9472    }
9473    function X(t, e, n) {
9474        return new Z(t,e,n)
9475    }
9476    function Z(t, e, n) {
9477        this.h = t,
9478        this.c = e,
9479        this.l = n
9480    }
9481    function tt(t, e, n) {
9482        return et(n, Math.cos(t *= Math.PI / 180) * e, Math.sin(t) * e)
9483    }
9484    function et(t, e, n) {
9485        return new nt(t,e,n)
9486    }
9487    function nt(t, e, n) {
9488        this.l = t,
9489        this.a = e,
9490        this.b = n
9491    }
9492    function rt(t, e, n) {
9493        var r = (t + 16) / 116
9494          , i = r + e / 500
9495          , o = r - n / 200;
9496        return i = ot(i) * di,
9497        r = ot(r) * fi,
9498        o = ot(o) * pi,
9499        R(st(3.2404542 * i - 1.5371385 * r - .4985314 * o), st(-.969266 * i + 1.8760108 * r + .041556 * o), st(.0556434 * i - .2040259 * r + 1.0572252 * o))
9500    }
9501    function it(t, e, n) {
9502        return X(Math.atan2(n, e) / Math.PI * 180, Math.sqrt(e * e + n * n), t)
9503    }
9504    function ot(t) {
9505        return t > .206893034 ? t * t * t : (t - 4 / 29) / 7.787037
9506    }
9507    function at(t) {
9508        return t > .008856 ? Math.pow(t, 1 / 3) : 7.787037 * t + 4 / 29
9509    }
9510    function st(t) {
9511        return Math.round(255 * (t <= .00304 ? 12.92 * t : 1.055 * Math.pow(t, 1 / 2.4) - .055))
9512    }
9513    function ut(t) {
9514        return Br(t, xi),
9515        t
9516    }
9517    function lt(t) {
9518        return function() {
9519            return mi(t, this)
9520        }
9521    }
9522    function ct(t) {
9523        return function() {
9524            return yi(t, this)
9525        }
9526    }
9527    function ht(t, e) {
9528        function n() {
9529            this.removeAttribute(t)
9530        }
9531        function r() {
9532            this.removeAttributeNS(t.space, t.local)
9533        }
9534        function i() {
9535            this.setAttribute(t, e)
9536        }
9537        function o() {
9538            this.setAttributeNS(t.space, t.local, e)
9539        }
9540        function a() {
9541            var n = e.apply(this, arguments);
9542            null == n ? this.removeAttribute(t) : this.setAttribute(t, n)
9543        }
9544        function s() {
9545            var n = e.apply(this, arguments);
9546            null == n ? this.removeAttributeNS(t.space, t.local) : this.setAttributeNS(t.space, t.local, n)
9547        }
9548        return t = d3.ns.qualify(t),
9549        null == e ? t.local ? r : n : "function" == typeof e ? t.local ? s : a : t.local ? o : i
9550    }
9551    function dt(t) {
9552        return new RegExp("(?:^|\\s+)" + d3.requote(t) + "(?:\\s+|$)","g")
9553    }
9554    function ft(t, e) {
9555        function n() {
9556            for (var n = -1; ++n < i; )
9557                t[n](this, e)
9558        }
9559        function r() {
9560            for (var n = -1, r = e.apply(this, arguments); ++n < i; )
9561                t[n](this, r)
9562        }
9563        t = t.trim().split(/\s+/).map(pt);
9564        var i = t.length;
9565        return "function" == typeof e ? r : n
9566    }
9567    function pt(t) {
9568        var e = dt(t);
9569        return function(n, r) {
9570            if (i = n.classList)
9571                return r ? i.add(t) : i.remove(t);
9572            var i = n.className
9573              , o = null != i.baseVal
9574              , a = o ? i.baseVal : i;
9575            r ? (e.lastIndex = 0,
9576            e.test(a) || (a = h(a + " " + t),
9577            o ? i.baseVal = a : n.className = a)) : a && (a = h(a.replace(e, " ")),
9578            o ? i.baseVal = a : n.className = a)
9579        }
9580    }
9581    function gt(t, e, n) {
9582        function r() {
9583            this.style.removeProperty(t)
9584        }
9585        function i() {
9586            this.style.setProperty(t, e, n)
9587        }
9588        function o() {
9589            var r = e.apply(this, arguments);
9590            null == r ? this.style.removeProperty(t) : this.style.setProperty(t, r, n)
9591        }
9592        return null == e ? r : "function" == typeof e ? o : i
9593    }
9594    function mt(t, e) {
9595        function n() {
9596            delete this[t]
9597        }
9598        function r() {
9599            this[t] = e
9600        }
9601        function i() {
9602            var n = e.apply(this, arguments);
9603            null == n ? delete this[t] : this[t] = n
9604        }
9605        return null == e ? n : "function" == typeof e ? i : r
9606    }
9607    function yt(t) {
9608        return {
9609            __data__: t
9610        }
9611    }
9612    function vt(t) {
9613        return function() {
9614            return wi(this, t)
9615        }
9616    }
9617    function bt(t) {
9618        return arguments.length || (t = d3.ascending),
9619        function(e, n) {
9620            return t(e && e.__data__, n && n.__data__)
9621        }
9622    }
9623    function wt(t, e, n) {
9624        function r() {
9625            var e = this[o];
9626            e && (this.removeEventListener(t, e, e.$),
9627            delete this[o])
9628        }
9629        function i() {
9630            function i(t) {
9631                var n = d3.event;
9632                d3.event = t,
9633                s[0] = a.__data__;
9634                try {
9635                    e.apply(a, s)
9636                } finally {
9637                    d3.event = n
9638                }
9639            }
9640            var a = this
9641              , s = arguments;
9642            r.call(this),
9643            this.addEventListener(t, this[o] = i, i.$ = n),
9644            i._ = e
9645        }
9646        var o = "__on" + t
9647          , a = t.indexOf(".");
9648        return a > 0 && (t = t.substring(0, a)),
9649        e ? i : r
9650    }
9651    function xt(t, e) {
9652        for (var n = 0, r = t.length; n < r; n++)
9653            for (var i, o = t[n], a = 0, s = o.length; a < s; a++)
9654                (i = o[a]) && e(i, a, n);
9655        return t
9656    }
9657    function _t(t) {
9658        return Br(t, Ci),
9659        t
9660    }
9661    function Ct(t, e, r) {
9662        Br(t, ki);
9663        var i = new n
9664          , o = d3.dispatch("start", "end")
9665          , a = Mi;
9666        return t.id = e,
9667        t.time = r,
9668        t.tween = function(e, n) {
9669            return arguments.length < 2 ? i.get(e) : (null == n ? i.remove(e) : i.set(e, n),
9670            t)
9671        }
9672        ,
9673        t.ease = function(e) {
9674            return arguments.length ? (a = "function" == typeof e ? e : d3.ease.apply(d3, arguments),
9675            t) : a
9676        }
9677        ,
9678        t.each = function(e, n) {
9679            return arguments.length < 2 ? kt.call(t, e) : (o.on(e, n),
9680            t)
9681        }
9682        ,
9683        d3.timer(function(n) {
9684            return xt(t, function(t, s, u) {
9685                function l(n) {
9686                    return g.active > e ? h() : (g.active = e,
9687                    i.forEach(function(e, n) {
9688                        (n = n.call(t, m, s)) && d.push(n)
9689                    }),
9690                    o.start.call(t, m, s),
9691                    c(n) || d3.timer(c, 0, r),
9692                    1)
9693                }
9694                function c(n) {
9695                    if (g.active !== e)
9696                        return h();
9697                    for (var r = (n - f) / p, i = a(r), u = d.length; u > 0; )
9698                        d[--u].call(t, i);
9699                    return r >= 1 ? (h(),
9700                    Ti = e,
9701                    o.end.call(t, m, s),
9702                    Ti = 0,
9703                    1) : void 0
9704                }
9705                function h() {
9706                    return --g.count || delete t.__transition__,
9707                    1
9708                }
9709                var d = []
9710                  , f = t.delay
9711                  , p = t.duration
9712                  , g = (t = t.node).__transition__ || (t.__transition__ = {
9713                    active: 0,
9714                    count: 0
9715                })
9716                  , m = t.__data__;
9717                ++g.count,
9718                f <= n ? l(n) : d3.timer(l, f, r)
9719            })
9720        }, 0, r),
9721        t
9722    }
9723    function kt(t) {
9724        var e = Ti
9725          , n = Mi
9726          , r = Ei
9727          , i = Ai;
9728        return Ti = this.id,
9729        Mi = this.ease(),
9730        xt(this, function(e, n, r) {
9731            Ei = e.delay,
9732            Ai = e.duration,
9733            t.call(e = e.node, e.__data__, n, r)
9734        }),
9735        Ti = e,
9736        Mi = n,
9737        Ei = r,
9738        Ai = i,
9739        this
9740    }
9741    function jt(t, e, n) {
9742        return "" != n && Di
9743    }
9744    function Tt(t, e) {
9745        return d3.tween(t, L(e))
9746    }
9747    function St() {
9748        for (var t, e = Date.now(), n = Fi; n; )
9749            t = e - n.then,
9750            t >= n.delay && (n.flush = n.callback(t)),
9751            n = n.next;
9752        var r = Et() - e;
9753        r > 24 ? (isFinite(r) && (clearTimeout($i),
9754        $i = setTimeout(St, r)),
9755        Qi = 0) : (Qi = 1,
9756        Li(St))
9757    }
9758    function Et() {
9759        for (var t = null, e = Fi, n = 1 / 0; e; )
9760            e.flush ? (delete Ni[e.callback.id],
9761            e = t ? t.next = e.next : Fi = e.next) : (n = Math.min(n, e.then + e.delay),
9762            e = (t = e).next);
9763        return n
9764    }
9765    function At(t, e) {
9766        var n = t.ownerSVGElement || t;
9767        if (n.createSVGPoint) {
9768            var r = n.createSVGPoint();
9769            if (Pi < 0 && (window.scrollX || window.scrollY)) {
9770                n = d3.select(document.body).append("svg").style("position", "absolute").style("top", 0).style("left", 0);
9771                var i = n[0][0].getScreenCTM();
9772                Pi = !(i.f || i.e),
9773                n.remove()
9774            }
9775            return Pi ? (r.x = e.pageX,
9776            r.y = e.pageY) : (r.x = e.clientX,
9777            r.y = e.clientY),
9778            r = r.matrixTransform(t.getScreenCTM().inverse()),
9779            [r.x, r.y]
9780        }
9781        var o = t.getBoundingClientRect();
9782        return [e.clientX - o.left - t.clientLeft, e.clientY - o.top - t.clientTop]
9783    }
9784    function Mt(t) {
9785        var e = t[0]
9786          , n = t[t.length - 1];
9787        return e < n ? [e, n] : [n, e]
9788    }
9789    function Qt(t) {
9790        return t.rangeExtent ? t.rangeExtent() : Mt(t.range())
9791    }
9792    function $t(t, e) {
9793        var n, r = 0, i = t.length - 1, o = t[r], a = t[i];
9794        return a < o && (n = r,
9795        r = i,
9796        i = n,
9797        n = o,
9798        o = a,
9799        a = n),
9800        (e = e(a - o)) && (t[r] = e.floor(o),
9801        t[i] = e.ceil(a)),
9802        t
9803    }
9804    function Dt() {
9805        return Math
9806    }
9807    function It(t, e, n, r) {
9808        function i() {
9809            var i = Math.min(t.length, e.length) > 2 ? Rt : qt
9810              , u = r ? O : P;
9811            return a = i(t, e, u, n),
9812            s = i(e, t, u, d3.interpolate),
9813            o
9814        }
9815        function o(t) {
9816            return a(t)
9817        }
9818        var a, s;
9819        return o.invert = function(t) {
9820            return s(t)
9821        }
9822        ,
9823        o.domain = function(e) {
9824            return arguments.length ? (t = e.map(Number),
9825            i()) : t
9826        }
9827        ,
9828        o.range = function(t) {
9829            return arguments.length ? (e = t,
9830            i()) : e
9831        }
9832        ,
9833        o.rangeRound = function(t) {
9834            return o.range(t).interpolate(d3.interpolateRound)
9835        }
9836        ,
9837        o.clamp = function(t) {
9838            return arguments.length ? (r = t,
9839            i()) : r
9840        }
9841        ,
9842        o.interpolate = function(t) {
9843            return arguments.length ? (n = t,
9844            i()) : n
9845        }
9846        ,
9847        o.ticks = function(e) {
9848            return Pt(t, e)
9849        }
9850        ,
9851        o.tickFormat = function(e) {
9852            return Ot(t, e)
9853        }
9854        ,
9855        o.nice = function() {
9856            return $t(t, Ft),
9857            i()
9858        }
9859        ,
9860        o.copy = function() {
9861            return It(t, e, n, r)
9862        }
9863        ,
9864        i()
9865    }
9866    function Nt(t, e) {
9867        return d3.rebind(t, e, "range", "rangeRound", "interpolate", "clamp")
9868    }
9869    function Ft(t) {
9870        return (t = Math.pow(10, Math.round(Math.log(t) / Math.LN10) - 1)) && {
9871            floor: function(e) {
9872                return Math.floor(e / t) * t
9873            },
9874            ceil: function(e) {
9875                return Math.ceil(e / t) * t
9876            }
9877        }
9878    }
9879    function Lt(t, e) {
9880        var n = Mt(t)
9881          , r = n[1] - n[0]
9882          , i = Math.pow(10, Math.floor(Math.log(r / e) / Math.LN10))
9883          , o = e / r * i;
9884        return o <= .15 ? i *= 10 : o <= .35 ? i *= 5 : o <= .75 && (i *= 2),
9885        n[0] = Math.ceil(n[0] / i) * i,
9886        n[1] = Math.floor(n[1] / i) * i + .5 * i,
9887        n[2] = i,
9888        n
9889    }
9890    function Pt(t, e) {
9891        return d3.range.apply(d3, Lt(t, e))
9892    }
9893    function Ot(t, e) {
9894        return d3.format(",." + Math.max(0, -Math.floor(Math.log(Lt(t, e)[2]) / Math.LN10 + .01)) + "f")
9895    }
9896    function qt(t, e, n, r) {
9897        var i = n(t[0], t[1])
9898          , o = r(e[0], e[1]);
9899        return function(t) {
9900            return o(i(t))
9901        }
9902    }
9903    function Rt(t, e, n, r) {
9904        var i = []
9905          , o = []
9906          , a = 0
9907          , s = Math.min(t.length, e.length) - 1;
9908        for (t[s] < t[0] && (t = t.slice().reverse(),
9909        e = e.slice().reverse()); ++a <= s; )
9910            i.push(n(t[a - 1], t[a])),
9911            o.push(r(e[a - 1], e[a]));
9912        return function(e) {
9913            var n = d3.bisect(t, e, 1, s) - 1;
9914            return o[n](i[n](e))
9915        }
9916    }
9917    function zt(t, e) {
9918        function n(n) {
9919            return t(e(n))
9920        }
9921        var r = e.pow;
9922        return n.invert = function(e) {
9923            return r(t.invert(e))
9924        }
9925        ,
9926        n.domain = function(i) {
9927            return arguments.length ? (e = i[0] < 0 ? Bt : Ht,
9928            r = e.pow,
9929            t.domain(i.map(e)),
9930            n) : t.domain().map(r)
9931        }
9932        ,
9933        n.nice = function() {
9934            return t.domain($t(t.domain(), Dt)),
9935            n
9936        }
9937        ,
9938        n.ticks = function() {
9939            var n = Mt(t.domain())
9940              , i = [];
9941            if (n.every(isFinite)) {
9942                var o = Math.floor(n[0])
9943                  , a = Math.ceil(n[1])
9944                  , s = r(n[0])
9945                  , u = r(n[1]);
9946                if (e === Bt)
9947                    for (i.push(r(o)); o++ < a; )
9948                        for (var l = 9; l > 0; l--)
vendor: 17,606 bytes, lines 9949-10589
9949                            i.push(r(o) * l);
9950                else {
9951                    for (; o < a; o++)
9952                        for (var l = 1; l < 10; l++)
9953                            i.push(r(o) * l);
9954                    i.push(r(o))
9955                }
9956                for (o = 0; i[o] < s; o++)
9957                    ;
9958                for (a = i.length; i[a - 1] > u; a--)
9959                    ;
9960                i = i.slice(o, a)
9961            }
9962            return i
9963        }
9964        ,
9965        n.tickFormat = function(t, i) {
9966            if (arguments.length < 2 && (i = Oi),
9967            arguments.length < 1)
9968                return i;
9969            var o, a = Math.max(.1, t / n.ticks().length), s = e === Bt ? (o = -1e-12,
9970            Math.floor) : (o = 1e-12,
9971            Math.ceil);
9972            return function(t) {
9973                return t / r(s(e(t) + o)) <= a ? i(t) : ""
9974            }
9975        }
9976        ,
9977        n.copy = function() {
9978            return zt(t.copy(), e)
9979        }
9980        ,
9981        Nt(n, t)
9982    }
9983    function Ht(t) {
9984        return Math.log(t < 0 ? 0 : t) / Math.LN10
9985    }
9986    function Bt(t) {
9987        return -Math.log(t > 0 ? 0 : -t) / Math.LN10
9988    }
9989    function Vt(t, e) {
9990        function n(e) {
9991            return t(r(e))
9992        }
9993        var r = Ut(e)
9994          , i = Ut(1 / e);
9995        return n.invert = function(e) {
9996            return i(t.invert(e))
9997        }
9998        ,
9999        n.domain = function(e) {
10000            return arguments.length ? (t.domain(e.map(r)),
10001            n) : t.domain().map(i)
10002        }
10003        ,
10004        n.ticks = function(t) {
10005            return Pt(n.domain(), t)
10006        }
10007        ,
10008        n.tickFormat = function(t) {
10009            return Ot(n.domain(), t)
10010        }
10011        ,
10012        n.nice = function() {
10013            return n.domain($t(n.domain(), Ft))
10014        }
10015        ,
10016        n.exponent = function(t) {
10017            if (!arguments.length)
10018                return e;
10019            var o = n.domain();
10020            return r = Ut(e = t),
10021            i = Ut(1 / e),
10022            n.domain(o)
10023        }
10024        ,
10025        n.copy = function() {
10026            return Vt(t.copy(), e)
10027        }
10028        ,
10029        Nt(n, t)
10030    }
10031    function Ut(t) {
10032        return function(e) {
10033            return e < 0 ? -Math.pow(-e, t) : Math.pow(e, t)
10034        }
10035    }
10036    function Wt(t, e) {
10037        function r(e) {
10038            return a[((o.get(e) || o.set(e, t.push(e))) - 1) % a.length]
10039        }
10040        function i(e, n) {
10041            return d3.range(t.length).map(function(t) {
10042                return e + n * t
10043            })
10044        }
10045        var o, a, s;
10046        return r.domain = function(i) {
10047            if (!arguments.length)
10048                return t;
10049            t = [],
10050            o = new n;
10051            for (var a, s = -1, u = i.length; ++s < u; )
10052                o.has(a = i[s]) || o.set(a, t.push(a));
10053            return r[e.t].apply(r, e.a)
10054        }
10055        ,
10056        r.range = function(t) {
10057            return arguments.length ? (a = t,
10058            s = 0,
10059            e = {
10060                t: "range",
10061                a: arguments
10062            },
10063            r) : a
10064        }
10065        ,
10066        r.rangePoints = function(n, o) {
10067            arguments.length < 2 && (o = 0);
10068            var u = n[0]
10069              , l = n[1]
10070              , c = (l - u) / (Math.max(1, t.length - 1) + o);
10071            return a = i(t.length < 2 ? (u + l) / 2 : u + c * o / 2, c),
10072            s = 0,
10073            e = {
10074                t: "rangePoints",
10075                a: arguments
10076            },
10077            r
10078        }
10079        ,
10080        r.rangeBands = function(n, o, u) {
10081            arguments.length < 2 && (o = 0),
10082            arguments.length < 3 && (u = o);
10083            var l = n[1] < n[0]
10084              , c = n[l - 0]
10085              , h = n[1 - l]
10086              , d = (h - c) / (t.length - o + 2 * u);
10087            return a = i(c + d * u, d),
10088            l && a.reverse(),
10089            s = d * (1 - o),
10090            e = {
10091                t: "rangeBands",
10092                a: arguments
10093            },
10094            r
10095        }
10096        ,
10097        r.rangeRoundBands = function(n, o, u) {
10098            arguments.length < 2 && (o = 0),
10099            arguments.length < 3 && (u = o);
10100            var l = n[1] < n[0]
10101              , c = n[l - 0]
10102              , h = n[1 - l]
10103              , d = Math.floor((h - c) / (t.length - o + 2 * u))
10104              , f = h - c - (t.length - o) * d;
10105            return a = i(c + Math.round(f / 2), d),
10106            l && a.reverse(),
10107            s = Math.round(d * (1 - o)),
10108            e = {
10109                t: "rangeRoundBands",
10110                a: arguments
10111            },
10112            r
10113        }
10114        ,
10115        r.rangeBand = function() {
10116            return s
10117        }
10118        ,
10119        r.rangeExtent = function() {
10120            return Mt(e.a[0])
10121        }
10122        ,
10123        r.copy = function() {
10124            return Wt(t, e)
10125        }
10126        ,
10127        r.domain(t)
10128    }
10129    function Kt(t, e) {
10130        function n() {
10131            var n = 0
10132              , o = (t.length,
10133            e.length);
10134            for (i = []; ++n < o; )
10135                i[n - 1] = d3.quantile(t, n / o);
10136            return r
10137        }
10138        function r(t) {
10139            return isNaN(t = +t) ? NaN : e[d3.bisect(i, t)]
10140        }
10141        var i;
10142        return r.domain = function(e) {
10143            return arguments.length ? (t = e.filter(function(t) {
10144                return !isNaN(t)
10145            }).sort(d3.ascending),
10146            n()) : t
10147        }
10148        ,
10149        r.range = function(t) {
10150            return arguments.length ? (e = t,
10151            n()) : e
10152        }
10153        ,
10154        r.quantiles = function() {
10155            return i
10156        }
10157        ,
10158        r.copy = function() {
10159            return Kt(t, e)
10160        }
10161        ,
10162        n()
10163    }
10164    function Gt(t, e, n) {
10165        function r(e) {
10166            return n[Math.max(0, Math.min(a, Math.floor(o * (e - t))))]
10167        }
10168        function i() {
10169            return o = n.length / (e - t),
10170            a = n.length - 1,
10171            r
10172        }
10173        var o, a;
10174        return r.domain = function(n) {
10175            return arguments.length ? (t = +n[0],
10176            e = +n[n.length - 1],
10177            i()) : [t, e]
10178        }
10179        ,
10180        r.range = function(t) {
10181            return arguments.length ? (n = t,
10182            i()) : n
10183        }
10184        ,
10185        r.copy = function() {
10186            return Gt(t, e, n)
10187        }
10188        ,
10189        i()
10190    }
10191    function Yt(t, e) {
10192        function n(n) {
10193            return e[d3.bisect(t, n)]
10194        }
10195        return n.domain = function(e) {
10196            return arguments.length ? (t = e,
10197            n) : t
10198        }
10199        ,
10200        n.range = function(t) {
10201            return arguments.length ? (e = t,
10202            n) : e
10203        }
10204        ,
10205        n.copy = function() {
10206            return Yt(t, e)
10207        }
10208        ,
10209        n
10210    }
10211    function Jt(t) {
10212        function e(t) {
10213            return +t
10214        }
10215        return e.invert = e,
10216        e.domain = e.range = function(n) {
10217            return arguments.length ? (t = n.map(e),
10218            e) : t
10219        }
10220        ,
10221        e.ticks = function(e) {
10222            return Pt(t, e)
10223        }
10224        ,
10225        e.tickFormat = function(e) {
10226            return Ot(t, e)
10227        }
10228        ,
10229        e.copy = function() {
10230            return Jt(t)
10231        }
10232        ,
10233        e
10234    }
10235    function Xt(t) {
10236        return t.innerRadius
10237    }
10238    function Zt(t) {
10239        return t.outerRadius
10240    }
10241    function te(t) {
10242        return t.startAngle
10243    }
10244    function ee(t) {
10245        return t.endAngle
10246    }
10247    function ne(t) {
10248        function e(e) {
10249            function o() {
10250                c.push("M", s(t(h), l))
10251            }
10252            for (var u, c = [], h = [], d = -1, f = e.length, p = a(n), g = a(r); ++d < f; )
10253                i.call(this, u = e[d], d) ? h.push([+p.call(this, u, d), +g.call(this, u, d)]) : h.length && (o(),
10254                h = []);
10255            return h.length && o(),
10256            c.length ? c.join("") : null
10257        }
10258        var n = re
10259          , r = ie
10260          , i = o
10261          , s = oe
10262          , u = s.key
10263          , l = .7;
10264        return e.x = function(t) {
10265            return arguments.length ? (n = t,
10266            e) : n
10267        }
10268        ,
10269        e.y = function(t) {
10270            return arguments.length ? (r = t,
10271            e) : r
10272        }
10273        ,
10274        e.defined = function(t) {
10275            return arguments.length ? (i = t,
10276            e) : i
10277        }
10278        ,
10279        e.interpolate = function(t) {
10280            return arguments.length ? (u = "function" == typeof t ? s = t : (s = Ui.get(t) || oe).key,
10281            e) : u
10282        }
10283        ,
10284        e.tension = function(t) {
10285            return arguments.length ? (l = t,
10286            e) : l
10287        }
10288        ,
10289        e
10290    }
10291    function re(t) {
10292        return t[0]
10293    }
10294    function ie(t) {
10295        return t[1]
10296    }
10297    function oe(t) {
10298        return t.join("L")
10299    }
10300    function ae(t) {
10301        return oe(t) + "Z"
10302    }
10303    function se(t) {
10304        for (var e = 0, n = t.length, r = t[0], i = [r[0], ",", r[1]]; ++e < n; )
10305            i.push("V", (r = t[e])[1], "H", r[0]);
10306        return i.join("")
10307    }
10308    function ue(t) {
10309        for (var e = 0, n = t.length, r = t[0], i = [r[0], ",", r[1]]; ++e < n; )
10310            i.push("H", (r = t[e])[0], "V", r[1]);
10311        return i.join("")
10312    }
10313    function le(t, e) {
10314        return t.length < 4 ? oe(t) : t[1] + de(t.slice(1, t.length - 1), fe(t, e))
10315    }
10316    function ce(t, e) {
10317        return t.length < 3 ? oe(t) : t[0] + de((t.push(t[0]),
10318        t), fe([t[t.length - 2]].concat(t, [t[1]]), e))
10319    }
10320    function he(t, e, n) {
10321        return t.length < 3 ? oe(t) : t[0] + de(t, fe(t, e))
10322    }
10323    function de(t, e) {
10324        if (e.length < 1 || t.length != e.length && t.length != e.length + 2)
10325            return oe(t);
10326        var n = t.length != e.length
10327          , r = ""
10328          , i = t[0]
10329          , o = t[1]
10330          , a = e[0]
10331          , s = a
10332          , u = 1;
10333        if (n && (r += "Q" + (o[0] - 2 * a[0] / 3) + "," + (o[1] - 2 * a[1] / 3) + "," + o[0] + "," + o[1],
10334        i = t[1],
10335        u = 2),
10336        e.length > 1) {
10337            s = e[1],
10338            o = t[u],
10339            u++,
10340            r += "C" + (i[0] + a[0]) + "," + (i[1] + a[1]) + "," + (o[0] - s[0]) + "," + (o[1] - s[1]) + "," + o[0] + "," + o[1];
10341            for (var l = 2; l < e.length; l++,
10342            u++)
10343                o = t[u],
10344                s = e[l],
10345                r += "S" + (o[0] - s[0]) + "," + (o[1] - s[1]) + "," + o[0] + "," + o[1]
10346        }
10347        if (n) {
10348            var c = t[u];
10349            r += "Q" + (o[0] + 2 * s[0] / 3) + "," + (o[1] + 2 * s[1] / 3) + "," + c[0] + "," + c[1]
10350        }
10351        return r
10352    }
10353    function fe(t, e) {
10354        for (var n, r = [], i = (1 - e) / 2, o = t[0], a = t[1], s = 1, u = t.length; ++s < u; )
10355            n = o,
10356            o = a,
10357            a = t[s],
10358            r.push([i * (a[0] - n[0]), i * (a[1] - n[1])]);
10359        return r
10360    }
10361    function pe(t) {
10362        if (t.length < 3)
10363            return oe(t);
10364        var e = 1
10365          , n = t.length
10366          , r = t[0]
10367          , i = r[0]
10368          , o = r[1]
10369          , a = [i, i, i, (r = t[1])[0]]
10370          , s = [o, o, o, r[1]]
10371          , u = [i, ",", o];
10372        for (be(u, a, s); ++e < n; )
10373            r = t[e],
10374            a.shift(),
10375            a.push(r[0]),
10376            s.shift(),
10377            s.push(r[1]),
10378            be(u, a, s);
10379        for (e = -1; ++e < 2; )
10380            a.shift(),
10381            a.push(r[0]),
10382            s.shift(),
10383            s.push(r[1]),
10384            be(u, a, s);
10385        return u.join("")
10386    }
10387    function ge(t) {
10388        if (t.length < 4)
10389            return oe(t);
10390        for (var e, n = [], r = -1, i = t.length, o = [0], a = [0]; ++r < 3; )
10391            e = t[r],
10392            o.push(e[0]),
10393            a.push(e[1]);
10394        for (n.push(ve(Gi, o) + "," + ve(Gi, a)),
10395        --r; ++r < i; )
10396            e = t[r],
10397            o.shift(),
10398            o.push(e[0]),
10399            a.shift(),
10400            a.push(e[1]),
10401            be(n, o, a);
10402        return n.join("")
10403    }
10404    function me(t) {
10405        for (var e, n, r = -1, i = t.length, o = i + 4, a = [], s = []; ++r < 4; )
10406            n = t[r % i],
10407            a.push(n[0]),
10408            s.push(n[1]);
10409        for (e = [ve(Gi, a), ",", ve(Gi, s)],
10410        --r; ++r < o; )
10411            n = t[r % i],
10412            a.shift(),
10413            a.push(n[0]),
10414            s.shift(),
10415            s.push(n[1]),
10416            be(e, a, s);
10417        return e.join("")
10418    }
10419    function ye(t, e) {
10420        var n = t.length - 1;
10421        if (n)
10422            for (var r, i, o = t[0][0], a = t[0][1], s = t[n][0] - o, u = t[n][1] - a, l = -1; ++l <= n; )
10423                r = t[l],
10424                i = l / n,
10425                r[0] = e * r[0] + (1 - e) * (o + i * s),
10426                r[1] = e * r[1] + (1 - e) * (a + i * u);
10427        return pe(t)
10428    }
10429    function ve(t, e) {
10430        return t[0] * e[0] + t[1] * e[1] + t[2] * e[2] + t[3] * e[3]
10431    }
10432    function be(t, e, n) {
10433        t.push("C", ve(Wi, e), ",", ve(Wi, n), ",", ve(Ki, e), ",", ve(Ki, n), ",", ve(Gi, e), ",", ve(Gi, n))
10434    }
10435    function we(t, e) {
10436        return (e[1] - t[1]) / (e[0] - t[0])
10437    }
10438    function xe(t) {
10439        for (var e = 0, n = t.length - 1, r = [], i = t[0], o = t[1], a = r[0] = we(i, o); ++e < n; )
10440            r[e] = (a + (a = we(i = o, o = t[e + 1]))) / 2;
10441        return r[e] = a,
10442        r
10443    }
10444    function _e(t) {
10445        for (var e, n, r, i, o = [], a = xe(t), s = -1, u = t.length - 1; ++s < u; )
10446            e = we(t[s], t[s + 1]),
10447            Math.abs(e) < 1e-6 ? a[s] = a[s + 1] = 0 : (n = a[s] / e,
10448            r = a[s + 1] / e,
10449            (i = n * n + r * r) > 9 && (i = 3 * e / Math.sqrt(i),
10450            a[s] = i * n,
10451            a[s + 1] = i * r));
10452        for (s = -1; ++s <= u; )
10453            i = (t[Math.min(u, s + 1)][0] - t[Math.max(0, s - 1)][0]) / (6 * (1 + a[s] * a[s])),
10454            o.push([i || 0, a[s] * i || 0]);
10455        return o
10456    }
10457    function Ce(t) {
10458        return t.length < 3 ? oe(t) : t[0] + de(t, _e(t))
10459    }
10460    function ke(t) {
10461        for (var e, n, r, i = -1, o = t.length; ++i < o; )
10462            e = t[i],
10463            n = e[0],
10464            r = e[1] + Bi,
10465            e[0] = n * Math.cos(r),
10466            e[1] = n * Math.sin(r);
10467        return t
10468    }
10469    function je(t) {
10470        function e(e) {
10471            function o() {
10472                m.push("M", l(t(v), f), d, h(t(y.reverse()), f), "Z")
10473            }
10474            for (var c, p, g, m = [], y = [], v = [], b = -1, w = e.length, x = a(n), _ = a(i), C = n === r ? function() {
10475                return p
10476            }
10477            : a(r), k = i === s ? function() {
10478                return g
10479            }
10480            : a(s); ++b < w; )
10481                u.call(this, c = e[b], b) ? (y.push([p = +x.call(this, c, b), g = +_.call(this, c, b)]),
10482                v.push([+C.call(this, c, b), +k.call(this, c, b)])) : y.length && (o(),
10483                y = [],
10484                v = []);
10485            return y.length && o(),
10486            m.length ? m.join("") : null
10487        }
10488        var n = re
10489          , r = re
10490          , i = 0
10491          , s = ie
10492          , u = o
10493          , l = oe
10494          , c = l.key
10495          , h = l
10496          , d = "L"
10497          , f = .7;
10498        return e.x = function(t) {
10499            return arguments.length ? (n = r = t,
10500            e) : r
10501        }
10502        ,
10503        e.x0 = function(t) {
10504            return arguments.length ? (n = t,
10505            e) : n
10506        }
10507        ,
10508        e.x1 = function(t) {
10509            return arguments.length ? (r = t,
10510            e) : r
10511        }
10512        ,
10513        e.y = function(t) {
10514            return arguments.length ? (i = s = t,
10515            e) : s
10516        }
10517        ,
10518        e.y0 = function(t) {
10519            return arguments.length ? (i = t,
10520            e) : i
10521        }
10522        ,
10523        e.y1 = function(t) {
10524            return arguments.length ? (s = t,
10525            e) : s
10526        }
10527        ,
10528        e.defined = function(t) {
10529            return arguments.length ? (u = t,
10530            e) : u
10531        }
10532        ,
10533        e.interpolate = function(t) {
10534            return arguments.length ? (c = "function" == typeof t ? l = t : (l = Ui.get(t) || oe).key,
10535            h = l.reverse || l,
10536            d = l.closed ? "M" : "L",
10537            e) : c
10538        }
10539        ,
10540        e.tension = function(t) {
10541            return arguments.length ? (f = t,
10542            e) : f
10543        }
10544        ,
10545        e
10546    }
10547    function Te(t) {
10548        return t.source
10549    }
10550    function Se(t) {
10551        return t.target
10552    }
10553    function Ee(t) {
10554        return t.radius
10555    }
10556    function Ae(t) {
10557        return [t.x, t.y]
10558    }
10559    function Me(t) {
10560        return function() {
10561            var e = t.apply(this, arguments)
10562              , n = e[0]
10563              , r = e[1] + Bi;
10564            return [n * Math.cos(r), n * Math.sin(r)]
10565        }
10566    }
10567    function Qe() {
10568        return 64
10569    }
10570    function $e() {
10571        return "circle"
10572    }
10573    function De(t) {
10574        var e = Math.sqrt(t / Math.PI);
10575        return "M0," + e + "A" + e + "," + e + " 0 1,1 0," + -e + "A" + e + "," + e + " 0 1,1 0," + e + "Z"
10576    }
10577    function Ie(t, e) {
10578        t.attr("transform", function(t) {
10579            return "translate(" + e(t) + ",0)"
10580        })
10581    }
10582    function Ne(t, e) {
10583        t.attr("transform", function(t) {
10584            return "translate(0," + e(t) + ")"
10585        })
10586    }
10587    function Fe(t, e, n) {
10588        if (r = [],
10589        n && e.length > 1) {
10590            for (var r, i, o, a = Mt(t.domain()), s = -1, u = e.length, l = (e[1] - e[0]) / ++n; ++s < u; )
10591                for (i = n; --i > 0; )
10592                    (o = +e[s] - i * l) >= a[0] && r.push(o);
10593            for (--s,
10594            i = 0; ++i < n && (o = +e[s] + i * l) < a[1]; )
10595                r.push(o)
10596        }
10597        return r
10598    }
10599    function Le() {
10600        eo || (eo = d3.select("body").append("div").style("visibility", "hidden").style("top", 0).style("height", 0).style("width", 0).style("overflow-y", "scroll").append("div").style("height", "2000px").node().parentNode);
10601        var t, e = d3.event;
10602        try {
10603            eo.scrollTop = 1e3,
10604            eo.dispatchEvent(e),
10605            t = 1e3 - eo.scrollTop
10606        } catch (n) {
10607            t = e.wheelDelta || 5 * -e.detail
10608        }
10609        return t
10610    }
10611    function Pe(t) {
10612        for (var e = t.source, n = t.target, r = qe(e, n), i = [e]; e !== r; )
10613            e = e.parent,
10614            i.push(e);
10615        for (var o = i.length; n !== r; )
10616            i.splice(o, 0, n),
10617            n = n.parent;
10618        return i
10619    }
10620    function Oe(t) {
10621        for (var e = [], n = t.parent; null != n; )
10622            e.push(t),
10623            t = n,
10624            n = n.parent;
10625        return e.push(t),
10626        e
10627    }
10628    function qe(t, e) {
10629        if (t === e)
10630            return t;
10631        for (var n = Oe(t), r = Oe(e), i = n.pop(), o = r.pop(), a = null; i === o; )
10632            a = i,
10633            i = n.pop(),
10634            o = r.pop();
10635        return a
10636    }
10637    function Re(t) {
10638        t.fixed |= 2
10639    }
10640    function ze(t) {
10641        t.fixed &= 1
10642    }
10643    function He(t) {
10644        t.fixed |= 4
10645    }
10646    function Be(t) {
10647        t.fixed &= 3
10648    }
10649    function Ve(t, e, n) {
10650        var r = 0
10651          , i = 0;
10652        if (t.charge = 0,
10653        !t.leaf)
10654            for (var o, a = t.nodes, s = a.length, u = -1; ++u < s; )
10655                null != (o = a[u]) && (Ve(o, e, n),
10656                t.charge += o.charge,
10657                r += o.charge * o.cx,
10658                i += o.charge * o.cy);
10659        if (t.point) {
10660            t.leaf || (t.point.x += Math.random() - .5,
10661            t.point.y += Math.random() - .5);
10662            var l = e * n[t.point.index];
10663            t.charge += t.pointCharge = l,
10664            r += l * t.point.x,
10665            i += l * t.point.y
10666        }
10667        t.cx = r / t.charge,
10668        t.cy = i / t.charge
10669    }
10670    function Ue(t) {
10671        return 20
10672    }
10673    function We(t) {
10674        return 1
10675    }
10676    function Ke(t) {
10677        return t.x
10678    }
10679    function Ge(t) {
10680        return t.y
10681    }
10682    function Ye(t, e, n) {
10683        t.y0 = e,
10684        t.y = n
10685    }
10686    function Je(t) {
10687        return d3.range(t.length)
10688    }
10689    function Xe(t) {
10690        for (var e = -1, n = t[0].length, r = []; ++e < n; )
10691            r[e] = 0;
10692        return r
10693    }
10694    function Ze(t) {
10695        for (var e, n = 1, r = 0, i = t[0][1], o = t.length; n < o; ++n)
10696            (e = t[n][1]) > i && (r = n,
10697            i = e);
10698        return r
10699    }
10700    function tn(t) {
10701        return t.reduce(en, 0)
10702    }
10703    function en(t, e) {
10704        return t + e[1]
10705    }
10706    function nn(t, e) {
10707        return rn(t, Math.ceil(Math.log(e.length) / Math.LN2 + 1))
10708    }
10709    function rn(t, e) {
10710        for (var n = -1, r = +t[0], i = (t[1] - r) / e, o = []; ++n <= e; )
10711            o[n] = i * n + r;
10712        return o
10713    }
10714    function on(t) {
10715        return [d3.min(t), d3.max(t)]
10716    }
10717    function an(t, e) {
10718        return d3.rebind(t, e, "sort", "children", "value"),
10719        t.links = cn,
10720        t.nodes = function(e) {
10721            return ao = !0,
10722            (t.nodes = t)(e)
10723        }
10724        ,
10725        t
10726    }
10727    function sn(t) {
10728        return t.children
10729    }
10730    function un(t) {
10731        return t.value
10732    }
10733    function ln(t, e) {
10734        return e.value - t.value
10735    }
10736    function cn(t) {
10737        return d3.merge(t.map(function(t) {
10738            return (t.children || []).map(function(e) {
10739                return {
10740                    source: t,
10741                    target: e
10742                }
10743            })
10744        }))
10745    }
10746    function hn(t, e) {
10747        return t.value - e.value
10748    }
10749    function dn(t, e) {
10750        var n = t._pack_next;
10751        t._pack_next = e,
10752        e._pack_prev = t,
10753        e._pack_next = n,
10754        n._pack_prev = e
10755    }
10756    function fn(t, e) {
10757        t._pack_next = e,
10758        e._pack_prev = t
10759    }
10760    function pn(t, e) {
10761        var n = e.x - t.x
vendor: 6,030 bytes, lines 10762-10977
10762          , r = e.y - t.y
10763          , i = t.r + e.r;
10764        return i * i - n * n - r * r > .001
10765    }
10766    function gn(t) {
10767        function e(t) {
10768            c = Math.min(t.x - t.r, c),
10769            h = Math.max(t.x + t.r, h),
10770            d = Math.min(t.y - t.r, d),
10771            f = Math.max(t.y + t.r, f)
10772        }
10773        if ((n = t.children) && (l = n.length)) {
10774            var n, r, i, o, a, s, u, l, c = 1 / 0, h = -1 / 0, d = 1 / 0, f = -1 / 0;
10775            if (n.forEach(mn),
10776            r = n[0],
10777            r.x = -r.r,
10778            r.y = 0,
10779            e(r),
10780            l > 1 && (i = n[1],
10781            i.x = i.r,
10782            i.y = 0,
10783            e(i),
10784            l > 2))
10785                for (o = n[2],
10786                bn(r, i, o),
10787                e(o),
10788                dn(r, o),
10789                r._pack_prev = o,
10790                dn(o, i),
10791                i = r._pack_next,
10792                a = 3; a < l; a++) {
10793                    bn(r, i, o = n[a]);
10794                    var p = 0
10795                      , g = 1
10796                      , m = 1;
10797                    for (s = i._pack_next; s !== i; s = s._pack_next,
10798                    g++)
10799                        if (pn(s, o)) {
10800                            p = 1;
10801                            break
10802                        }
10803                    if (1 == p)
10804                        for (u = r._pack_prev; u !== s._pack_prev && !pn(u, o); u = u._pack_prev,
10805                        m++)
10806                            ;
10807                    p ? (g < m || g == m && i.r < r.r ? fn(r, i = s) : fn(r = u, i),
10808                    a--) : (dn(r, o),
10809                    i = o,
10810                    e(o))
10811                }
10812            var y = (c + h) / 2
10813              , v = (d + f) / 2
10814              , b = 0;
10815            for (a = 0; a < l; a++)
10816                o = n[a],
10817                o.x -= y,
10818                o.y -= v,
10819                b = Math.max(b, o.r + Math.sqrt(o.x * o.x + o.y * o.y));
10820            t.r = b,
10821            n.forEach(yn)
10822        }
10823    }
10824    function mn(t) {
10825        t._pack_next = t._pack_prev = t
10826    }
10827    function yn(t) {
10828        delete t._pack_next,
10829        delete t._pack_prev
10830    }
10831    function vn(t, e, n, r) {
10832        var i = t.children;
10833        if (t.x = e += r * t.x,
10834        t.y = n += r * t.y,
10835        t.r *= r,
10836        i)
10837            for (var o = -1, a = i.length; ++o < a; )
10838                vn(i[o], e, n, r)
10839    }
10840    function bn(t, e, n) {
10841        var r = t.r + n.r
10842          , i = e.x - t.x
10843          , o = e.y - t.y;
10844        if (r && (i || o)) {
10845            var a = e.r + n.r
10846              , s = i * i + o * o;
10847            a *= a,
10848            r *= r;
10849            var u = .5 + (r - a) / (2 * s)
10850              , l = Math.sqrt(Math.max(0, 2 * a * (r + s) - (r -= s) * r - a * a)) / (2 * s);
10851            n.x = t.x + u * i + l * o,
10852            n.y = t.y + u * o - l * i
10853        } else
10854            n.x = t.x + r,
10855            n.y = t.y
10856    }
10857    function wn(t) {
10858        return 1 + d3.max(t, function(t) {
10859            return t.y
10860        })
10861    }
10862    function xn(t) {
10863        return t.reduce(function(t, e) {
10864            return t + e.x
10865        }, 0) / t.length
10866    }
10867    function _n(t) {
10868        var e = t.children;
10869        return e && e.length ? _n(e[0]) : t
10870    }
10871    function Cn(t) {
10872        var e, n = t.children;
10873        return n && (e = n.length) ? Cn(n[e - 1]) : t
10874    }
10875    function kn(t, e) {
10876        return t.parent == e.parent ? 1 : 2
10877    }
10878    function jn(t) {
10879        var e = t.children;
10880        return e && e.length ? e[0] : t._tree.thread
10881    }
10882    function Tn(t) {
10883        var e, n = t.children;
10884        return n && (e = n.length) ? n[e - 1] : t._tree.thread
10885    }
10886    function Sn(t, e) {
10887        var n = t.children;
10888        if (n && (i = n.length))
10889            for (var r, i, o = -1; ++o < i; )
10890                e(r = Sn(n[o], e), t) > 0 && (t = r);
10891        return t
10892    }
10893    function En(t, e) {
10894        return t.x - e.x
10895    }
10896    function An(t, e) {
10897        return e.x - t.x
10898    }
10899    function Mn(t, e) {
10900        return t.depth - e.depth
10901    }
10902    function Qn(t, e) {
10903        function n(t, r) {
10904            var i = t.children;
10905            if (i && (a = i.length))
10906                for (var o, a, s = null, u = -1; ++u < a; )
10907                    o = i[u],
10908                    n(o, s),
10909                    s = o;
10910            e(t, r)
10911        }
10912        n(t, null)
10913    }
10914    function $n(t) {
10915        for (var e, n = 0, r = 0, i = t.children, o = i.length; --o >= 0; )
10916            e = i[o]._tree,
10917            e.prelim += n,
10918            e.mod += n,
10919            n += e.shift + (r += e.change)
10920    }
10921    function Dn(t, e, n) {
10922        t = t._tree,
10923        e = e._tree;
10924        var r = n / (e.number - t.number);
10925        t.change += r,
10926        e.change -= r,
10927        e.shift += n,
10928        e.prelim += n,
10929        e.mod += n
10930    }
10931    function In(t, e, n) {
10932        return t._tree.ancestor.parent == e.parent ? t._tree.ancestor : n
10933    }
10934    function Nn(t) {
10935        return {
10936            x: t.x,
10937            y: t.y,
10938            dx: t.dx,
10939            dy: t.dy
10940        }
10941    }
10942    function Fn(t, e) {
10943        var n = t.x + e[3]
10944          , r = t.y + e[0]
10945          , i = t.dx - e[1] - e[3]
10946          , o = t.dy - e[0] - e[2];
10947        return i < 0 && (n += i / 2,
10948        i = 0),
10949        o < 0 && (r += o / 2,
10950        o = 0),
10951        {
10952            x: n,
10953            y: r,
10954            dx: i,
10955            dy: o
10956        }
10957    }
10958    function Ln(t, e) {
10959        function n(t, r) {
10960            d3.text(t, e, function(t) {
10961                r(t && n.parse(t))
10962            })
10963        }
10964        function r(e) {
10965            return e.map(i).join(t)
10966        }
10967        function i(t) {
10968            return a.test(t) ? '"' + t.replace(/\"/g, '""') + '"' : t
10969        }
10970        var o = new RegExp("\r\n|[" + t + "\r\n]","g")
10971          , a = new RegExp('["' + t + "\n]")
10972          , s = t.charCodeAt(0);
10973        return n.parse = function(t) {
10974            var e;
10975            return n.parseRows(t, function(t, n) {
10976                if (n) {
10977                    for (var r = {}
10977, i = -1, o = e.length; ++i < o; )
10978                        r[e[i]] = t[i];
10979                    return r
10980                }
10981                return e = t,
10982                null
10983            })
10984        }
10985        ,
10986        n.parseRows = function(t, e) {
10987            function n() {
10988                if (o.lastIndex >= t.length)
10989                    return u;
10990                if (i)
10991                    return i = !1,
10992                    a;
10993                var e = o.lastIndex;
10994                if (34 === t.charCodeAt(e)) {
10995                    for (var n = e; n++ < t.length; )
10996                        if (34 === t.charCodeAt(n)) {
10997                            if (34 !== t.charCodeAt(n + 1))
10998                                break;
10999                            n++
11000                        }
11001                    o.lastIndex = n + 2;
11002                    var r = t.charCodeAt(n + 1);
11003                    return 13 === r ? (i = !0,
11004                    10 === t.charCodeAt(n + 2) && o.lastIndex++) : 10 === r && (i = !0),
11005                    t.substring(e + 1, n).replace(/""/g, '"')
11006                }
11007                var l = o.exec(t);
11008                return l ? (i = l[0].charCodeAt(0) !== s,
11009                t.substring(e, l.index)) : (o.lastIndex = t.length,
11010                t.substring(e))
11011            }
11012            var r, i, a = {}, u = {}, l = [], c = 0;
11013            for (o.lastIndex = 0; (r = n()) !== u; ) {
11014                for (var h = []; r !== a && r !== u; )
11015                    h.push(r),
11016                    r = n();
11017                e && !(h = e(h, c++)) || l.push(h)
11018            }
11019            return l
11020        }
11021        ,
11022        n.format = function(t) {
11023            return t.map(r).join("\n")
11024        }
11025        ,
11026        n
11027    }
11028    function Pn(t, e) {
11029        return function(n) {
11030            return n && t.hasOwnProperty(n.type) ? t[n.type](n) : e
11031        }
11032    }
11033    function On(t) {
11034        return "m0," + t + "a" + t + "," + t + " 0 1,1 0," + -2 * t + "a" + t + "," + t + " 0 1,1 0," + 2 * t + "z"
11035    }
11036    function qn(t, e) {
11037        uo.hasOwnProperty(t.type) && uo[t.type](t, e)
11038    }
11039    function Rn(t, e) {
11040        qn(t.geometry, e)
11041    }
11042    function zn(t, e) {
11043        for (var n = t.features, r = 0, i = n.length; r < i; r++)
11044            qn(n[r].geometry, e)
11045    }
11046    function Hn(t, e) {
11047        for (var n = t.geometries, r = 0, i = n.length; r < i; r++)
11048            qn(n[r], e)
11049    }
11050    function Bn(t, e) {
11051        for (var n = t.coordinates, r = 0, i = n.length; r < i; r++)
11052            e.apply(null, n[r])
11053    }
11054    function Vn(t, e) {
11055        for (var n = t.coordinates, r = 0, i = n.length; r < i; r++)
11056            for (var o = n[r], a = 0, s = o.length; a < s; a++)
11057                e.apply(null, o[a])
11058    }
11059    function Un(t, e) {
11060        for (var n = t.coordinates, r = 0, i = n.length; r < i; r++)
11061            for (var o = n[r][0], a = 0, s = o.length; a < s; a++)
11062                e.apply(null, o[a])
11063    }
11064    function Wn(t, e) {
11065        e.apply(null, t.coordinates)
11066    }
11067    function Kn(t, e) {
11068        for (var n = t.coordinates[0], r = 0, i = n.length; r < i; r++)
11069            e.apply(null, n[r])
11070    }
11071    function Gn(t) {
11072        return t.source
11073    }
11074    function Yn(t) {
11075        return t.target
11076    }
11077    function Jn() {
11078        function t(t) {
11079            var e = Math.sin(t *= f) * p
11080              , n = Math.sin(f - t) * p
11081              , r = n * o + e * h
11082              , s = n * a + e * d
11083              , u = n * i + e * c;
11084            return [Math.atan2(s, r) / so, Math.atan2(u, Math.sqrt(r * r + s * s)) / so]
11085        }
11086        var e, n, r, i, o, a, s, u, l, c, h, d, f, p;
11087        return t.distance = function() {
11088            return null == f && (p = 1 / Math.sin(f = Math.acos(Math.max(-1, Math.min(1, i * c + r * l * Math.cos(s - e)))))),
11089            f
11090        }
11091        ,
11092        t.source = function(s) {
11093            var u = Math.cos(e = s[0] * so)
11094              , l = Math.sin(e);
11095            return r = Math.cos(n = s[1] * so),
11096            i = Math.sin(n),
11097            o = r * u,
11098            a = r * l,
11099            f = null,
11100            t
11101        }
11102        ,
11103        t.target = function(e) {
11104            var n = Math.cos(s = e[0] * so)
11105              , r = Math.sin(s);
11106            return l = Math.cos(u = e[1] * so),
11107            c = Math.sin(u),
11108            h = l * n,
11109            d = l * r,
11110            f = null,
11111            t
11112        }
11113        ,
11114        t
11115    }
11116    function Xn(t, e) {
11117        var n = Jn().source(t).target(e);
11118        return n.distance(),
11119        n
11120    }
11121    function Zn(t) {
11122        for (var e = 0, n = 0; ; ) {
11123            if (t(e, n))
11124                return [e, n];
11125            0 === e ? (e = n + 1,
11126            n = 0) : (e -= 1,
11127            n += 1)
11128        }
11129    }
11130    function tr(t, e, n, r) {
11131        var i, o, a, s, u, l;
11132        return i = r[t],
11133        o = i[0],
11134        a = i[1],
11135        i = r[e],
11136        s = i[0],
11137        u = i[1],
11138        i = r[n],
11139        l = i[0],
11140        (i[1] - a) * (s - o) - (u - a) * (l - o) > 0
11141    }
11142    function er(t, e, n) {
11143        return (n[0] - e[0]) * (t[1] - e[1]) < (n[1] - e[1]) * (t[0] - e[0])
11144    }
11145    function nr(t, e, n, r) {
11146        var i = t[0]
11147          , o = e[0]
11148          , a = n[0]
11149          , s = r[0]
11150          , u = t[1]
11151          , l = e[1]
11152          , c = n[1]
11153          , h = r[1]
11154          , d = i - a
11155          , f = o - i
11156          , p = s - a
11157          , g = u - c
11158          , m = l - u
11159          , y = h - c
11160          , v = (p * g - y * d) / (y * f - p * m);
11161        return [i + v * f, u + v * m]
11162    }
11163    function rr(t, e) {
11164        var n = {
11165            list: t.map(function(t, e) {
11166                return {
11167                    index: e,
11168                    x: t[0],
11169                    y: t[1]
11170                }
11171            }).sort(function(t, e) {
11172                return t.y < e.y ? -1 : t.y > e.y ? 1 : t.x < e.x ? -1 : t.x > e.x ? 1 : 0
11173            }),
11174            bottomSite: null
11175        }
11176          , r = {
11177            list: [],
11178            leftEnd: null,
11179            rightEnd: null,
11180            init: function() {
11181                r.leftEnd = r.createHalfEdge(null, "l"),
11182                r.rightEnd = r.createHalfEdge(null, "l"),
11183                r.leftEnd.r = r.rightEnd,
11184                r.rightEnd.l = r.leftEnd,
11185                r.list.unshift(r.leftEnd, r.rightEnd)
11186            },
11187            createHalfEdge: function(t, e) {
11188                return {
11189                    edge: t,
11190                    side: e,
11191                    vertex: null,
11192                    l: null,
11193                    r: null
11194                }
11195            },
11196            insert: function(t, e) {
11197                e.l = t,
11198                e.r = t.r,
11199                t.r.l = e,
11200                t.r = e
11201            },
11202            leftBound: function(t) {
11203                var e = r.leftEnd;
11204                do {
11205                    e = e.r
11206                } while (e != r.rightEnd && i.rightOf(e, t));
11207                return e = e.l
11208            },
11209            del: function(t) {
11210                t.l.r = t.r,
11211                t.r.l = t.l,
11212                t.edge = null
11213            },
11214            right: function(t) {
11215                return t.r
11216            },
11217            left: function(t) {
11218                return t.l
11219            },
11220            leftRegion: function(t) {
11221                return null == t.edge ? n.bottomSite : t.edge.region[t.side]
11222            },
11223            rightRegion: function(t) {
11224                return null == t.edge ? n.bottomSite : t.edge.region[ho[t.side]]
11225            }
11226        }
11227          , i = {
11228            bisect: function(t, e) {
11229                var n = {
11230                    region: {
11231                        l: t,
11232                        r: e
11233                    },
11234                    ep: {
11235                        l: null,
11236                        r: null
11237                    }
11238                }
11239                  , r = e.x - t.x
11240                  , i = e.y - t.y
11241                  , o = r > 0 ? r : -r
11242                  , a = i > 0 ? i : -i;
11243                return n.c = t.x * r + t.y * i + .5 * (r * r + i * i),
11244                o > a ? (n.a = 1,
11245                n.b = i / r,
11246                n.c /= r) : (n.b = 1,
11247                n.a = r / i,
11248                n.c /= i),
11249                n
11250            },
11251            intersect: function(t, e) {
11252                var n = t.edge
11253                  , r = e.edge;
11254                if (!n || !r || n.region.r == r.region.r)
11255                    return null;
11256                var i = n.a * r.b - n.b * r.a;
11257                if (Math.abs(i) < 1e-10)
11258                    return null;
11259                var o, a, s = (n.c * r.b - r.c * n.b) / i, u = (r.c * n.a - n.c * r.a) / i, l = n.region.r, c = r.region.r;
11260                l.y < c.y || l.y == c.y && l.x < c.x ? (o = t,
11261                a = n) : (o = e,
11262                a = r);
11263                var h = s >= a.region.r.x;
11264                return h && "l" === o.side || !h && "r" === o.side ? null : {
11265                    x: s,
11266                    y: u
11267                }
11268            },
11269            rightOf: function(t, e) {
11270                var n = t.edge
11271                  , r = n.region.r
11272                  , i = e.x > r.x;
11273                if (i && "l" === t.side)
11274                    return 1;
11275                if (!i && "r" === t.side)
11276                    return 0;
11277                if (1 === n.a) {
11278                    var o = e.y - r.y
11279                      , a = e.x - r.x
11280                      , s = 0
11281                      , u = 0;
11282                    if (!i && n.b < 0 || i && n.b >= 0 ? u = s = o >= n.b * a : (u = e.x + e.y * n.b > n.c,
11283                    n.b < 0 && (u = !u),
11284                    u || (s = 1)),
11285                    !s) {
11286                        var l = r.x - n.region.l.x;
11287                        u = n.b * (a * a - o * o) < l * o * (1 + 2 * a / l + n.b * n.b),
11288                        n.b < 0 && (u = !u)
11289                    }
11290                } else {
11291                    var c = n.c - n.a * e.x
11292                      , h = e.y - c
11293                      , d = e.x - r.x
11294                      , f = c - r.y;
11295                    u = h * h > d * d + f * f
11296                }
11297                return "l" === t.side ? u : !u
11298            },
11299            endPoint: function(t, n, r) {
11300                t.ep[n] = r,
11301                t.ep[ho[n]] && e(t)
11302            },
11303            distance: function(t, e) {
11304                var n = t.x - e.x
11305                  , r = t.y - e.y;
11306                return Math.sqrt(n * n + r * r)
11307            }
11308        }
11309          , o = {
11310            list: [],
11311            insert: function(t, e, n) {
11312                t.vertex = e,
11313                t.ystar = e.y + n;
11314                for (var r = 0, i = o.list, a = i.length; r < a; r++) {
11315                    var s = i[r];
11316                    if (!(t.ystar > s.ystar || t.ystar == s.ystar && e.x > s.vertex.x))
11317                        break
11318                }
11319                i.splice(r, 0, t)
11320            },
11321            del: function(t) {
11322                for (var e = 0, n = o.list, r = n.length; e < r && n[e] != t; ++e)
11323                    ;
11324                n.splice(e, 1)
11325            },
11326            empty: function() {
11327                return 0 === o.list.length
11328            },
11329            nextEvent: function(t) {
11330                for (var e = 0, n = o.list, r = n.length; e < r; ++e)
11331                    if (n[e] == t)
11332                        return n[e + 1];
11333                return null
11334            },
11335            min: function() {
11336                var t = o.list[0];
11337                return {
11338                    x: t.vertex.x,
11339                    y: t.ystar
11340                }
11341            },
11342            extractMin: function() {
11343                return o.list.shift()
11344            }
11345        };
11346        r.init(),
11347        n.bottomSite = n.list.shift();
11348        for (var a, s, u, l, c, h, d, f, p, g, m, y, v, b = n.list.shift(); ; )
11349            if (o.empty() || (a = o.min()),
11350            b && (o.empty() || b.y < a.y || b.y == a.y && b.x < a.x))
11351                s = r.leftBound(b),
11352                u = r.right(s),
11353                d = r.rightRegion(s),
11354                y = i.bisect(d, b),
11355                h = r.createHalfEdge(y, "l"),
11356                r.insert(s, h),
11357                g = i.intersect(s, h),
11358                g && (o.del(s),
11359                o.insert(s, g, i.distance(g, b))),
11360                s = h,
11361                h = r.createHalfEdge(y, "r"),
11362                r.insert(s, h),
11363                g = i.intersect(h, u),
11364                g && o.insert(h, g, i.distance(g, b)),
11365                b = n.list.shift();
11366            else {
11367                if (o.empty())
11368                    break;
11369                s = o.extractMin(),
11370                l = r.left(s),
11371                u = r.right(s),
11372                c = r.right(u),
11373                d = r.leftRegion(s),
11374                f = r.rightRegion(u),
11375                m = s.vertex,
11376                i.endPoint(s.edge, s.side, m),
11377                i.endPoint(u.edge, u.side, m),
11378                r.del(s),
11379                o.del(u),
11380                r.del(u),
11381                v = "l",
11382                d.y > f.y && (p = d,
11383                d = f,
11384                f = p,
11385                v = "r"),
11386                y = i.bisect(d, f),
11387                h = r.createHalfEdge(y, v),
11388                r.insert(l, h),
11389                i.endPoint(y, ho[v], m),
11390                g = i.intersect(l, h),
11391                g && (o.del(l),
11392                o.insert(l, g, i.distance(g, d))),
11393                (g = i.intersect(h, c)) && o.insert(h, g, i.distance(g, d))
11394            }
11395        for (s = r.right(r.leftEnd); s != r.rightEnd; s = r.right(s))
11396            e(s.edge)
11397    }
11398    function ir() {
11399        return {
11400            leaf: !0,
11401            nodes: [],
11402            point: null
11403        }
11404    }
11405    function or(t, e, n, r, i, o) {
11406        if (!t(e, n, r, i, o)) {
11407            var a = .5 * (n + i)
11408              , s = .5 * (r + o)
11409              , u = e.nodes;
11410            u[0] && or(t, u[0], n, r, a, s),
11411            u[1] && or(t, u[1], a, r, i, s),
11412            u[2] && or(t, u[2], n, s, a, o),
11413            u[3] && or(t, u[3], a, s, i, o)
11414        }
11415    }
11416    function ar(t) {
11417        return {
11418            x: t[0],
11419            y: t[1]
11420        }
11421    }
11422    function sr() {
11423        this._ = new Date(arguments.length > 1 ? Date.UTC.apply(this, arguments) : arguments[0])
11424    }
11425    function ur(t) {
11426        return t.substring(0, 3)
11427    }
11428    function lr(t, e, n, r) {
11429        for (var i, o, a = 0, s = e.length, u = n.length; a < s; ) {
11430            if (r >= u)
11431                return -1;
11432            if (37 == (i = e.charCodeAt(a++))) {
11433                if (!(o = Qo[e.charAt(a++)]) || (r = o(t, n, r)) < 0)
11434                    return -1
11435            } else if (i != n.charCodeAt(r++))
11436                return -1
11437        }
11438        return r
11439    }
11440    function cr(t) {
11441        return new RegExp("^(?:" + t.map(d3.requote).join("|") + ")","i")
11442    }
11443    function hr(t) {
11444        for (var e = new n, r = -1, i = t.length; ++r < i; )
11445            e.set(t[r].toLowerCase(), r);
11446        return e
11447    }
11448    function dr(t, e, n) {
11449        jo.lastIndex = 0;
11450        var r = jo.exec(e.substring(n));
11451        return r ? n += r[0].length : -1
11452    }
11453    function fr(t, e, n) {
11454        ko.lastIndex = 0;
11455        var r = ko.exec(e.substring(n));
11456        return r ? n += r[0].length : -1
11457    }
11458    function pr(t, e, n) {
11459        Eo.lastIndex = 0;
11460        var r = Eo.exec(e.substring(n));
11461        return r ? (t.m = Ao.get(r[0].toLowerCase()),
11462        n += r[0].length) : -1
11463    }
11464    function gr(t, e, n) {
11465        To.lastIndex = 0;
11466        var r = To.exec(e.substring(n));
11467        return r ? (t.m = So.get(r[0].toLowerCase()),
11468        n += r[0].length) : -1
11469    }
11470    function mr(t, e, n) {
11471        return lr(t, Mo.c.toString(), e, n)
11472    }
11473    function yr(t, e, n) {
11474        return lr(t, Mo.x.toString(), e, n)
11475    }
11476    function vr(t, e, n) {
11477        return lr(t, Mo.X.toString(), e, n)
11478    }
11479    function br(t, e, n) {
11480        $o.lastIndex = 0;
11481        var r = $o.exec(e.substring(n, n + 4));
11482        return r ? (t.y = +r[0],
11483        n += r[0].length) : -1
11484    }
11485    function wr(t, e, n) {
11486        $o.lastIndex = 0;
11487        var r = $o.exec(e.substring(n, n + 2));
11488        return r ? (t.y = xr(+r[0]),
11489        n += r[0].length) : -1
11490    }
11491    function xr(t) {
11492        return t + (t > 68 ? 1900 : 2e3)
11493    }
11494    function _r(t, e, n) {
11495        $o.lastIndex = 0;
11496        var r = $o.exec(e.substring(n, n + 2));
11497        return r ? (t.m = r[0] - 1,
11498        n += r[0].length) : -1
11499    }
11500    function Cr(t, e, n) {
11501        $o.lastIndex = 0;
11502        var r = $o.exec(e.substring(n, n + 2));
11503        return r ? (t.d = +r[0],
11504        n += r[0].length) : -1
11505    }
11506    function kr(t, e, n) {
11507        $o.lastIndex = 0;
11508        var r = $o.exec(e.substring(n, n + 2));
11509        return r ? (t.H = +r[0],
11510        n += r[0].length) : -1
11511    }
11512    function jr(t, e, n) {
11513        $o.lastIndex = 0;
11514        var r = $o.exec(e.substring(n, n + 2));
11515        return r ? (t.M = +r[0],
11516        n += r[0].length) : -1
11517    }
11518    function Tr(t, e, n) {
11519        $o.lastIndex = 0;
11520        var r = $o.exec(e.substring(n, n + 2));
11521        return r ? (t.S = +r[0],
11522        n += r[0].length) : -1
11523    }
11524    function Sr(t, e, n) {
11525        $o.lastIndex = 0;
11526        var r = $o.exec(e.substring(n, n + 3));
11527        return r ? (t.L = +r[0],
11528        n += r[0].length) : -1
11529    }
11530    function Er(t, e, n) {
11531        var r = Do.get(e.substring(n, n += 2).toLowerCase());
11532        return null == r ? -1 : (t.p = r,
11533        n)
11534    }
11535    function Ar(t) {
11536        var e = t.getTimezoneOffset()
11537          , n = e > 0 ? "-" : "+"
11538          , r = ~~(Math.abs(e) / 60)
11539          , i = Math.abs(e) % 60;
11540        return n + wo(r) + wo(i)
11541    }
11542    function Mr(t) {
11543        return t.toISOString()
11544    }
11545    function Qr(t, e, n) {
11546        function r(e) {
11547            var n = t(e)
11548              , r = o(n, 1);
11549            return e - n < r - e ? n : r
11550        }
11551        function i(n) {
11552            return e(n = t(new fo(n - 1)), 1),
11553            n
11554        }
11555        function o(t, n) {
11556            return e(t = new fo(+t), n),
11557            t
11558        }
11559        function a(t, r, o) {
11560            var a = i(t)
11561              , s = [];
11562            if (o > 1)
11563                for (; a < r; )
11564                    n(a) % o || s.push(new Date(+a)),
11565                    e(a, 1);
11566            else
11567                for (; a < r; )
11568                    s.push(new Date(+a)),
11569                    e(a, 1);
11570            return s
11571        }
11572        function s(t, e, n) {
11573            try {
11574                fo = sr;
11575                var r = new sr;
11576                return r._ = t,
11577                a(r, e, n)
11578            } finally {
11579                fo = Date
11580            }
11581        }
11582        t.floor = t,
11583        t.round = r,
11584        t.ceil = i,
11585        t.offset = o,
11586        t.range = a;
11587        var u = t.utc = $r(t);
11588        return u.floor = u,
11589        u.round = $r(r),
11590        u.ceil = $r(i),
11591        u.offset = $r(o),
11592        u.range = s,
11593        t
11594    }
11595    function $r(t) {
11596        return function(e, n) {
11597            try {
11598                fo = sr;
11599                var r = new sr;
11600                return r._ = e,
11601                t(r, n)._
11602            } finally {
11603                fo = Date
11604            }
11605        }
11606    }
11607    function Dr(t, e, n) {
11608        function r(e) {
11609            return t(e)
11610        }
11611        return r.invert = function(e) {
11612            return Nr(t.invert(e))
11613        }
11614        ,
11615        r.domain = function(e) {
11616            return arguments.length ? (t.domain(e),
11617            r) : t.domain().map(Nr)
11618        }
11619        ,
11620        r.nice = function(t) {
11621            return r.domain($t(r.domain(), function() {
11622                return t
11623            }))
11624        }
11625        ,
11626        r.ticks = function(n, i) {
11627            var o = Ir(r.domain());
11628            if ("function" != typeof n) {
11629                var a = o[1] - o[0]
11630                  , s = a / n
11631                  , u = d3.bisect(No, s);
11632                if (u == No.length)
11633                    return e.year(o, n);
11634                if (!u)
11635                    return t.ticks(n).map(Nr);
11636                Math.log(s / No[u - 1]) < Math.log(No[u] / s) && --u,
11637                n = e[u],
11638                i = n[1],
11639                n = n[0].range
11640            }
11641            return n(o[0], new Date(+o[1] + 1), i)
11642        }
11643        ,
11644        r.tickFormat = function() {
11645            return n
11646        }
11647        ,
11648        r.copy = function() {
11649            return Dr(t.copy(), e, n)
11650        }
11651        ,
11652        d3.rebind(r, t, "range", "rangeRound", "interpolate", "clamp")
11653    }
11654    function Ir(t) {
11655        var e = t[0]
11656          , n = t[t.length - 1];
11657        return e < n ? [e, n] : [n, e]
11658    }
11659    function Nr(t) {
11660        return new Date(t)
11661    }
11662    function Fr(t) {
11663        return function(e) {
11664            for (var n = t.length - 1, r = t[n]; !r[1](e); )
11665                r = t[--n];
11666            return r[0](e)
11667        }
11668    }
11669    function Lr(t) {
11670        var e = new Date(t,0,1);
11671        return e.setFullYear(t),
11672        e
11673    }
11674    function Pr(t) {
11675        var e = t.getFullYear()
11676          , n = Lr(e);
11677        return e + (t - n) / (Lr(e + 1) - n)
11678    }
11679    function Or(t) {
11680        var e = new Date(Date.UTC(t, 0, 1));
11681        return e.setUTCFullYear(t),
11682        e
11683    }
11684    function qr(t) {
11685        var e = t.getUTCFullYear()
11686          , n = Or(e);
11687        return e + (t - n) / (Or(e + 1) - n)
11688    }
11689    Date.now || (Date.now = function() {
11690        return +new Date
11691    }
11692    );
11693    try {
11694        document.createElement("div").style.setProperty("opacity", 0, "")
11695    } catch (t) {
11696        var Rr = CSSStyleDeclaration.prototype
11697          , zr = Rr.setProperty;
11698        Rr.setProperty = function(t, e, n) {
11699            zr.call(this, t, e + "", n)
11700        }
11701    }
11702    d3 = {
11703        version: "2.10.3"
11704    };
11705    var Hr = e;
11706    try {
11707        Hr(document.documentElement.childNodes)[0].nodeType
11708    } catch (e) {
11709        Hr = t
11710    }
11711    var Br = [].__proto__ ? function(t, e) {
11712        t.__proto__ = e
11713    }
11714    : function(t, e) {
11715        for (var n in e)
11716            t[n] = e[n]
11717    }
11718    ;
11719    d3.map = function(t) {
11720        var e = new n;
11721        for (var r in t)
11722            e.set(r, t[r]);
11723        return e
11724    }
11725    ,
11726    function(t, e) {
11727        try {
11728            for (var n in e)
11729                Object.defineProperty(t.prototype, n, {
11730                    value: e[n],
11731                    enumerable: !1
11732                })
11733        } catch (n) {
11734            t.prototype = e
11735        }
11736    }(n, {
11737        has: function(t) {
11738            return Vr + t in this
11739        },
11740        get: function(t) {
11741            return this[Vr + t]
11742        },
11743        set: function(t, e) {
11744            return this[Vr + t] = e
11745        },
11746        remove: function(t) {
11747            return (t = Vr + t)in this && delete this[t]
11748        },
11749        keys: function() {
11750            var t = [];
11751            return this.forEach(function(e) {
11752                t.push(e)
11753            }),
11754            t
11755        },
11756        values: function() {
11757            var t = [];
11758            return this.forEach(function(e, n) {
11759                t.push(n)
11760            }),
11761            t
11762        },
11763        entries: function() {
11764            var t = [];
11765            return this.forEach(function(e, n) {
11766                t.push({
11767                    key: e,
11768                    value: n
11769                })
11770            }),
11771            t
11772        },
11773        forEach: function(t) {
11774            for (var e in this)
11775                e.charCodeAt(0) === Ur && t.call(this, e.substring(1), this[e])
11776        }
11777    });
11778    var Vr = "\0"
11779      , Ur = Vr.charCodeAt(0);
11780    d3.functor = a,
11781    d3.rebind = function(t, e) {
11782        for (var n, r = 1, i = arguments.length; ++r < i; )
11783            t[n = arguments[r]] = s(t, e, e[n]);
11784        return t
11785    }
11786    ,
11787    d3.ascending = function(t, e) {
11788        return t < e ? -1 : t > e ? 1 : t >= e ? 0 : NaN
11789    }
11790    ,
11791    d3.descending = function(t, e) {
11792        return e < t ? -1 : e > t ? 1 : e >= t ? 0 : NaN
11793    }
11794    ,
11795    d3.mean = function(t, e) {
11796        var n, r = t.length, i = 0, o = -1, a = 0;
11797        if (1 === arguments.length)
11798            for (; ++o < r; )
11799                u(n = t[o]) && (i += (n - i) / ++a);
11800        else
11801            for (; ++o < r; )
11802                u(n = e.call(t, t[o], o)) && (i += (n - i) / ++a);
11803        return a ? i : void 0
11804    }
11805    ,
11806    d3.median = function(t, e) {
11807        return arguments.length > 1 && (t = t.map(e)),
11808        t = t.filter(u),
11809        t.length ? d3.quantile(t.sort(d3.ascending), .5) : void 0
11810    }
11811    ,
11812    d3.min = function(t, e) {
11813        var n, r, i = -1, o = t.length;
11814        if (1 === arguments.length) {
11815            for (; ++i < o && (null == (n = t[i]) || n != n); )
11816                n = void 0;
11817            for (; ++i < o; )
11818                null != (r = t[i]) && n > r && (n = r)
11819        } else {
11820            for (; ++i < o && (null == (n = e.call(t, t[i], i)) || n != n); )
11821                n = void 0;
11822            for (; ++i < o; )
11823                null != (r = e.call(t, t[i], i)) && n > r && (n = r)
11824        }
11825        return n
11826    }
11827    ,
11828    d3.max = function(t, e) {
11829        var n, r, i = -1, o = t.length;
11830        if (1 === arguments.length) {
11831            for (; ++i < o && (null == (n = t[i]) || n != n); )
11832                n = void 0;
11833            for (; ++i < o; )
11834                null != (r = t[i]) && r > n && (n = r)
11835        } else {
11836            for (; ++i < o && (null == (n = e.call(t, t[i], i)) || n != n); )
11837                n = void 0;
11838            for (; ++i < o; )
11839                null != (r = e.call(t, t[i], i)) && r > n && (n = r)
11840        }
11841        return n
11842    }
11843    ,
11844    d3.extent = function(t, e) {
11845        var n, r, i, o = -1, a = t.length;
11846        if (1 === arguments.length) {
11847            for (; ++o < a && (null == (n = i = t[o]) || n != n); )
11848                n = i = void 0;
11849            for (; ++o < a; )
11850                null != (r = t[o]) && (n > r && (n = r),
11851                i < r && (i = r))
11852        } else {
11853            for (; ++o < a && (null == (n = i = e.call(t, t[o], o)) || n != n); )
11854                n = void 0;
11855            for (; ++o < a; )
11856                null != (r = e.call(t, t[o], o)) && (n > r && (n = r),
11857                i < r && (i = r))
11858        }
11859        return [n, i]
11860    }
11861    ,
11862    d3.random = {
11863        normal: function(t, e) {
11864            var n = arguments.length;
11865            return n < 2 && (e = 1),
11866            n < 1 && (t = 0),
11867            function() {
11868                var n, r, i;
11869                do {
11870                    n = 2 * Math.random() - 1,
11871                    r = 2 * Math.random() - 1,
11872                    i = n * n + r * r
11873                } while (!i || i > 1);
11874                return t + e * n * Math.sqrt(-2 * Math.log(i) / i)
11875            }
11876        },
11877        logNormal: function(t, e) {
11878            var n = arguments.length;
11879            n < 2 && (e = 1),
11880            n < 1 && (t = 0);
11881            var r = d3.random.normal();
11882            return function() {
11883                return Math.exp(t + e * r())
11884            }
11885        },
11886        irwinHall: function(t) {
11887            return function() {
11888                for (var e = 0, n = 0; n < t; n++)
11889                    e += Math.random();
11890                return e / t
11891            }
11892        }
11893    },
11894    d3.sum = function(t, e) {
11895        var n, r = 0, i = t.length, o = -1;
11896        if (1 === arguments.length)
11897            for (; ++o < i; )
11898                isNaN(n = +t[o]) || (r += n);
11899        else
11900            for (; ++o < i; )
11901                isNaN(n = +e.call(t, t[o], o)) || (r += n);
11902        return r
11903    }
11904    ,
11905    d3.quantile = function(t, e) {
11906        var n = (t.length - 1) * e + 1
11907          , r = Math.floor(n)
11908          , i = t[r - 1]
11909          , o = n - r;
11910        return o ? i + o * (t[r] - i) : i
11911    }
11912    ,
11913    d3.transpose = function(t) {
11914        return d3.zip.apply(d3, t)
11915    }
11916    ,
11917    d3.zip = function() {
11918        if (!(r = arguments.length))
11919            return [];
11920        for (var t = -1, e = d3.min(arguments, l), n = new Array(e); ++t < e; )
11921            for (var r, i = -1, o = n[t] = new Array(r); ++i < r; )
11922                o[i] = arguments[i][t];
11923        return n
11924    }
11925    ,
11926    d3.bisector = function(t) {
11927        return {
11928            left: function(e, n, r, i) {
11929                for (arguments.length < 3 && (r = 0),
11930                arguments.length < 4 && (i = e.length); r < i; ) {
11931                    var o = r + i >>> 1;
11932                    t.call(e, e[o], o) < n ? r = o + 1 : i = o
11933                }
11934                return r
11935            },
11936            right: function(e, n, r, i) {
11937                for (arguments.length < 3 && (r = 0),
11938                arguments.length < 4 && (i = e.length); r < i; ) {
11939                    var o = r + i >>> 1;
11940                    n < t.call(e, e[o], o) ? i = o : r = o + 1
11941                }
11942                return r
11943            }
11944        }
11945    }
11946    ;
11947    var Wr = d3.bisector(function(t) {
11948        return t
11949    });
11950    d3.bisectLeft = Wr.left,
11951    d3.bisect = d3.bisectRight = Wr.right,
11952    d3.first = function(t, e) {
11953        var n, r = 0, i = t.length, o = t[0];
11954        for (1 === arguments.length && (e = d3.ascending); ++r < i; )
11955            e.call(t, o, n = t[r]) > 0 && (o = n);
11956        return o
11957    }
11958    ,
11959    d3.last = function(t, e) {
11960        var n, r = 0, i = t.length, o = t[0];
11961        for (1 === arguments.length && (e = d3.ascending); ++r < i; )
11962            e.call(t, o, n = t[r]) <= 0 && (o = n);
11963        return o
11964    }
11965    ,
11966    d3.nest = function() {
11967        function t(e, s) {
11968            if (s >= a.length)
11969                return i ? i.call(o, e) : r ? e.sort(r) : e;
11970            for (var u, l, c, h = -1, d = e.length, f = a[s++], p = new n, g = {}; ++h < d; )
11971                (c = p.get(u = f(l = e[h]))) ? c.push(l) : p.set(u, [l]);
11972            return p.forEach(function(e, n) {
11973                g[e] = t(n, s)
11974            }),
11975            g
11976        }
11977        function e(t, n) {
11978            if (n >= a.length)
11979                return t;
11980            var r, i = [], o = s[n++];
11981            for (r in t)
11982                i.push({
11983                    key: r,
11984                    values: e(t[r], n)
11985                });
11986            return o && i.sort(function(t, e) {
11987                return o(t.key, e.key)
11988            }),
11989            i
11990        }
11991        var r, i, o = {}, a = [], s = [];
11992        return o.map = function(e) {
11993            return t(e, 0)
11994        }
11995        ,
11996        o.entries = function(n) {
11997            return e(t(n, 0), 0)
11998        }
11999        ,
12000        o.key = function(t) {
12001            return a.push(t),
12002            o
12003        }
12004        ,
12005        o.sortKeys = function(t) {
12006            return s[a.length - 1] = t,
12007            o
12008        }
12009        ,
12010        o.sortValues = function(t) {
12011            return r = t,
12012            o
12013        }
12014        ,
12015        o.rollup = function(t) {
12016            return i = t,
12017            o
12018        }
12019        ,
12020        o
12021    }
12022    ,
12023    d3.keys = function(t) {
12024        var e = [];
12025        for (var n in t)
12026            e.push(n);
12027        return e
12028    }
12029    ,
12030    d3.values = function(t) {
12031        var e = [];
12032        for (var n in t)
12033            e.push(t[n]);
12034        return e
12035    }
12036    ,
12037    d3.entries = function(t) {
12038        var e = [];
12039        for (var n in t)
12040            e.push({
12041                key: n,
12042                value: t[n]
12043            });
12044        return e
12045    }
12046    ,
12047    d3.permute = function(t, e) {
12048        for (var n = [], r = -1, i = e.length; ++r < i; )
12049            n[r] = t[e[r]];
12050        return n
12051    }
12052    ,
12053    d3.merge = function(t) {
12054        return Array.prototype.concat.apply([], t)
12055    }
12056    ,
12057    d3.split = function(t, e) {
12058        var n, r = [], i = [], o = -1, a = t.length;
12059        for (arguments.length < 2 && (e = c); ++o < a; )
12060            e.call(i, n = t[o], o) ? i = [] : (i.length || r.push(i),
12061            i.push(n));
12062        return r
12063    }
12064    ,
12065    d3.range = function(t, e, n) {
12066        if (arguments.length < 3 && (n = 1,
12067        arguments.length < 2 && (e = t,
12068        t = 0)),
12069        (e - t) / n == 1 / 0)
12070            throw new Error("infinite range");
12071        var r, i = [], o = d(Math.abs(n)), a = -1;
12072        if (t *= o,
12073        e *= o,
12074        n *= o,
12075        n < 0)
12076            for (; (r = t + n * ++a) > e; )
12077                i.push(r / o);
12078        else
12079            for (; (r = t + n * ++a) < e; )
12080                i.push(r / o);
12081        return i
12082    }
12083    ,
12084    d3.requote = function(t) {
12085        return t.replace(Kr, "\\$&")
12086    }
12087    ;
12088    var Kr = /[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g;
12089    d3.round = function(t, e) {
12090        return e ? Math.round(t * (e = Math.pow(10, e))) / e : Math.round(t)
12091    }
12092    ,
12093    d3.xhr = function(t, e, n) {
12094        var r = new XMLHttpRequest;
12095        arguments.length < 3 ? (n = e,
12096        e = null) : e && r.overrideMimeType && r.overrideMimeType(e),
12097        r.open("GET", t, !0),
12098        e && r.setRequestHeader("Accept", e),
12099        r.onreadystatechange = function() {
12100            if (4 === r.readyState) {
12101                var t = r.status;
12102                n(!t && r.response || t >= 200 && t < 300 || 304 === t ? r : null)
12103            }
12104        }
12105        ,
12106        r.send(null)
12107    }
12108    ,
12109    d3.text = function(t, e, n) {
12110        function r(t) {
12111            n(t && t.responseText)
12112        }
12113        arguments.length < 3 && (n = e,
12114        e = null),
12115        d3.xhr(t, e, r)
12116    }
12117    ,
12118    d3.json = function(t, e) {
12119        d3.text(t, "application/json", function(t) {
12120            e(t ? JSON.parse(t) : null)
12121        })
12122    }
12123    ,
12124    d3.html = function(t, e) {
12125        d3.text(t, "text/html", function(t) {
12126            if (null != t) {
12127                var n = document.createRange();
12128                n.selectNode(document.body),
12129                t = n.createContextualFragment(t)
12130            }
12131            e(t)
12132        })
12133    }
12134    ,
12135    d3.xml = function(t, e, n) {
12136        function r(t) {
12137            n(t && t.responseXML)
12138        }
12139        arguments.length < 3 && (n = e,
12140        e = null),
12141        d3.xhr(t, e, r)
12142    }
12143    ;
12144    var Gr = {
12145        svg: "http://www.w3.org/2000/svg",
12146        xhtml: "http://www.w3.org/1999/xhtml",
12147        xlink: "http://www.w3.org/1999/xlink",
12148        xml: "http://www.w3.org/XML/1998/namespace",
12149        xmlns: "http://www.w3.org/2000/xmlns/"
12150    };
12151    d3.ns = {
12152        prefix: Gr,
12153        qualify: function(t) {
12154            var e = t.indexOf(":")
12155              , n = t;
12156            return e >= 0 && (n = t.substring(0, e),
12157            t = t.substring(e + 1)),
12158            Gr.hasOwnProperty(n) ? {
12159                space: Gr[n],
12160                local: t
12161            } : t
12162        }
12163    },
12164    d3.dispatch = function() {
12165        for (var t = new f, e = -1, n = arguments.length; ++e < n; )
12166            t[arguments[e]] = p(t);
12167        return t
12168    }
12169    ,
12170    f.prototype.on = function(t, e) {
12171        var n = t.indexOf(".")
12172          , r = "";
12173        return n > 0 && (r = t.substring(n + 1),
12174        t = t.substring(0, n)),
12175        arguments.length < 2 ? this[t].on(r) : this[t].on(r, e)
12176    }
12177    ,
12178    d3.format = function(t) {
12179        var e = Yr.exec(t)
12180          , n = e[1] || " "
12181          , r = e[3] || ""
12182          , i = e[5]
12183          , o = +e[6]
12184          , a = e[7]
12185          , s = e[8]
12186          , u = e[9]
12187          , l = 1
12188          , c = ""
12189          , h = !1;
12190        switch (s && (s = +s.substring(1)),
12191        i && (n = "0",
12192        a && (o -= Math.floor((o - 1) / 4))),
12193        u) {
12194        case "n":
12195            a = !0,
12196            u = "g";
12197            break;
12198        case "%":
12199            l = 100,
12200            c = "%",
12201            u = "f";
12202            break;
12203        case "p":
12204            l = 100,
12205            c = "%",
12206            u = "r";
12207            break;
12208        case "d":
12209            h = !0,
12210            s = 0;
12211            break;
12212        case "s":
12213            l = -1,
12214            u = "r"
12215        }
12216        return "r" != u || s || (u = "g"),
12217        u = Jr.get(u) || m,
12218        function(t) {
12219            if (h && t % 1)
12220                return "";
12221            var e = t < 0 && (t = -t) ? "-" : r;
12222            if (l < 0) {
12223                var d = d3.formatPrefix(t, s);
12224                t = d.scale(t),
12225                c = d.symbol
12226            } else
12227                t *= l;
12228            if (t = u(t, s),
12229            i) {
12230                var f = t.length + e.length;
12231                f < o && (t = new Array(o - f + 1).join(n) + t),
12232                a && (t = y(t)),
12233                t = e + t
12234            } else {
12235                a && (t = y(t)),
12236                t = e + t;
12237                var f = t.length;
12238                f < o && (t = new Array(o - f + 1).join(n) + t)
12239            }
12240            return t + c
12241        }
12242    }
12243    ;
12244    var Yr = /(?:([^{])?([<>=^]))?([+\- ])?(#)?(0)?([0-9]+)?(,)?(\.[0-9]+)?([a-zA-Z%])?/
12245      , Jr = d3.map({
12246        g: function(t, e) {
12247            return t.toPrecision(e)
12248        },
12249        e: function(t, e) {
12250            return t.toExponential(e)
12251        },
12252        f: function(t, e) {
12253            return t.toFixed(e)
12254        },
12255        r: function(t, e) {
12256            return d3.round(t, e = g(t, e)).toFixed(Math.max(0, Math.min(20, e)))
12257        }
12258    })
12259      , Xr = ["y", "z", "a", "f", "p", "n", "μ", "m", "", "k", "M", "G", "T", "P", "E", "Z", "Y"].map(v);
12260    d3.formatPrefix = function(t, e) {
12261        var n = 0;
12262        return t && (t < 0 && (t *= -1),
12263        e && (t = d3.round(t, g(t, e))),
12264        n = 1 + Math.floor(1e-12 + Math.log(t) / Math.LN10),
12265        n = Math.max(-24, Math.min(24, 3 * Math.floor((n <= 0 ? n + 1 : n - 1) / 3)))),
12266        Xr[8 + n / 3]
12267    }
12268    ;
12269    var Zr = C(2)
12270      , ti = C(3)
12271      , ei = function() {
12272        return _
12273    }
12274      , ni = d3.map({
12275        linear: ei,
12276        poly: C,
12277        quad: function() {
12278            return Zr
12279        },
12280        cubic: function() {
12281            return ti
12282        },
12283        sin: function() {
12284            return k
12285        },
12286        exp: function() {
12287            return j
12288        },
12289        circle: function() {
12290            return T
12291        },
12292        elastic: S,
12293        back: E,
12294        bounce: function() {
12295            return A
12296        }
12297    })
12298      , ri = d3.map({
12299        in: _,
12300        out: w,
12301        "in-out": x,
12302        "out-in": function(t) {
12303            return x(w(t))
12304        }
12305    });
12306    d3.ease = function(t) {
12307        var e = t.indexOf("-")
12308          , n = e >= 0 ? t.substring(0, e) : t
12309          , r = e >= 0 ? t.substring(e + 1) : "in";
12310        return n = ni.get(n) || ei,
12311        r = ri.get(r) || _,
12312        b(r(n.apply(null, Array.prototype.slice.call(arguments, 1))))
12313    }
12314    ,
12315    d3.event = null,
12316    d3.transform = function(t) {
12317        var e = document.createElementNS(d3.ns.prefix.svg, "g");
12318        return (d3.transform = function(t) {
12319            e.setAttribute("transform", t);
12320            var n = e.transform.baseVal.consolidate();
12321            return new D(n ? n.matrix : oi)
12322        }
12323        )(t)
12324    }
12325    ,
12326    D.prototype.toString = function() {
12327        return "translate(" + this.translate + ")rotate(" + this.rotate + ")skewX(" + this.skew + ")scale(" + this.scale + ")"
12328    }
12329    ;
12330    var ii = 180 / Math.PI
12331      , oi = {
12332        a: 1,
12333        b: 0,
12334        c: 0,
12335        d: 1,
12336        e: 0,
12337        f: 0
12338    };
12339    d3.interpolate = function(t, e) {
12340        for (var n, r = d3.interpolators.length; --r >= 0 && !(n = d3.interpolators[r](t, e)); )
12341            ;
12342        return n
12343    }
12344    ,
12345    d3.interpolateNumber = function(t, e) {
12346        return e -= t,
12347        function(n) {
12348            return t + e * n
12349        }
12350    }
12351    ,
12352    d3.interpolateRound = function(t, e) {
12353        return e -= t,
12354        function(n) {
12355            return Math.round(t + e * n)
12356        }
12357    }
12358    ,
12359    d3.interpolateString = function(t, e) {
12360        var n, r, i, o, a, s = 0, u = [], l = [];
12361        for (ai.lastIndex = 0,
12362        r = 0; n = ai.exec(e); ++r)
12363            n.index && u.push(e.substring(s, n.index)),
12364            l.push({
12365                i: u.length,
12366                x: n[0]
12367            }),
12368            u.push(null),
12369            s = ai.lastIndex;
12370        for (s < e.length && u.push(e.substring(s)),
12371        r = 0,
12372        o = l.length; (n = ai.exec(t)) && r < o; ++r)
12373            if (a = l[r],
12374            a.x == n[0]) {
12375                if (a.i)
12376                    if (null == u[a.i + 1])
12377                        for (u[a.i - 1] += a.x,
12378                        u.splice(a.i, 1),
12379                        i = r + 1; i < o; ++i)
12380                            l[i].i--;
12381                    else
12382                        for (u[a.i - 1] += a.x + u[a.i + 1],
12383                        u.splice(a.i, 2),
12384                        i = r + 1; i < o; ++i)
12385                            l[i].i -= 2;
12386                else if (null == u[a.i + 1])
12387                    u[a.i] = a.x;
12388                else
12389                    for (u[a.i] = a.x + u[a.i + 1],
12390                    u.splice(a.i + 1, 1),
12391                    i = r + 1; i < o; ++i)
12392                        l[i].i--;
12393                l.splice(r, 1),
12394                o--,
12395                r--
12396            } else
12397                a.x = d3.interpolateNumber(parseFloat(n[0]), parseFloat(a.x));
12398        for (; r < o; )
12399            a = l.pop(),
12400            null == u[a.i + 1] ? u[a.i] = a.x : (u[a.i] = a.x + u[a.i + 1],
12401            u.splice(a.i + 1, 1)),
12402            o--;
12403        return 1 === u.length ? null == u[0] ? l[0].x : function() {
12404            return e
12405        }
12406        : function(t) {
12407            for (r = 0; r < o; ++r)
12408                u[(a = l[r]).i] = a.x(t);
12409            return u.join("")
12410        }
12411    }
12412    ,
12413    d3.interpolateTransform = function(t, e) {
12414        var n, r = [], i = [], o = d3.transform(t), a = d3.transform(e), s = o.translate, u = a.translate, l = o.rotate, c = a.rotate, h = o.skew, d = a.skew, f = o.scale, p = a.scale;
12415        return s[0] != u[0] || s[1] != u[1] ? (r.push("translate(", null, ",", null, ")"),
12416        i.push({
12417            i: 1,
12418            x: d3.interpolateNumber(s[0], u[0])
12419        }, {
12420            i: 3,
12421            x: d3.interpolateNumber(s[1], u[1])
12422        })) : u[0] || u[1] ? r.push("translate(" + u + ")") : r.push(""),
12423        l != c ? (l - c >
12423 180 ? c += 360 : c - l > 180 && (l += 360),
12424        i.push({
12425            i: r.push(r.pop() + "rotate(", null, ")") - 2,
12426            x: d3.interpolateNumber(l, c)
12427        })) : c && r.push(r.pop() + "rotate(" + c + ")"),
12428        h != d ? i.push({
12429            i: r.push(r.pop() + "skewX(", null, ")") - 2,
12430            x: d3.interpolateNumber(h, d)
12431        }) : d && r.push(r.pop() + "skewX(" + d + ")"),
12432        f[0] != p[0] || f[1] != p[1] ? (n = r.push(r.pop() + "scale(", null, ",", null, ")"),
12433        i.push({
12434            i: n - 4,
12435            x: d3.interpolateNumber(f[0], p[0])
12436        }, {
12437            i: n - 2,
12438            x: d3.interpolateNumber(f[1], p[1])
12439        })) : 1 == p[0] && 1 == p[1] || r.push(r.pop() + "scale(" + p + ")"),
12440        n = i.length,
12441        function(t) {
12442            for (var e, o = -1; ++o < n; )
12443                r[(e = i[o]).i] = e.x(t);
12444            return r.join("")
12445        }
12446    }
12447    ,
12448    d3.interpolateRgb = function(t, e) {
12449        t = d3.rgb(t),
12450        e = d3.rgb(e);
12451        var n = t.r
12452          , r = t.g
12453          , i = t.b
12454          , o = e.r - n
12455          , a = e.g - r
12456          , s = e.b - i;
12457        return function(t) {
12458            return "#" + H(Math.round(n + o * t)) + H(Math.round(r + a * t)) + H(Math.round(i + s * t))
12459        }
12460    }
12461    ,
12462    d3.interpolateHsl = function(t, e) {
12463        t = d3.hsl(t),
12464        e = d3.hsl(e);
12465        var n = t.h
12466          , r = t.s
12467          , i = t.l
12468          , o = e.h - n
12469          , a = e.s - r
12470          , s = e.l - i;
12471        return o > 180 ? o -= 360 : o < -180 && (o += 360),
12472        function(t) {
12473            return J(n + o * t, r + a * t, i + s * t) + ""
12474        }
12475    }
12476    ,
12477    d3.interpolateLab = function(t, e) {
12478        t = d3.lab(t),
12479        e = d3.lab(e);
12480        var n = t.l
12481          , r = t.a
12482          , i = t.b
12483          , o = e.l - n
12484          , a = e.a - r
12485          , s = e.b - i;
12486        return function(t) {
12487            return rt(n + o * t, r + a * t, i + s * t) + ""
12488        }
12489    }
12490    ,
12491    d3.interpolateHcl = function(t, e) {
12492        t = d3.hcl(t),
12493        e = d3.hcl(e);
12494        var n = t.h
12495          , r = t.c
12496          , i = t.l
12497          , o = e.h - n
12498          , a = e.c - r
12499          , s = e.l - i;
12500        return o > 180 ? o -= 360 : o < -180 && (o += 360),
12501        function(t) {
12502            return tt(n + o * t, r + a * t, i + s * t) + ""
12503        }
12504    }
12505    ,
12506    d3.interpolateArray = function(t, e) {
12507        var n, r = [], i = [], o = t.length, a = e.length, s = Math.min(t.length, e.length);
12508        for (n = 0; n < s; ++n)
12509            r.push(d3.interpolate(t[n], e[n]));
12510        for (; n < o; ++n)
12511            i[n] = t[n];
12512        for (; n < a; ++n)
12513            i[n] = e[n];
12514        return function(t) {
12515            for (n = 0; n < s; ++n)
12516                i[n] = r[n](t);
12517            return i
12518        }
12519    }
12520    ,
12521    d3.interpolateObject = function(t, e) {
12522        var n, r = {}, i = {};
12523        for (n in t)
12524            n in e ? r[n] = L(n)(t[n], e[n]) : i[n] = t[n];
12525        for (n in e)
12526            n in t || (i[n] = e[n]);
12527        return function(t) {
12528            for (n in r)
12529                i[n] = r[n](t);
12530            return i
12531        }
12532    }
12533    ;
12534    var ai = /[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g;
12535    d3.interpolators = [d3.interpolateObject, function(t, e) {
12536        return e instanceof Array && d3.interpolateArray(t, e)
12537    }
12538    , function(t, e) {
12539        return ("string" == typeof t || "string" == typeof e) && d3.interpolateString(t + "", e + "")
12540    }
12541    , function(t, e) {
12542        return ("string" == typeof e ? ui.has(e) || /^(#|rgb\(|hsl\()/.test(e) : e instanceof q) && d3.interpolateRgb(t, e)
12543    }
12544    , function(t, e) {
12545        return !isNaN(t = +t) && !isNaN(e = +e) && d3.interpolateNumber(t, e)
12546    }
12547    ],
12548    q.prototype.toString = function() {
12549        return this.rgb() + ""
12550    }
12551    ,
12552    d3.rgb = function(t, e, n) {
12553        return 1 === arguments.length ? t instanceof z ? R(t.r, t.g, t.b) : B("" + t, R, J) : R(~~t, ~~e, ~~n)
12554    }
12555    ;
12556    var si = z.prototype = new q;
12557    si.brighter = function(t) {
12558        t = Math.pow(.7, arguments.length ? t : 1);
12559        var e = this.r
12560          , n = this.g
12561          , r = this.b
12562          , i = 30;
12563        return e || n || r ? (e && e < i && (e = i),
12564        n && n < i && (n = i),
12565        r && r < i && (r = i),
12566        R(Math.min(255, Math.floor(e / t)), Math.min(255, Math.floor(n / t)), Math.min(255, Math.floor(r / t)))) : R(i, i, i)
12567    }
12568    ,
12569    si.darker = function(t) {
12570        return t = Math.pow(.7, arguments.length ? t : 1),
12571        R(Math.floor(t * this.r), Math.floor(t * this.g), Math.floor(t * this.b))
12572    }
12573    ,
12574    si.hsl = function() {
12575        return V(this.r, this.g, this.b)
12576    }
12577    ,
12578    si.toString = function() {
12579        return "#" + H(this.r) + H(this.g) + H(this.b)
12580    }
12581    ;
12582    var ui = d3.map({
12583        aliceblue: "#f0f8ff",
12584        antiquewhite: "#faebd7",
12585        aqua: "#00ffff",
12586        aquamarine: "#7fffd4",
12587        azure: "#f0ffff",
12588        beige: "#f5f5dc",
12589        bisque: "#ffe4c4",
12590        black: "#000000",
12591        blanchedalmond: "#ffebcd",
12592        blue: "#0000ff",
12593        blueviolet: "#8a2be2",
12594        brown: "#a52a2a",
12595        burlywood: "#deb887",
12596        cadetblue: "#5f9ea0",
12597        chartreuse: "#7fff00",
12598        chocolate: "#d2691e",
12599        coral: "#ff7f50",
12600        cornflowerblue: "#6495ed",
12601        cornsilk: "#fff8dc",
12602        crimson: "#dc143c",
12603        cyan: "#00ffff",
12604        darkblue: "#00008b",
12605        darkcyan: "#008b8b",
12606        darkgoldenrod: "#b8860b",
12607        darkgray: "#a9a9a9",
12608        darkgreen: "#006400",
12609        darkgrey: "#a9a9a9",
12610        darkkhaki: "#bdb76b",
12611        darkmagenta: "#8b008b",
12612        darkolivegreen: "#556b2f",
12613        darkorange: "#ff8c00",
12614        darkorchid: "#9932cc",
12615        darkred: "#8b0000",
12616        darksalmon: "#e9967a",
12617        darkseagreen: "#8fbc8f",
12618        darkslateblue: "#483d8b",
12619        darkslategray: "#2f4f4f",
12620        darkslategrey: "#2f4f4f",
12621        darkturquoise: "#00ced1",
12622        darkviolet: "#9400d3",
12623        deeppink: "#ff1493",
12624        deepskyblue: "#00bfff",
12625        dimgray: "#696969",
12626        dimgrey: "#696969",
12627        dodgerblue: "#1e90ff",
12628        firebrick: "#b22222",
12629        floralwhite: "#fffaf0",
12630        forestgreen: "#228b22",
12631        fuchsia: "#ff00ff",
12632        gainsboro: "#dcdcdc",
12633        ghostwhite: "#f8f8ff",
12634        gold: "#ffd700",
12635        goldenrod: "#daa520",
12636        gray: "#808080",
12637        green: "#008000",
12638        greenyellow: "#adff2f",
12639        grey: "#808080",
12640        honeydew: "#f0fff0",
12641        hotpink: "#ff69b4",
12642        indianred: "#cd5c5c",
12643        indigo: "#4b0082",
12644        ivory: "#fffff0",
12645        khaki: "#f0e68c",
12646        lavender: "#e6e6fa",
12647        lavenderblush: "#fff0f5",
12648        lawngreen: "#7cfc00",
12649        lemonchiffon: "#fffacd",
12650        lightblue: "#add8e6",
12651        lightcoral: "#f08080",
12652        lightcyan: "#e0ffff",
12653        lightgoldenrodyellow: "#fafad2",
12654        lightgray: "#d3d3d3",
12655        lightgreen: "#90ee90",
12656        lightgrey: "#d3d3d3",
12657        lightpink: "#ffb6c1",
12658        lightsalmon: "#ffa07a",
12659        lightseagreen: "#20b2aa",
12660        lightskyblue: "#87cefa",
12661        lightslategray: "#778899",
12662        lightslategrey: "#778899",
12663        lightsteelblue: "#b0c4de",
12664        lightyellow: "#ffffe0",
12665        lime: "#00ff00",
12666        limegreen: "#32cd32",
12667        linen: "#faf0e6",
12668        magenta: "#ff00ff",
12669        maroon: "#800000",
12670        mediumaquamarine: "#66cdaa",
12671        mediumblue: "#0000cd",
12672        mediumorchid: "#ba55d3",
12673        mediumpurple: "#9370db",
12674        mediumseagreen: "#3cb371",
12675        mediumslateblue: "#7b68ee",
12676        mediumspringgreen: "#00fa9a",
12677        mediumturquoise: "#48d1cc",
12678        mediumvioletred: "#c71585",
12679        midnightblue: "#191970",
12680        mintcream: "#f5fffa",
12681        mistyrose: "#ffe4e1",
12682        moccasin: "#ffe4b5",
12683        navajowhite: "#ffdead",
12684        navy: "#000080",
12685        oldlace: "#fdf5e6",
12686        olive: "#808000",
12687        olivedrab: "#6b8e23",
12688        orange: "#ffa500",
12689        orangered: "#ff4500",
12690        orchid: "#da70d6",
12691        palegoldenrod: "#eee8aa",
12692        palegreen: "#98fb98",
12693        paleturquoise: "#afeeee",
12694        palevioletred: "#db7093",
12695        papayawhip: "#ffefd5",
12696        peachpuff: "#ffdab9",
12697        peru: "#cd853f",
12698        pink: "#ffc0cb",
12699        plum: "#dda0dd",
12700        powderblue: "#b0e0e6",
12701        purple: "#800080",
12702        red: "#ff0000",
12703        rosybrown: "#bc8f8f",
12704        royalblue: "#4169e1",
12705        saddlebrown: "#8b4513",
12706        salmon: "#fa8072",
12707        sandybrown: "#f4a460",
12708        seagreen: "#2e8b57",
12709        seashell: "#fff5ee",
12710        sienna: "#a0522d",
12711        silver: "#c0c0c0",
12712        skyblue: "#87ceeb",
12713        slateblue: "#6a5acd",
12714        slategray: "#708090",
12715        slategrey: "#708090",
12716        snow: "#fffafa",
12717        springgreen: "#00ff7f",
12718        steelblue: "#4682b4",
12719        tan: "#d2b48c",
12720        teal: "#008080",
12721        thistle: "#d8bfd8",
12722        tomato: "#ff6347",
12723        turquoise: "#40e0d0",
12724        violet: "#ee82ee",
12725        wheat: "#f5deb3",
12726        white: "#ffffff",
12727        whitesmoke: "#f5f5f5",
12728        yellow: "#ffff00",
12729        yellowgreen: "#9acd32"
12730    });
12731    ui.forEach(function(t, e) {
12732        ui.set(t, B(e, R, J))
12733    }),
12734    d3.hsl = function(t, e, n) {
12735        return 1 === arguments.length ? t instanceof Y ? G(t.h, t.s, t.l) : B("" + t, V, G) : G(+t, +e, +n)
12736    }
12737    ;
12738    var li = Y.prototype = new q;
12739    li.brighter = function(t) {
12740        return t = Math.pow(.7, arguments.length ? t : 1),
12741        G(this.h, this.s, this.l / t)
12742    }
12743    ,
12744    li.darker = function(t) {
12745        return t = Math.pow(.7, arguments.length ? t : 1),
12746        G(this.h, this.s, t * this.l)
12747    }
12748    ,
12749    li.rgb = function() {
12750        return J(this.h, this.s, this.l)
12751    }
12752    ,
12753    d3.hcl = function(t, e, n) {
12754        return 1 === arguments.length ? t instanceof Z ? X(t.h, t.c, t.l) : t instanceof nt ? it(t.l, t.a, t.b) : it((t = U((t = d3.rgb(t)).r, t.g, t.b)).l, t.a, t.b) : X(+t, +e, +n)
12755    }
12756    ;
12757    var ci = Z.prototype = new q;
12758    ci.brighter = function(t) {
12759        return X(this.h, this.c, Math.min(100, this.l + hi * (arguments.length ? t : 1)))
12760    }
12761    ,
12762    ci.darker = function(t) {
12763        return X(this.h, this.c, Math.max(0, this.l - hi * (arguments.length ? t : 1)))
12764    }
12765    ,
12766    ci.rgb = function() {
12767        return tt(this.h, this.c, this.l).rgb()
12768    }
12769    ,
12770    d3.lab = function(t, e, n) {
12771        return 1 === arguments.length ? t instanceof nt ? et(t.l, t.a, t.b) : t instanceof Z ? tt(t.l, t.c, t.h) : U((t = d3.rgb(t)).r, t.g, t.b) : et(+t, +e, +n)
12772    }
12773    ;
12774    var hi = 18
12775      , di = .95047
12776      , fi = 1
12777      , pi = 1.08883
12778      , gi = nt.prototype = new q;
12779    gi.brighter = function(t) {
12780        return et(Math.min(100, this.l + hi * (arguments.length ? t : 1)), this.a, this.b)
12781    }
12782    ,
12783    gi.darker = function(t) {
12784        return et(Math.max(0, this.l - hi * (arguments.length ? t : 1)), this.a, this.b)
12785    }
12786    ,
12787    gi.rgb = function() {
12788        return rt(this.l, this.a, this.b)
12789    }
12790    ;
12791    var mi = function(t, e) {
12792        return e.querySelector(t)
12793    }
12794      , yi = function(t, e) {
12795        return e.querySelectorAll(t)
12796    }
12797      , vi = document.documentElement
12798      , bi = vi.matchesSelector || vi.webkitMatchesSelector || vi.mozMatchesSelector || vi.msMatchesSelector || vi.oMatchesSelector
12799      , wi = function(t, e) {
12800        return bi.call(t, e)
12801    };
12802    "function" == typeof Sizzle && (mi = function(t, e) {
12803        return Sizzle(t, e)[0] || null
12804    }
12805    ,
12806    yi = function(t, e) {
12807        return Sizzle.uniqueSort(Sizzle(t, e))
12808    }
12809    ,
12810    wi = Sizzle.matchesSelector);
12811    var xi = [];
12812    d3.selection = function() {
12813        return _i
12814    }
12815    ,
12816    d3.selection.prototype = xi,
12817    xi.select = function(t) {
12818        var e, n, r, i, o = [];
12819        "function" != typeof t && (t = lt(t));
12820        for (var a = -1, s = this.length; ++a < s; ) {
12821            o.push(e = []),
12822            e.parentNode = (r = this[a]).parentNode;
12823            for (var u = -1, l = r.length; ++u < l; )
12824                (i = r[u]) ? (e.push(n = t.call(i, i.__data__, u)),
12825                n && "__data__"in i && (n.__data__ = i.__data__)) : e.push(null)
12826        }
12827        return ut(o)
12828    }
12829    ,
12830    xi.selectAll = function(t) {
12831        var e, n, r = [];
12832        "function" != typeof t && (t = ct(t));
12833        for (var i = -1, o = this.length; ++i < o; )
12834            for (var a = this[i], s = -1, u = a.length; ++s < u; )
12835                (n = a[s]) && (r.push(e = Hr(t.call(n, n.__data__, s))),
12836                e.parentNode = n);
12837        return ut(r)
12838    }
12839    ,
12840    xi.attr = function(t, e) {
12841        if (arguments.length < 2) {
12842            if ("string" == typeof t) {
12843                var n = this.node();
12844                return t = d3.ns.qualify(t),
12845                t.local ? n.getAttributeNS(t.space, t.local) : n.getAttribute(t)
12846            }
12847            for (e in t)
12848                this.each(ht(e, t[e]));
12849            return this
12850        }
12851        return this.each(ht(t, e))
12852    }
12853    ,
12854    xi.classed = function(t, e) {
12855        if (arguments.length < 2) {
12856            if ("string" == typeof t) {
12857                var n = this.node()
12858                  , r = (t = t.trim().split(/^|\s+/g)).length
12859                  , i = -1;
12860                if (e = n.classList) {
12861                    for (; ++i < r; )
12862                        if (!e.contains(t[i]))
12863                            return !1
12864                } else
12865                    for (e = n.className,
12866                    null != e.baseVal && (e = e.baseVal); ++i < r; )
12867                        if (!dt(t[i]).test(e))
12868                            return !1;
12869                return !0
12870            }
12871            for (e in t)
12872                this.each(ft(e, t[e]));
12873            return this
12874        }
12875        return this.each(ft(t, e))
12876    }
12877    ,
12878    xi.style = function(t, e, n) {
12879        var r = arguments.length;
12880        if (r < 3) {
12881            if ("string" != typeof t) {
12882                r < 2 && (e = "");
12883                for (n in t)
12884                    this.each(gt(n, t[n], e));
12885                return this
12886            }
12887            if (r < 2)
12888                return window.getComputedStyle(this.node(), null).getPropertyValue(t);
12889            n = ""
12890        }
12891        return this.each(gt(t, e, n))
12892    }
12893    ,
12894    xi.property = function(t, e) {
12895        if (arguments.length < 2) {
12896            if ("string" == typeof t)
12897                return this.node()[t];
12898            for (e in t)
12899                this.each(mt(e, t[e]));
12900            return this
12901        }
12902        return this.each(mt(t, e))
12903    }
12904    ,
12905    xi.text = function(t) {
12906        return arguments.length < 1 ? this.node().textContent : this.each("function" == typeof t ? function() {
12907            var e = t.apply(this, arguments);
12908            this.textContent = null == e ? "" : e
12909        }
12910        : null == t ? function() {
12911            this.textContent = ""
12912        }
12913        : function() {
12914            this.textContent = t
12915        }
12916        )
12917    }
12918    ,
12919    xi.html = function(t) {
12920        return arguments.length < 1 ? this.node().innerHTML : this.each("function" == typeof t ? function() {
12921            var e = t.apply(this, arguments);
12922            this.innerHTML = null == e ? "" : e
12923        }
12924        : null == t ? function() {
12925            this.innerHTML = ""
12926        }
12927        : function() {
12928            this.innerHTML = t
12929        }
12930        )
12931    }
12932    ,
12933    xi.append = function(t) {
12934        function e() {
12935            return this.appendChild(document.createElementNS(this.namespaceURI, t))
12936        }
12937        function n() {
12938            return this.appendChild(document.createElementNS(t.space, t.local))
12939        }
12940        return t = d3.ns.qualify(t),
12941        this.select(t.local ? n : e)
12942    }
12943    ,
12944    xi.insert = function(t, e) {
12945        function n() {
12946            return this.insertBefore(document.createElementNS(this.namespaceURI, t), mi(e, this))
12947        }
12948        function r() {
12949            return this.insertBefore(document.createElementNS(t.space, t.local), mi(e, this))
12950        }
12951        return t = d3.ns.qualify(t),
12952        this.select(t.local ? r : n)
12953    }
12954    ,
12955    xi.remove = function() {
12956        return this.each(function() {
12957            var t = this.parentNode;
12958            t && t.removeChild(this)
12959        })
12960    }
12961    ,
12962    xi.data = function(t, e) {
12963        function r(t, r) {
12964            var i, o, a, s = t.length, h = r.length, d = Math.min(s, h), f = Math.max(s, h), p = [], g = [], m = [];
12965            if (e) {
12966                var y, v = new n, b = [], w = r.length;
12967                for (i = -1; ++i < s; )
12968                    y = e.call(o = t[i], o.__data__, i),
12969                    v.has(y) ? m[w++] = o : v.set(y, o),
12970                    b.push(y);
12971                for (i = -1; ++i < h; )
12972                    y = e.call(r, a = r[i], i),
12973                    v.has(y) ? (p[i] = o = v.get(y),
12974                    o.__data__ = a,
12975                    g[i] = m[i] = null) : (g[i] = yt(a),
12976                    p[i] = m[i] = null),
12977                    v.remove(y);
12978                for (i = -1; ++i < s; )
12979                    v.has(b[i]) && (m[i] = t[i])
12980            } else {
12981                for (i = -1; ++i < d; )
12982                    o = t[i],
12983                    a = r[i],
12984                    o ? (o.__data__ = a,
12985                    p[i] = o,
12986                    g[i] = m[i] = null) : (g[i] = yt(a),
12987                    p[i] = m[i] = null);
12988                for (; i < h; ++i)
12989                    g[i] = yt(r[i]),
12990                    p[i] = m[i] = null;
12991                for (; i < f; ++i)
12992                    m[i] = t[i],
12993                    g[i] = p[i] = null
12994            }
12995            g.update = p,
12996            g.parentNode = p.parentNode = m.parentNode = t.parentNode,
12997            u.push(g),
12998            l.push(p),
12999            c.push(m)
13000        }
13001        var i, o, a = -1, s = this.length;
13002        if (!arguments.length) {
13003            for (t = new Array(s = (i = this[0]).length); ++a < s; )
13004                (o = i[a]) && (t[a] = o.__data__);
13005            return t
13006        }
13007        var u = _t([])
13008          , l = ut([])
13009          , c = ut([]);
13010        if ("function" == typeof t)
13011            for (; ++a < s; )
13012                r(i = this[a], t.call(i, i.parentNode.__data__, a));
13013        else
13014            for (; ++a < s; )
13015                r(i = this[a], t);
13016        return l.enter = function() {
13017            return u
13018        }
13019        ,
13020        l.exit = function() {
13021            return c
13022        }
13023        ,
13024        l
13025    }
13026    ,
13027    xi.datum = xi.map = function(t) {
13028        return arguments.length < 1 ? this.property("__data__") : this.property("__data__", t)
13029    }
13030    ,
13031    xi.filter = function(t) {
13032        var e, n, r, i = [];
13033        "function" != typeof t && (t = vt(t));
13034        for (var o = 0, a = this.length; o < a; o++) {
13035            i.push(e = []),
13036            e.parentNode = (n = this[o]).parentNode;
13037            for (var s = 0, u = n.length; s < u; s++)
13038                (r = n[s]) && t.call(r, r.__data__, s) && e.push(r)
13039        }
13040        return ut(i)
13041    }
13042    ,
13043    xi.order = function() {
13044        for (var t = -1, e = this.length; ++t < e; )
13045            for (var n, r = this[t], i = r.length - 1, o = r[i]; --i >= 0; )
13046                (n = r[i]) && (o && o !== n.nextSibling && o.parentNode.insertBefore(n, o),
13047                o = n);
13048        return this
13049    }
13050    ,
13051    xi.sort = function(t) {
13052        t = bt.apply(this, arguments);
13053        for (var e = -1, n = this.length; ++e < n; )
13054            this[e].sort(t);
13055        return this.order()
13056    }
13057    ,
13058    xi.on = function(t, e, n) {
13059        var r = arguments.length;
13060        if (r < 3) {
13061            if ("string" != typeof t) {
13062                r < 2 && (e = !1);
13063                for (n in t)
13064                    this.each(wt(n, t[n], e));
13065                return this
13066            }
13067            if (r < 2)
13068                return (r = this.node()["__on" + t]) && r._;
13069            n = !1
13070        }
13071        return this.each(wt(t, e, n))
13072    }
13073    ,
13074    xi.each = function(t) {
13075        return xt(this, function(e, n, r) {
13076            t.call(e, e.__data__, n, r)
13077        })
13078    }
13079    ,
13080    xi.call = function(t) {
13081        return t.apply(this, (arguments[0] = this,
13082        arguments)),
13083        this
13084    }
13085    ,
13086    xi.empty = function() {
13087        return !this.node()
13088    }
13089    ,
13090    xi.node = function(t) {
13091        for (var e = 0, n = this.length; e < n; e++)
13092            for (var r = this[e], i = 0, o = r.length; i < o; i++) {
13093                var a = r[i];
13094                if (a)
13095                    return a
13096            }
13097        return null
13098    }
13099    ,
13100    xi.transition = function() {
13101        for (var t, e, n = [], r = -1, i = this.length; ++r < i; ) {
13102            n.push(t = []);
13103            for (var o = this[r], a = -1, s = o.length; ++a < s; )
13104                t.push((e = o[a]) ? {
13105                    node: e,
13106                    delay: Ei,
13107                    duration: Ai
13108                } : null)
13109        }
13110        return Ct(n, Ti || ++ji, Date.now())
13111    }
13112    ;
13113    var _i = ut([[document]]);
13114    _i[0].parentNode = vi,
13115    d3.select = function(t) {
13116        return "string" == typeof t ? _i.select(t) : ut([[t]])
13117    }
13118    ,
13119    d3.selectAll = function(t) {
13120        return "string" == typeof t ? _i.selectAll(t) : ut([Hr(t)])
13121    }
13122    ;
13123    var Ci = [];
13124    d3.selection.enter = _t,
13125    d3.selection.enter.prototype = Ci,
13126    Ci.append = xi.append,
13127    Ci.insert = xi.insert,
13128    Ci.empty = xi.empty,
13129    Ci.node = xi.node,
13130    Ci.select = function(t) {
13131        for (var e, n, r, i, o, a = [], s = -1, u = this.length; ++s < u; ) {
13132            r = (i = this[s]).update,
13133            a.push(e = []),
13134            e.parentNode = i.parentNode;
13135            for (var l = -1, c = i.length; ++l < c; )
13136                (o = i[l]) ? (e.push(r[l] = n = t.call(i.parentNode, o.__data__, l)),
13137                n.__data__ = o.__data__) : e.push(null)
13138        }
13139        return ut(a)
13140    }
13141    ;
13142    var ki = []
13143      , ji = 0
13144      , Ti = 0
13145      , Si = d3.ease("cubic-in-out")
13146      , Ei = 0
13147      , Ai = 250
13148      , Mi = Si;
13149    ki.call = xi.call,
13150    d3.transition = function(t) {
13151        return arguments.length ? Ti ? t.transition() : t : _i.transition()
13152    }
13153    ,
13154    d3.transition.prototype = ki,
13155    ki.select = function(t) {
13156        var e, n, r, i = [];
13157        "function" != typeof t && (t = lt(t));
13158        for (var o = -1, a = this.length; ++o < a; ) {
13159            i.push(e = []);
13160            for (var s = this[o], u = -1, l = s.length; ++u < l; )
13161                (r = s[u]) && (n = t.call(r.node, r.node.__data__, u)) ? ("__data__"in r.node && (n.__data__ = r.node.__data__),
13162                e.push({
13163                    node: n,
13164                    delay: r.delay,
13165                    duration: r.duration
13166                })) : e.push(null)
13167        }
13168        return Ct(i, this.id, this.time).ease(this.ease())
13169    }
13170    ,
13171    ki.selectAll = function(t) {
13172        var e, n, r, i = [];
13173        "function" != typeof t && (t = ct(t));
13174        for (var o = -1, a = this.length; ++o < a; )
13175            for (var s = this[o], u = -1, l = s.length; ++u < l; )
13176                if (r = s[u]) {
13177                    n = t.call(r.node, r.node.__data__, u),
13178                    i.push(e = []);
13179                    for (var c = -1, h = n.length; ++c < h; )
13180                        e.push({
13181                            node: n[c],
13182                            delay: r.delay,
13183                            duration: r.duration
13184                        })
13185                }
13186        return Ct(i, this.id, this.time).ease(this.ease())
13187    }
13188    ,
13189    ki.filter = function(t) {
13190        var e, n, r, i = [];
13191        "function" != typeof t && (t = vt(t));
13192        for (var o = 0, a = this.length; o < a; o++) {
13193            i.push(e = []);
13194            for (var n = this[o], s = 0, u = n.length; s < u; s++)
13195                (r = n[s]) && t.call(r.node, r.node.__data__, s) && e.push(r)
13196        }
13197        return Ct(i, this.id, this.time).ease(this.ease())
13198    }
13199    ,
13200    ki.attr = function(t, e) {
13201        if (arguments.length < 2) {
13202            for (e in t)
13203                this.attrTween(e, Tt(t[e], e));
13204            return this
13205        }
13206        return this.attrTween(t, Tt(e, t))
13207    }
13208    ,
13209    ki.attrTween = function(t, e) {
13210        function n(t, n) {
13211            var r = e.call(this, t, n, this.getAttribute(i));
13212            return r === Di ? (this.removeAttribute(i),
13213            null) : r && function(t) {
13214                this.setAttribute(i, r(t))
13215            }
13216        }
13217        function r(t, n) {
13218            var r = e.call(this, t, n, this.getAttributeNS(i.space, i.local));
13219            return r === Di ? (this.removeAttributeNS(i.space, i.local),
13220            null) : r && function(t) {
13221                this.setAttributeNS(i.space, i.local, r(t))
13222            }
13223        }
13224        var i = d3.ns.qualify(t);
13225        return this.tween("attr." + t, i.local ? r : n)
13226    }
13227    ,
13228    ki.style = function(t, e, n) {
13229        var r = arguments.length;
13230        if (r < 3) {
13231            if ("string" != typeof t) {
13232                r < 2 && (e = "");
13233                for (n in t)
13234                    this.styleTween(n, Tt(t[n], n), e);
13235                return this
13236            }
13237            n = ""
13238        }
13239        return this.styleTween(t, Tt(e, t), n)
13240    }
13241    ,
13242    ki.styleTween = function(t, e, n) {
13243        return arguments.length < 3 && (n = ""),
13244        this.tween("style." + t, function(r, i) {
13245            var o = e.call(this, r, i, window.getComputedStyle(this, null).getPropertyValue(t));
13246            return o === Di ? (this.style.removeProperty(t),
13247            null) : o && function(e) {
13248                this.style.setProperty(t, o(e), n)
13249            }
13250        })
13251    }
13252    ,
13253    ki.text = function(t) {
13254        return this.tween("text", function(e, n) {
13255            this.textContent = "function" == typeof t ? t.call(this, e, n) : t
13256        })
13257    }
13258    ,
13259    ki.remove = function() {
13260        return this.each("end.transition", function() {
13261            var t;
13262            !this.__transition__ && (t = this.parentNode) && t.removeChild(this)
13263        })
13264    }
13265    ,
13266    ki.delay = function(t) {
13267        return xt(this, "function" == typeof t ? function(e, n, r) {
13268            e.delay = 0 | t.call(e = e.node, e.__data__, n, r)
13269        }
13270        : (t |= 0,
13271        function(e) {
13272            e.delay = t
13273        }
13274        ))
13275    }
13276    ,
13277    ki.duration = function(t) {
13278        return xt(this, "function" == typeof t ? function(e, n, r) {
13279            e.duration = Math.max(1, 0 | t.call(e = e.node, e.__data__, n, r))
13280        }
13281        : (t = Math.max(1, 0 | t),
13282        function(e) {
13283            e.duration = t
13284        }
13285        ))
13286    }
13287    ,
13288    ki.transition = function() {
13289        return this.select(i)
13290    }
13291    ,
13292    d3.tween = function(t, e) {
13293        function n(n, r, i) {
13294            var o = t.call(this, n, r);
13295            return null == o ? "" != i && Di : i != o && e(i, o + "")
13296        }
13297        function r(n, r, i) {
13298            return i != t && e(i, t)
13299        }
13300        return "function" == typeof t ? n : null == t ? jt : (t += "",
13301        r)
13302    }
13303    ;
13304    var Qi, $i, Di = {}, Ii = 0, Ni = {}, Fi = null;
13305    d3.timer = function(t, e, n) {
13306        if (arguments.length < 3) {
13307            if (arguments.length < 2)
13308                e = 0;
13309            else if (!isFinite(e))
13310                return;
13311            n = Date.now()
13312        }
13313        var r = Ni[t.id];
13314        r && r.callback === t ? (r.then = n,
13315        r.delay = e) : Ni[t.id = ++Ii] = Fi = {
13316            callback: t,
13317            then: n,
13318            delay: e,
13319            next: Fi
13320        },
13321        Qi || ($i = clearTimeout($i),
13322        Qi = 1,
13323        Li(St))
13324    }
13325    ,
13326    d3.timer.flush = function() {
13327        for (var t, e = Date.now(), n = Fi; n; )
13328            t = e - n.then,
13329            n.delay || (n.flush = n.callback(t)),
13330            n = n.next;
13331        Et()
13332    }
13333    ;
13334    var Li = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || function(t) {
13335        setTimeout(t, 17)
13336    }
13337    ;
13338    d3.mouse = function(t) {
13339        return At(t, Q())
13340    }
13341    ;
13342    var Pi = /WebKit/.test(navigator.userAgent) ? -1 : 0;
13343    d3.touches = function(t, e) {
13344        return arguments.length < 2 && (e = Q().touches),
13345        e ? Hr(e).map(function(e) {
13346            var n = At(t, e);
13347            return n.identifier = e.identifier,
13348            n
13349        }) : []
13350    }
13351    ,
13352    d3.scale = {},
13353    d3.scale.linear = function() {
13354        return It([0, 1], [0, 1], d3.interpolate, !1)
13355    }
13356    ,
13357    d3.scale.log = function() {
13358        return zt(d3.scale.linear(), Ht)
13359    }
13360    ;
13361    var Oi = d3.format(".0e");
13362    Ht.pow = function(t) {
13363        return Math.pow(10, t)
13364    }
13365    ,
13366    Bt.pow = function(t) {
13367        return -Math.pow(10, -t)
13368    }
13369    ,
13370    d3.scale.pow = function() {
13371        return Vt(d3.scale.linear(), 1)
13372    }
13373    ,
13374    d3.scale.sqrt = function() {
13375        return d3.scale.pow().exponent(.5)
13376    }
13377    ,
13378    d3.scale.ordinal = function() {
13379        return Wt([], {
13380            t: "range",
13381            a: [[]]
13382        })
13383    }
13384    ,
13385    d3.scale.category10 = function() {
13386        return d3.scale.ordinal().range(qi)
13387    }
13388    ,
13389    d3.scale.category20 = function() {
13390        return d3.scale.ordinal().range(Ri)
13391    }
13392    ,
13393    d3.scale.category20b = function() {
13394        return d3.scale.ordinal().range(zi)
13395    }
13396    ,
13397    d3.scale.category20c = function() {
13398        return d3.scale.ordinal().range(Hi)
13399    }
13400    ;
13401    var qi = ["#1f77b4", "#ff7f0e", "#2ca02c", "#d62728", "#9467bd", "#8c564b", "#e377c2", "#7f7f7f", "#bcbd22", "#17becf"]
13402      , Ri = ["#1f77b4", "#aec7e8", "#ff7f0e", "#ffbb78", "#2ca02c", "#98df8a", "#d62728", "#ff989
vendor: 11,177 bytes, lines 13402-13724
134026", "#9467bd", "#c5b0d5", "#8c564b", "#c49c94", "#e377c2", "#f7b6d2", "#7f7f7f", "#c7c7c7", "#bcbd22", "#dbdb8d", "#17becf", "#9edae5"]
13403      , zi = ["#393b79", "#5254a3", "#6b6ecf", "#9c9ede", "#637939", "#8ca252", "#b5cf6b", "#cedb9c", "#8c6d31", "#bd9e39", "#e7ba52", "#e7cb94", "#843c39", "#ad494a", "#d6616b", "#e7969c", "#7b4173", "#a55194", "#ce6dbd", "#de9ed6"]
13404      , Hi = ["#3182bd", "#6baed6", "#9ecae1", "#c6dbef", "#e6550d", "#fd8d3c", "#fdae6b", "#fdd0a2", "#31a354", "#74c476", "#a1d99b", "#c7e9c0", "#756bb1", "#9e9ac8", "#bcbddc", "#dadaeb", "#636363", "#969696", "#bdbdbd", "#d9d9d9"];
13405    d3.scale.quantile = function() {
13406        return Kt([], [])
13407    }
13408    ,
13409    d3.scale.quantize = function() {
13410        return Gt(0, 1, [0, 1])
13411    }
13412    ,
13413    d3.scale.threshold = function() {
13414        return Yt([.5], [0, 1])
13415    }
13416    ,
13417    d3.scale.identity = function() {
13418        return Jt([0, 1])
13419    }
13420    ,
13421    d3.svg = {},
13422    d3.svg.arc = function() {
13423        function t() {
13424            var t = e.apply(this, arguments)
13425              , o = n.apply(this, arguments)
13426              , a = r.apply(this, arguments) + Bi
13427              , s = i.apply(this, arguments) + Bi
13428              , u = (s < a && (u = a,
13429            a = s,
13430            s = u),
13431            s - a)
13432              , l = u < Math.PI ? "0" : "1"
13433              , c = Math.cos(a)
13434              , h = Math.sin(a)
13435              , d = Math.cos(s)
13436              , f = Math.sin(s);
13437            return u >= Vi ? t ? "M0," + o + "A" + o + "," + o + " 0 1,1 0," + -o + "A" + o + "," + o + " 0 1,1 0," + o + "M0," + t + "A" + t + "," + t + " 0 1,0 0," + -t + "A" + t + "," + t + " 0 1,0 0," + t + "Z" : "M0," + o + "A" + o + "," + o + " 0 1,1 0," + -o + "A" + o + "," + o + " 0 1,1 0," + o + "Z" : t ? "M" + o * c + "," + o * h + "A" + o + "," + o + " 0 " + l + ",1 " + o * d + "," + o * f + "L" + t * d + "," + t * f + "A" + t + "," + t + " 0 " + l + ",0 " + t * c + "," + t * h + "Z" : "M" + o * c + "," + o * h + "A" + o + "," + o + " 0 " + l + ",1 " + o * d + "," + o * f + "L0,0Z"
13438        }
13439        var e = Xt
13440          , n = Zt
13441          , r = te
13442          , i = ee;
13443        return t.innerRadius = function(n) {
13444            return arguments.length ? (e = a(n),
13445            t) : e
13446        }
13447        ,
13448        t.outerRadius = function(e) {
13449            return arguments.length ? (n = a(e),
13450            t) : n
13451        }
13452        ,
13453        t.startAngle = function(e) {
13454            return arguments.length ? (r = a(e),
13455            t) : r
13456        }
13457        ,
13458        t.endAngle = function(e) {
13459            return arguments.length ? (i = a(e),
13460            t) : i
13461        }
13462        ,
13463        t.centroid = function() {
13464            var t = (e.apply(this, arguments) + n.apply(this, arguments)) / 2
13465              , o = (r.apply(this, arguments) + i.apply(this, arguments)) / 2 + Bi;
13466            return [Math.cos(o) * t, Math.sin(o) * t]
13467        }
13468        ,
13469        t
13470    }
13471    ;
13472    var Bi = -Math.PI / 2
13473      , Vi = 2 * Math.PI - 1e-6;
13474    d3.svg.line = function() {
13475        return ne(r)
13476    }
13477    ;
13478    var Ui = d3.map({
13479        linear: oe,
13480        "linear-closed": ae,
13481        "step-before": se,
13482        "step-after": ue,
13483        basis: pe,
13484        "basis-open": ge,
13485        "basis-closed": me,
13486        bundle: ye,
13487        cardinal: he,
13488        "cardinal-open": le,
13489        "cardinal-closed": ce,
13490        monotone: Ce
13491    });
13492    Ui.forEach(function(t, e) {
13493        e.key = t,
13494        e.closed = /-closed$/.test(t)
13495    });
13496    var Wi = [0, 2 / 3, 1 / 3, 0]
13497      , Ki = [0, 1 / 3, 2 / 3, 0]
13498      , Gi = [0, 1 / 6, 2 / 3, 1 / 6];
13499    d3.svg.line.radial = function() {
13500        var t = ne(ke);
13501        return t.radius = t.x,
13502        delete t.x,
13503        t.angle = t.y,
13504        delete t.y,
13505        t
13506    }
13507    ,
13508    se.reverse = ue,
13509    ue.reverse = se,
13510    d3.svg.area = function() {
13511        return je(r)
13512    }
13513    ,
13514    d3.svg.area.radial = function() {
13515        var t = je(ke);
13516        return t.radius = t.x,
13517        delete t.x,
13518        t.innerRadius = t.x0,
13519        delete t.x0,
13520        t.outerRadius = t.x1,
13521        delete t.x1,
13522        t.angle = t.y,
13523        delete t.y,
13524        t.startAngle = t.y0,
13525        delete t.y0,
13526        t.endAngle = t.y1,
13527        delete t.y1,
13528        t
13529    }
13530    ,
13531    d3.svg.chord = function() {
13532        function t(t, a) {
13533            var u = e(this, o, t, a)
13534              , l = e(this, s, t, a);
13535            return "M" + u.p0 + r(u.r, u.p1, u.a1 - u.a0) + (n(u, l) ? i(u.r, u.p1, u.r, u.p0) : i(u.r, u.p1, l.r, l.p0) + r(l.r, l.p1, l.a1 - l.a0) + i(l.r, l.p1, u.r, u.p0)) + "Z"
13536        }
13537        function e(t, e, n, r) {
13538            var i = e.call(t, n, r)
13539              , o = u.call(t, i, r)
13540              , a = l.call(t, i, r) + Bi
13541              , s = c.call(t, i, r) + Bi;
13542            return {
13543                r: o,
13544                a0: a,
13545                a1: s,
13546                p0: [o * Math.cos(a), o * Math.sin(a)],
13547                p1: [o * Math.cos(s), o * Math.sin(s)]
13548            }
13549        }
13550        function n(t, e) {
13551            return t.a0 == e.a0 && t.a1 == e.a1
13552        }
13553        function r(t, e, n) {
13554            return "A" + t + "," + t + " 0 " + +(n > Math.PI) + ",1 " + e
13555        }
13556        function i(t, e, n, r) {
13557            return "Q 0,0 " + r
13558        }
13559        var o = Te
13560          , s = Se
13561          , u = Ee
13562          , l = te
13563          , c = ee;
13564        return t.radius = function(e) {
13565            return arguments.length ? (u = a(e),
13566            t) : u
13567        }
13568        ,
13569        t.source = function(e) {
13570            return arguments.length ? (o = a(e),
13571            t) : o
13572        }
13573        ,
13574        t.target = function(e) {
13575            return arguments.length ? (s = a(e),
13576            t) : s
13577        }
13578        ,
13579        t.startAngle = function(e) {
13580            return arguments.length ? (l = a(e),
13581            t) : l
13582        }
13583        ,
13584        t.endAngle = function(e) {
13585            return arguments.length ? (c = a(e),
13586            t) : c
13587        }
13588        ,
13589        t
13590    }
13591    ,
13592    d3.svg.diagonal = function() {
13593        function t(t, i) {
13594            var o = e.call(this, t, i)
13595              , a = n.call(this, t, i)
13596              , s = (o.y + a.y) / 2
13597              , u = [o, {
13598                x: o.x,
13599                y: s
13600            }, {
13601                x: a.x,
13602                y: s
13603            }, a];
13604            return u = u.map(r),
13605            "M" + u[0] + "C" + u[1] + " " + u[2] + " " + u[3]
13606        }
13607        var e = Te
13608          , n = Se
13609          , r = Ae;
13610        return t.source = function(n) {
13611            return arguments.length ? (e = a(n),
13612            t) : e
13613        }
13614        ,
13615        t.target = function(e) {
13616            return arguments.length ? (n = a(e),
13617            t) : n
13618        }
13619        ,
13620        t.projection = function(e) {
13621            return arguments.length ? (r = e,
13622            t) : r
13623        }
13624        ,
13625        t
13626    }
13627    ,
13628    d3.svg.diagonal.radial = function() {
13629        var t = d3.svg.diagonal()
13630          , e = Ae
13631          , n = t.projection;
13632        return t.projection = function(t) {
13633            return arguments.length ? n(Me(e = t)) : e
13634        }
13635        ,
13636        t
13637    }
13638    ,
13639    d3.svg.mouse = d3.mouse,
13640    d3.svg.touches = d3.touches,
13641    d3.svg.symbol = function() {
13642        function t(t, r) {
13643            return (Yi.get(e.call(this, t, r)) || De)(n.call(this, t, r))
13644        }
13645        var e = $e
13646          , n = Qe;
13647        return t.type = function(n) {
13648            return arguments.length ? (e = a(n),
13649            t) : e
13650        }
13651        ,
13652        t.size = function(e) {
13653            return arguments.length ? (n = a(e),
13654            t) : n
13655        }
13656        ,
13657        t
13658    }
13659    ;
13660    var Yi = d3.map({
13661        circle: De,
13662        cross: function(t) {
13663            var e = Math.sqrt(t / 5) / 2;
13664            return "M" + -3 * e + "," + -e + "H" + -e + "V" + -3 * e + "H" + e + "V" + -e + "H" + 3 * e + "V" + e + "H" + e + "V" + 3 * e + "H" + -e + "V" + e + "H" + -3 * e + "Z"
13665        },
13666        diamond: function(t) {
13667            var e = Math.sqrt(t / (2 * Xi))
13668              , n = e * Xi;
13669            return "M0," + -e + "L" + n + ",0 0," + e + " " + -n + ",0Z"
13670        },
13671        square: function(t) {
13672            var e = Math.sqrt(t) / 2;
13673            return "M" + -e + "," + -e + "L" + e + "," + -e + " " + e + "," + e + " " + -e + "," + e + "Z"
13674        },
13675        "triangle-down": function(t) {
13676            var e = Math.sqrt(t / Ji)
13677              , n = e * Ji / 2;
13678            return "M0," + n + "L" + e + "," + -n + " " + -e + "," + -n + "Z"
13679        },
13680        "triangle-up": function(t) {
13681            var e = Math.sqrt(t / Ji)
13682              , n = e * Ji / 2;
13683            return "M0," + -n + "L" + e + "," + n + " " + -e + "," + n + "Z"
13684        }
13685    });
13686    d3.svg.symbolTypes = Yi.keys();
13687    var Ji = Math.sqrt(3)
13688      , Xi = Math.tan(30 * Math.PI / 180);
13689    d3.svg.axis = function() {
13690        function t(t) {
13691            t.each(function() {
13692                var t, h = d3.select(this), d = null == l ? n.ticks ? n.ticks.apply(n, u) : n.domain() : l, f = null == e ? n.tickFormat ? n.tickFormat.apply(n, u) : String : e, p = Fe(n, d, c), g = h.selectAll(".minor").data(p, String), m = g.enter().insert("line", "g").attr("class", "tick minor").style("opacity", 1e-6), y = d3.transition(g.exit()).style("opacity", 1e-6).remove(), v = d3.transition(g).style("opacity", 1), b = h.selectAll("g").data(d, String), w = b.enter().insert("g", "path").style("opacity", 1e-6), x = d3.transition(b.exit()).style("opacity", 1e-6).remove(), _ = d3.transition(b).style("opacity", 1), C = Qt(n), k = h.selectAll(".domain").data([0]), j = (k.enter().append("path").attr("class", "domain"),
13693                d3.transition(k)), T = n.copy(), S = this.__chart__ || T;
13694                this.__chart__ = T,
13695                w.append("line").attr("class", "tick"),
13696                w.append("text");
13697                var E = w.select("line")
13698                  , A = _.select("line")
13699                  , M = b.select("text").text(f)
13700                  , Q = w.select("text")
13701                  , $ = _.select("text");
13702                switch (r) {
13703                case "bottom":
13704                    t = Ie,
13705                    m.attr("y2", o),
13706                    v.attr("x2", 0).attr("y2", o),
13707                    E.attr("y2", i),
13708                    Q.attr("y", Math.max(i, 0) + s),
13709                    A.attr("x2", 0).attr("y2", i),
13710                    $.attr("x", 0).attr("y", Math.max(i, 0) + s),
13711                    M.attr("dy", ".71em").attr("text-anchor", "middle"),
13712                    j.attr("d", "M" + C[0] + "," + a + "V0H" + C[1] + "V" + a);
13713                    break;
13714                case "top":
13715                    t = Ie,
13716                    m.attr("y2", -o),
13717                    v.attr("x2", 0).attr("y2", -o),
13718                    E.attr("y2", -i),
13719                    Q.attr("y", -(Math.max(i, 0) + s)),
13720                    A.attr("x2", 0).attr("y2", -i),
13721                    $.attr("x", 0).attr("y", -(Math.max(i, 0) + s)),
13722                    M.attr("dy", "0em").attr("text-anchor", "middle"),
13723                    j.attr("d", "M" + C[0] + "," + -a + "V0H" + C[1] + "V" + -a);
13724                    break;
13725                case "left":
13726                    t = Ne,
13727                    m.attr("x2", -o),
13728                    v.attr("x2", -o).attr("y2", 0),
13729                    E.attr("x2", -i),
13730                    Q.attr("x", -(Math.max(i, 0) + s)),
13731                    A.attr("x2", -i).attr("y2", 0),
13732                    $.attr("x", -(Math.max(i, 0) + s)).attr("y", 0),
13733                    M.attr("dy", ".32em").attr("text-anchor", "end"),
13734                    j.attr("d", "M" + -a + "," + C[0] + "H0V" + C[1] + "H" + -a);
13735                    break;
13736                case "right":
13737                    t = Ne,
13738                    m.attr("x2", o),
13739                    v.attr("x2", o).attr("y2", 0),
13740                    E.attr("x2", i),
13741                    Q.attr("x", Math.max(i, 0) + s),
13742                    A.attr("x2", i).attr("y2", 0),
13743                    $.attr("x", Math.max(i, 0) + s).attr("y", 0),
13744                    M.attr("dy", ".32em").attr("text-anchor", "start"),
13745                    j.attr("d", "M" + a + "," + C[0] + "H0V" + C[1] + "H" + a)
13746                }
13747                if (n.ticks)
13748                    w.call(t, S),
13749                    _.call(t, T),
13750                    x.call(t, T),
13751                    m.call(t, S),
13752                    v.call(t, T),
13753                    y.call(t, T);
13754                else {
13755                    var D = T.rangeBand() / 2
13756                      , I = function(t) {
13757                        return T(t) + D
13758                    };
13759                    w.call(t, I),
13760                    _.call(t, I)
13761                }
13762            })
13763        }
13764        var e, n = d3.scale.linear(), r = "bottom", i = 6, o = 6, a = 6, s = 3, u = [10], l = null, c = 0;
13765        return t.scale = function(e) {
13766            return arguments.length ? (n = e,
13767            t) : n
13768        }
13769        ,
13770        t.orient = function(e) {
13771            return arguments.length ? (r = e,
13772            t) : r
13773        }
13774        ,
13775        t.ticks = function() {
13776            return arguments.length ? (u = arguments,
13777            t) : u
13778        }
13779        ,
13780        t.tickValues = function(e) {
13781            return arguments.length ? (l = e,
13782            t) : l
13783        }
13784        ,
13785        t.tickFormat = function(n) {
13786            return arguments.length ? (e = n,
13787            t) : e
13788        }
13789        ,
13790        t.tickSize = function(e, n, r) {
13791            if (!arguments.length)
13792                return i;
13793            var s = arguments.length - 1;
13794            return i = +e,
13795            o = s > 1 ? +n : i,
13796            a = s > 0 ? +arguments[s] : i,
13797            t
13798        }
13799        ,
13800        t.tickPadding = function(e) {
13801            return arguments.length ? (s = +e,
13802            t) : s
13803        }
13804        ,
13805        t.tickSubdivide = function(e) {
13806            return arguments.length ? (c = +e,
13807            t) : c
13808        }
13809        ,
13810        t
13811    }
13812    ,
13813    d3.svg.brush = function() {
13814        function t(o) {
13815            o.each(function() {
13816                var o, a = d3.select(this), c = a.selectAll(".background").data([0]), h = a.selectAll(".extent").data([0]), d = a.selectAll(".resize").data(l, String);
13817                a.style("pointer-events", "all").on("mousedown.brush", i).on("touchstart.brush", i),
13818                c.enter().append("rect").attr("class", "background").style("visibility", "hidden").style("cursor", "crosshair"),
13819                h.enter().append("rect").attr("class", "extent").style("cursor", "move"),
13820                d.enter().append("g").attr("class", function(t) {
13821                    return "resize " + t
13822                }).style("cursor", function(t) {
13823                    return Zi[t]
13824                }).append("rect").attr("x", function(t) {
13825                    return /[ew]$/.test(t) ? -3 : null
13826                }).attr("y", function(t) {
13827                    return /^[ns]/.test(t) ? -3 : null
13828                }).attr("width", 6).attr("height", 6).style("visibility", "hidden"),
13829                d.style("display", t.empty() ? "none" : null),
13830                d.exit().remove(),
13831                s && (o = Qt(s),
13832                c.attr("x", o[0]).attr("width", o[1] - o[0]),
13833                n(a)),
13834                u && (o = Qt(u),
13835                c.attr("y", o[0]).attr("height", o[1] - o[0]),
13836                r(a)),
13837                e(a)
13838            })
13839        }
13840        function e(t) {
13841            t.selectAll(".resize").attr("transform", function(t) {
13842                return "translate(" + c[+/e$/.test(t)][0] + "," + c[+/^
13842s/.test(t)][1] + ")"
13843            })
13844        }
13845        function n(t) {
13846            t.select(".extent").attr("x", c[0][0]),
13847            t.selectAll(".extent,.n>rect,.s>rect").attr("width", c[1][0] - c[0][0])
13848        }
13849        function r(t) {
13850            t.select(".extent").attr("y", c[0][1]),
13851            t.selectAll(".extent,.e>rect,.w>rect").attr("height", c[1][1] - c[0][1])
13852        }
13853        function i() {
13854            function i() {
13855                var t = d3.event.changedTouches;
13856                return t ? d3.touches(y, t)[0] : d3.mouse(y)
13857            }
13858            function l() {
13859                32 == d3.event.keyCode && (k || (g = null,
13860                j[0] -= c[1][0],
13861                j[1] -= c[1][1],
13862                k = 2),
13863                M())
13864            }
13865            function h() {
13866                32 == d3.event.keyCode && 2 == k && (j[0] += c[1][0],
13867                j[1] += c[1][1],
13868                k = 0,
13869                M())
13870            }
13871            function d() {
13872                var t = i()
13873                  , o = !1;
13874                m && (t[0] += m[0],
13875                t[1] += m[1]),
13876                k || (d3.event.altKey ? (g || (g = [(c[0][0] + c[1][0]) / 2, (c[0][1] + c[1][1]) / 2]),
13877                j[0] = c[+(t[0] < g[0])][0],
13878                j[1] = c[+(t[1] < g[1])][1]) : g = null),
13879                _ && f(t, s, 0) && (n(w),
13880                o = !0),
13881                C && f(t, u, 1) && (r(w),
13882                o = !0),
13883                o && (e(w),
13884                b({
13885                    type: "brush",
13886                    mode: k ? "move" : "resize"
13887                }))
13888            }
13889            function f(t, e, n) {
13890                var r, i, a = Qt(e), s = a[0], u = a[1], l = j[n], h = c[1][n] - c[0][n];
13891                if (k && (s -= l,
13892                u -= h + l),
13893                r = Math.max(s, Math.min(u, t[n])),
13894                k ? i = (r += l) + h : (g && (l = Math.max(s, Math.min(u, 2 * g[n] - r))),
13895                l < r ? (i = r,
13896                r = l) : i = l),
13897                c[0][n] !== r || c[1][n] !== i)
13898                    return o = null,
13899                    c[0][n] = r,
13900                    c[1][n] = i,
13901                    !0
13902            }
13903            function p() {
13904                d(),
13905                w.style("pointer-events", "all").selectAll(".resize").style("display", t.empty() ? "none" : null),
13906                d3.select("body").style("cursor", null),
13907                T.on("mousemove.brush", null).on("mouseup.brush", null).on("touchmove.brush", null).on("touchend.brush", null).on("keydown.brush", null).on("keyup.brush", null),
13908                b({
13909                    type: "brushend"
13910                }),
13911                M()
13912            }
13913            var g, m, y = this, v = d3.select(d3.event.target), b = a.of(y, arguments), w = d3.select(y), x = v.datum(), _ = !/^(n|s)$/.test(x) && s, C = !/^(e|w)$/.test(x) && u, k = v.classed("extent"), j = i(), T = d3.select(window).on("mousemove.brush", d).on("mouseup.brush", p).on("touchmove.brush", d).on("touchend.brush", p).on("keydown.brush", l).on("keyup.brush", h);
13914            if (k)
13915                j[0] = c[0][0] - j[0],
13916                j[1] = c[0][1] - j[1];
13917            else if (x) {
13918                var S = +/w$/.test(x)
13919                  , E = +/^n/.test(x);
13920                m = [c[1 - S][0] - j[0], c[1 - E][1] - j[1]],
13921                j[0] = c[S][0],
13922                j[1] = c[E][1]
13923            } else
13924                d3.event.altKey && (g = j.slice());
13925            w.style("pointer-events", "none").selectAll(".resize").style("display", null),
13926            d3.select("body").style("cursor", v.style("cursor")),
13927            b({
13928                type: "brushstart"
13929            }),
13930            d(),
13931            M()
13932        }
13933        var o, a = $(t, "brushstart", "brush", "brushend"), s = null, u = null, l = to[0], c = [[0, 0], [0, 0]];
13934        return t.x = function(e) {
13935            return arguments.length ? (s = e,
13936            l = to[!s << 1 | !u],
13937            t) : s
13938        }
13939        ,
13940        t.y = function(e) {
13941            return arguments.length ? (u = e,
13942            l = to[!s << 1 | !u],
13943            t) : u
13944        }
13945        ,
13946        t.extent = function(e) {
13947            var n, r, i, a, l;
13948            return arguments.length ? (o = [[0, 0], [0, 0]],
13949            s && (n = e[0],
13950            r = e[1],
13951            u && (n = n[0],
13952            r = r[0]),
13953            o[0][0] = n,
13954            o[1][0] = r,
13955            s.invert && (n = s(n),
13956            r = s(r)),
13957            r < n && (l = n,
13958            n = r,
13959            r = l),
13960            c[0][0] = 0 | n,
13961            c[1][0] = 0 | r),
13962            u && (i = e[0],
13963            a = e[1],
13964            s && (i = i[1],
13965            a = a[1]),
13966            o[0][1] = i,
13967            o[1][1] = a,
13968            u.invert && (i = u(i),
13969            a = u(a)),
13970            a < i && (l = i,
13971            i = a,
13972            a = l),
13973            c[0][1] = 0 | i,
13974            c[1][1] = 0 | a),
13975            t) : (e = o || c,
13976            s && (n = e[0][0],
13977            r = e[1][0],
13978            o || (n = c[0][0],
13979            r = c[1][0],
13980            s.invert && (n = s.invert(n),
13981            r = s.invert(r)),
13982            r < n && (l = n,
13983            n = r,
13984            r = l))),
13985            u && (i = e[0][1],
13986            a = e[1][1],
13987            o || (i = c[0][1],
13988            a = c[1][1],
13989            u.invert && (i = u.invert(i),
13990            a = u.invert(a)),
13991            a < i && (l = i,
13992            i = a,
13993            a = l))),
13994            s && u ? [[n, i], [r, a]] : s ? [n, r] : u && [i, a])
13995        }
13996        ,
13997        t.clear = function() {
13998            return o = null,
13999            c[0][0] = c[0][1] = c[1][0] = c[1][1] = 0,
14000            t
14001        }
14002        ,
14003        t.empty = function() {
14004            return s && c[0][0] === c[1][0] || u && c[0][1] === c[1][1]
14005        }
14006        ,
14007        d3.rebind(t, a, "on")
14008    }
14009    ;
14010    var Zi = {
14011        n: "ns-resize",
14012        e: "ew-resize",
14013        s: "ns-resize",
14014        w: "ew-resize",
14015        nw: "nwse-resize",
14016        ne: "nesw-resize",
14017        se: "nwse-resize",
14018        sw: "nesw-resize"
14019    }
14020      , to = [["n", "e", "s", "w", "nw", "ne", "se", "sw"], ["e", "w"], ["n", "s"], []];
14021    d3.behavior = {},
14022    d3.behavior.drag = function() {
14023        function t() {
14024            this.on("mousedown.drag", e).on("touchstart.drag", e)
14025        }
14026        function e() {
14027            function t() {
14028                var t = s.parentNode;
14029                return c ? d3.touches(t).filter(function(t) {
14030                    return t.identifier === c
14031                })[0] : d3.mouse(t)
14032            }
14033            function e() {
14034                if (!s.parentNode)
14035                    return i();
14036                var e = t()
14037                  , n = e[0] - h[0]
14038                  , r = e[1] - h[1];
14039                d |= n | r,
14040                h = e,
14041                M(),
14042                u({
14043                    type: "drag",
14044                    x: e[0] + a[0],
14045                    y: e[1] + a[1],
14046                    dx: n,
14047                    dy: r
14048                })
14049            }
14050            function i() {
14051                u({
14052                    type: "dragend"
14053                }),
14054                d && (M(),
14055                d3.event.target === l && f.on("click.drag", o, !0)),
14056                f.on(c ? "touchmove.drag-" + c : "mousemove.drag", null).on(c ? "touchend.drag-" + c : "mouseup.drag", null)
14057            }
14058            function o() {
14059                M(),
14060                f.on("click.drag", null)
14061            }
14062            var a, s = this, u = n.of(s, arguments), l = d3.event.target, c = d3.event.touches && d3.event.changedTouches[0].identifier, h = t(), d = 0, f = d3.select(window).on(c ? "touchmove.drag-" + c : "mousemove.drag", e).on(c ? "touchend.drag-" + c : "mouseup.drag", i, !0);
14063            r ? (a = r.apply(s, arguments),
14064            a = [a.x - h[0], a.y - h[1]]) : a = [0, 0],
14065            c || M(),
14066            u({
14067                type: "dragstart"
14068            })
14069        }
14070        var n = $(t, "drag", "dragstart", "dragend")
14071          , r = null;
14072        return t.origin = function(e) {
14073            return arguments.length ? (r = e,
14074            t) : r
14075        }
14076        ,
14077        d3.rebind(t, n, "on")
14078    }
14079    ,
14080    d3.behavior.zoom = function() {
14081        function t() {
14082            this.on("mousedown.zoom", a).on("mousewheel.zoom", s).on("mousemove.zoom", u).on("DOMMouseScroll.zoom", s).on("dblclick.zoom", l).on("touchstart.zoom", c).on("touchmove.zoom", h).on("touchend.zoom", c)
14083        }
14084        function e(t) {
14085            return [(t[0] - b[0]) / w, (t[1] - b[1]) / w]
14086        }
14087        function n(t) {
14088            return [t[0] * w + b[0], t[1] * w + b[1]]
14089        }
14090        function r(t) {
14091            w = Math.max(x[0], Math.min(x[1], t))
14092        }
14093        function i(t, e) {
14094            e = n(e),
14095            b[0] += t[0] - e[0],
14096            b[1] += t[1] - e[1]
14097        }
14098        function o(t) {
14099            g && g.domain(p.range().map(function(t) {
14100                return (t - b[0]) / w
14101            }).map(p.invert)),
14102            y && y.domain(m.range().map(function(t) {
14103                return (t - b[1]) / w
14104            }).map(m.invert)),
14105            d3.event.preventDefault(),
14106            t({
14107                type: "zoom",
14108                scale: w,
14109                translate: b
14110            })
14111        }
14112        function a() {
14113            function t() {
14114                l = 1,
14115                i(d3.mouse(a), h),
14116                o(s)
14117            }
14118            function n() {
14119                l && M(),
14120                c.on("mousemove.zoom", null).on("mouseup.zoom", null),
14121                l && d3.event.target === u && c.on("click.zoom", r, !0)
14122            }
14123            function r() {
14124                M(),
14125                c.on("click.zoom", null)
14126            }
14127            var a = this
14128              , s = _.of(a, arguments)
14129              , u = d3.event.target
14130              , l = 0
14131              , c = d3.select(window).on("mousemove.zoom", t).on("mouseup.zoom", n)
14132              , h = e(d3.mouse(a));
14133            window.focus(),
14134            M()
14135        }
14136        function s() {
14137            d || (d = e(d3.mouse(this))),
14138            r(Math.pow(2, .002 * Le()) * w),
14139            i(d3.mouse(this), d),
14140            o(_.of(this, arguments))
14141        }
14142        function u() {
14143            d = null
14144        }
14145        function l() {
14146            var t = d3.mouse(this)
14147              , n = e(t);
14148            r(d3.event.shiftKey ? w / 2 : 2 * w),
14149            i(t, n),
14150            o(_.of(this, arguments))
14151        }
14152        function c() {
14153            var t = d3.touches(this)
14154              , n = Date.now();
14155            if (f = w,
14156            d = {},
14157            t.forEach(function(t) {
14158                d[t.identifier] = e(t)
14159            }),
14160            M(),
14161            1 === t.length) {
14162                if (n - v < 500) {
14163                    var a = t[0]
14164                      , s = e(t[0]);
14165                    r(2 * w),
14166                    i(a, s),
14167                    o(_.of(this, arguments))
14168                }
14169                v = n
14170            }
14171        }
14172        function h() {
14173            var t = d3.touches(this)
14174              , e = t[0]
vendor: 32,489 bytes, lines 14175-15213
14175              , n = d[e.identifier];
14176            if (a = t[1]) {
14177                var a, s = d[a.identifier];
14178                e = [(e[0] + a[0]) / 2, (e[1] + a[1]) / 2],
14179                n = [(n[0] + s[0]) / 2, (n[1] + s[1]) / 2],
14180                r(d3.event.scale * f)
14181            }
14182            i(e, n),
14183            v = null,
14184            o(_.of(this, arguments))
14185        }
14186        var d, f, p, g, m, y, v, b = [0, 0], w = 1, x = no, _ = $(t, "zoom");
14187        return t.translate = function(e) {
14188            return arguments.length ? (b = e.map(Number),
14189            t) : b
14190        }
14191        ,
14192        t.scale = function(e) {
14193            return arguments.length ? (w = +e,
14194            t) : w
14195        }
14196        ,
14197        t.scaleExtent = function(e) {
14198            return arguments.length ? (x = null == e ? no : e.map(Number),
14199            t) : x
14200        }
14201        ,
14202        t.x = function(e) {
14203            return arguments.length ? (g = e,
14204            p = e.copy(),
14205            t) : g
14206        }
14207        ,
14208        t.y = function(e) {
14209            return arguments.length ? (y = e,
14210            m = e.copy(),
14211            t) : y
14212        }
14213        ,
14214        d3.rebind(t, _, "on")
14215    }
14216    ;
14217    var eo, no = [0, 1 / 0];
14218    d3.layout = {},
14219    d3.layout.bundle = function() {
14220        return function(t) {
14221            for (var e = [], n = -1, r = t.length; ++n < r; )
14222                e.push(Pe(t[n]));
14223            return e
14224        }
14225    }
14226    ,
14227    d3.layout.chord = function() {
14228        function t() {
14229            var t, l, h, d, f, p = {}, g = [], m = d3.range(o), y = [];
14230            for (n = [],
14231            r = [],
14232            t = 0,
14233            d = -1; ++d < o; ) {
14234                for (l = 0,
14235                f = -1; ++f < o; )
14236                    l += i[d][f];
14237                g.push(l),
14238                y.push(d3.range(o)),
14239                t += l
14240            }
14241            for (a && m.sort(function(t, e) {
14242                return a(g[t], g[e])
14243            }),
14244            s && y.forEach(function(t, e) {
14245                t.sort(function(t, n) {
14246                    return s(i[e][t], i[e][n])
14247                })
14248            }),
14249            t = (2 * Math.PI - c * o) / t,
14250            l = 0,
14251            d = -1; ++d < o; ) {
14252                for (h = l,
14253                f = -1; ++f < o; ) {
14254                    var v = m[d]
14255                      , b = y[v][f]
14256                      , w = i[v][b]
14257                      , x = l
14258                      , _ = l += w * t;
14259                    p[v + "-" + b] = {
14260                        index: v,
14261                        subindex: b,
14262                        startAngle: x,
14263                        endAngle: _,
14264                        value: w
14265                    }
14266                }
14267                r[v] = {
14268                    index: v,
14269                    startAngle: h,
14270                    endAngle: l,
14271                    value: (l - h) / t
14272                },
14273                l += c
14274            }
14275            for (d = -1; ++d < o; )
14276                for (f = d - 1; ++f < o; ) {
14277                    var C = p[d + "-" + f]
14278                      , k = p[f + "-" + d];
14279                    (C.value || k.value) && n.push(C.value < k.value ? {
14280                        source: k,
14281                        target: C
14282                    } : {
14283                        source: C,
14284                        target: k
14285                    })
14286                }
14287            u && e()
14288        }
14289        function e() {
14290            n.sort(function(t, e) {
14291                return u((t.source.value + t.target.value) / 2, (e.source.value + e.target.value) / 2)
14292            })
14293        }
14294        var n, r, i, o, a, s, u, l = {}, c = 0;
14295        return l.matrix = function(t) {
14296            return arguments.length ? (o = (i = t) && i.length,
14297            n = r = null,
14298            l) : i
14299        }
14300        ,
14301        l.padding = function(t) {
14302            return arguments.length ? (c = t,
14303            n = r = null,
14304            l) : c
14305        }
14306        ,
14307        l.sortGroups = function(t) {
14308            return arguments.length ? (a = t,
14309            n = r = null,
14310            l) : a
14311        }
14312        ,
14313        l.sortSubgroups = function(t) {
14314            return arguments.length ? (s = t,
14315            n = null,
14316            l) : s
14317        }
14318        ,
14319        l.sortChords = function(t) {
14320            return arguments.length ? (u = t,
14321            n && e(),
14322            l) : u
14323        }
14324        ,
14325        l.chords = function() {
14326            return n || t(),
14327            n
14328        }
14329        ,
14330        l.groups = function() {
14331            return r || t(),
14332            r
14333        }
14334        ,
14335        l
14336    }
14337    ,
14338    d3.layout.force = function() {
14339        function t(t) {
14340            return function(e, n, r, i, o) {
14341                if (e.point !== t) {
14342                    var a = e.cx - t.x
14343                      , s = e.cy - t.y
14344                      , u = 1 / Math.sqrt(a * a + s * s);
14345                    if ((i - n) * u < y) {
14346                        var l = e.charge * u * u;
14347                        return t.px -= a * l,
14348                        t.py -= s * l,
14349                        !0
14350                    }
14351                    if (e.point && isFinite(u)) {
14352                        var l = e.pointCharge * u * u;
14353                        t.px -= a * l,
14354                        t.py -= s * l
14355                    }
14356                }
14357                return !e.charge
14358            }
14359        }
14360        function e(t) {
14361            t.px = d3.event.x,
14362            t.py = d3.event.y,
14363            l.resume()
14364        }
14365        var n, i, o, s, u, l = {}, c = d3.dispatch("start", "tick", "end"), h = [1, 1], d = .9, f = Ue, p = We, g = -30, m = .1, y = .8, v = [], b = [];
14366        return l.tick = function() {
14367            if ((i *= .99) < .005)
14368                return c.end({
14369                    type: "end",
14370                    alpha: i = 0
14371                }),
14372                !0;
14373            var e, n, r, a, l, f, p, y, w, x = v.length, _ = b.length;
14374            for (n = 0; n < _; ++n)
14375                r = b[n],
14376                a = r.source,
14377                l = r.target,
14378                y = l.x - a.x,
14379                w = l.y - a.y,
14380                (f = y * y + w * w) && (f = i * s[n] * ((f = Math.sqrt(f)) - o[n]) / f,
14381                y *= f,
14382                w *= f,
14383                l.x -= y * (p = a.weight / (l.weight + a.weight)),
14384                l.y -= w * p,
14385                a.x += y * (p = 1 - p),
14386                a.y += w * p);
14387            if ((p = i * m) && (y = h[0] / 2,
14388            w = h[1] / 2,
14389            n = -1,
14390            p))
14391                for (; ++n < x; )
14392                    r = v[n],
14393                    r.x += (y - r.x) * p,
14394                    r.y += (w - r.y) * p;
14395            if (g)
14396                for (Ve(e = d3.geom.quadtree(v), i, u),
14397                n = -1; ++n < x; )
14398                    (r = v[n]).fixed || e.visit(t(r));
14399            for (n = -1; ++n < x; )
14400                r = v[n],
14401                r.fixed ? (r.x = r.px,
14402                r.y = r.py) : (r.x -= (r.px - (r.px = r.x)) * d,
14403                r.y -= (r.py - (r.py = r.y)) * d);
14404            c.tick({
14405                type: "tick",
14406                alpha: i
14407            })
14408        }
14409        ,
14410        l.nodes = function(t) {
14411            return arguments.length ? (v = t,
14412            l) : v
14413        }
14414        ,
14415        l.links = function(t) {
14416            return arguments.length ? (b = t,
14417            l) : b
14418        }
14419        ,
14420        l.size = function(t) {
14421            return arguments.length ? (h = t,
14422            l) : h
14423        }
14424        ,
14425        l.linkDistance = function(t) {
14426            return arguments.length ? (f = a(t),
14427            l) : f
14428        }
14429        ,
14430        l.distance = l.linkDistance,
14431        l.linkStrength = function(t) {
14432            return arguments.length ? (p = a(t),
14433            l) : p
14434        }
14435        ,
14436        l.friction = function(t) {
14437            return arguments.length ? (d = t,
14438            l) : d
14439        }
14440        ,
14441        l.charge = function(t) {
14442            return arguments.length ? (g = "function" == typeof t ? t : +t,
14443            l) : g
14444        }
14445        ,
14446        l.gravity = function(t) {
14447            return arguments.length ? (m = t,
14448            l) : m
14449        }
14450        ,
14451        l.theta = function(t) {
14452            return arguments.length ? (y = t,
14453            l) : y
14454        }
14455        ,
14456        l.alpha = function(t) {
14457            return arguments.length ? (i ? i = t > 0 ? t : 0 : t > 0 && (c.start({
14458                type: "start",
14459                alpha: i = t
14460            }),
14461            d3.timer(l.tick)),
14462            l) : i
14463        }
14464        ,
14465        l.start = function() {
14466            function t(t, n) {
14467                for (var r, i = e(), o = -1, a = i.length; ++o < a; )
14468                    if (!isNaN(r = i[o][t]))
14469                        return r;
14470                return Math.random() * n
14471            }
14472            function e() {
14473                if (!i) {
14474                    for (i = [],
14475                    r = 0; r < c; ++r)
14476                        i[r] = [];
14477                    for (r = 0; r < d; ++r) {
14478                        var t = b[r];
14479                        i[t.source.index].push(t.target),
14480                        i[t.target.index].push(t.source)
14481                    }
14482                }
14483                return i[n]
14484            }
14485            var n, r, i, a, c = v.length, d = b.length, m = h[0], y = h[1];
14486            for (n = 0; n < c; ++n)
14487                (a = v[n]).index = n,
14488                a.weight = 0;
14489            for (o = [],
14490            s = [],
14491            n = 0; n < d; ++n)
14492                a = b[n],
14493                "number" == typeof a.source && (a.source = v[a.source]),
14494                "number" == typeof a.target && (a.target = v[a.target]),
14495                o[n] = f.call(this, a, n),
14496                s[n] = p.call(this, a, n),
14497                ++a.source.weight,
14498                ++a.target.weight;
14499            for (n = 0; n < c; ++n)
14500                a = v[n],
14501                isNaN(a.x) && (a.x = t("x", m)),
14502                isNaN(a.y) && (a.y = t("y", y)),
14503                isNaN(a.px) && (a.px = a.x),
14504                isNaN(a.py) && (a.py = a.y);
14505            if (u = [],
14506            "function" == typeof g)
14507                for (n = 0; n < c; ++n)
14508                    u[n] = +g.call(this, v[n], n);
14509            else
14510                for (n = 0; n < c; ++n)
14511                    u[n] = g;
14512            return l.resume()
14513        }
14514        ,
14515        l.resume = function() {
14516            return l.alpha(.1)
14517        }
14518        ,
14519        l.stop = function() {
14520            return l.alpha(0)
14521        }
14522        ,
14523        l.drag = function() {
14524            n || (n = d3.behavior.drag().origin(r).on("dragstart", Re).on("drag", e).on("dragend", ze)),
14525            this.on("mouseover.force", He).on("mouseout.force", Be).call(n)
14526        }
14527        ,
14528        d3.rebind(l, c, "on")
14529    }
14530    ,
14531    d3.layout.partition = function() {
14532        function t(e, n, r, i) {
14533            var o = e.children;
14534            if (e.x = n,
14535            e.y = e.depth * i,
14536            e.dx = r,
14537            e.dy = i,
14538            o && (a = o.length)) {
14539                var a, s, u, l = -1;
14540                for (r = e.value ? r / e.value : 0; ++l < a; )
14541                    t(s = o[l], n, u = s.value * r, i),
14542                    n += u
14543            }
14544        }
14545        function e(t) {
14546            var n = t.children
14547              , r = 0;
14548            if (n && (i = n.length))
14549                for (var i, o = -1; ++o < i; )
14550                    r = Math.max(r, e(n[o]));
14551            return 1 + r
14552        }
14553        function n(n, o) {
14554            var a = r.call(this, n, o);
14555            return t(a[0], 0, i[0], i[1] / e(a[0])),
14556            a
14557        }
14558        var r = d3.layout.hierarchy()
14559          , i = [1, 1];
14560        return n.size = function(t) {
14561            return arguments.length ? (i = t,
14562            n) : i
14563        }
14564        ,
14565        an(n, r)
14566    }
14567    ,
14568    d3.layout.pie = function() {
14569        function t(o, a) {
14570            var s = o.map(function(n, r) {
14571                return +e.call(t, n, r)
14572            })
14573              , u = +("function" == typeof r ? r.apply(this, arguments) : r)
14574              , l = (("function" == typeof i ? i.apply(this, arguments) : i) - r) / d3.sum(s)
14575              , c = d3.range(o.length);
14576            null != n && c.sort(n === ro ? function(t, e) {
14577                return s[e] - s[t]
14578            }
14579            : function(t, e) {
14580                return n(o[t], o[e])
14581            }
14582            );
14583            var h = [];
14584            return c.forEach(function(t) {
14585                var e;
14586                h[t] = {
14587                    data: o[t],
14588                    value: e = s[t],
14589                    startAngle: u,
14590                    endAngle: u += e * l
14591                }
14592            }),
14593            h
14594        }
14595        var e = Number
14596          , n = ro
14597          , r = 0
14598          , i = 2 * Math.PI;
14599        return t.value = function(n) {
14600            return arguments.length ? (e = n,
14601            t) : e
14602        }
14603        ,
14604        t.sort = function(e) {
14605            return arguments.length ? (n = e,
14606            t) : n
14607        }
14608        ,
14609        t.startAngle = function(e) {
14610            return arguments.length ? (r = e,
14611            t) : r
14612        }
14613        ,
14614        t.endAngle = function(e) {
14615            return arguments.length ? (i = e,
14616            t) : i
14617        }
14618        ,
14619        t
14620    }
14621    ;
14622    var ro = {};
14623    d3.layout.stack = function() {
14624        function t(r, u) {
14625            var l = r.map(function(n, r) {
14626                return e.call(t, n, r)
14627            })
14628              , c = l.map(function(e, n) {
14629                return e.map(function(e, n) {
14630                    return [a.call(t, e, n), s.call(t, e, n)]
14631                })
14632            })
14633              , h = n.call(t, c, u);
14634            l = d3.permute(l, h),
14635            c = d3.permute(c, h);
14636            var d, f, p, g = i.call(t, c, u), m = l.length, y = l[0].length;
14637            for (f = 0; f < y; ++f)
14638                for (o.call(t, l[0][f], p = g[f], c[0][f][1]),
14639                d = 1; d < m; ++d)
14640                    o.call(t, l[d][f], p += c[d - 1][f][1], c[d][f][1]);
14641            return r
14642        }
14643        var e = r
14644          , n = Je
14645          , i = Xe
14646          , o = Ye
14647          , a = Ke
14648          , s = Ge;
14649        return t.values = function(n) {
14650            return arguments.length ? (e = n,
14651            t) : e
14652        }
14653        ,
14654        t.order = function(e) {
14655            return arguments.length ? (n = "function" == typeof e ? e : io.get(e) || Je,
14656            t) : n
14657        }
14658        ,
14659        t.offset = function(e) {
14660            return arguments.length ? (i = "function" == typeof e ? e : oo.get(e) || Xe,
14661            t) : i
14662        }
14663        ,
14664        t.x = function(e) {
14665            return arguments.length ? (a = e,
14666            t) : a
14667        }
14668        ,
14669        t.y = function(e) {
14670            return arguments.length ? (s = e,
14671            t) : s
14672        }
14673        ,
14674        t.out = function(e) {
14675            return arguments.length ? (o = e,
14676            t) : o
14677        }
14678        ,
14679        t
14680    }
14681    ;
14682    var io = d3.map({
14683        "inside-out": function(t) {
14684            var e, n, r = t.length, i = t.map(Ze), o = t.map(tn), a = d3.range(r).sort(function(t, e) {
14685                return i[t] - i[e]
14686            }), s = 0, u = 0, l = [], c = [];
14687            for (e = 0; e < r; ++e)
14688                n = a[e],
14689                s < u ? (s += o[n],
14690                l.push(n)) : (u += o[n],
14691                c.push(n));
14692            return c.reverse().concat(l)
14693        },
14694        reverse: function(t) {
14695            return d3.range(t.length).reverse()
14696        },
14697        default: Je
14698    })
14699      , oo = d3.map({
14700        silhouette: function(t) {
14701            var e, n, r, i = t.length, o = t[0].length, a = [], s = 0, u = [];
14702            for (n = 0; n < o; ++n) {
14703                for (e = 0,
14704                r = 0; e < i; e++)
14705                    r += t[e][n][1];
14706                r > s && (s = r),
14707                a.push(r)
14708            }
14709            for (n = 0; n < o; ++n)
14710                u[n] = (s - a[n]) / 2;
14711            return u
14712        },
14713        wiggle: function(t) {
14714            var e, n, r, i, o, a, s, u, l, c = t.length, h = t[0], d = h.length, f = [];
14715            for (f[0] = u = l = 0,
14716            n = 1; n < d; ++n) {
14717                for (e = 0,
14718                i = 0; e < c; ++e)
14719                    i += t[e][n][1];
14720                for (e = 0,
14721                o = 0,
14722                s = h[n][0] - h[n - 1][0]; e < c; ++e) {
14723                    for (r = 0,
14724                    a = (t[e][n][1] - t[e][n - 1][1]) / (2 * s); r < e; ++r)
14725                        a += (t[r][n][1] - t[r][n - 1][1]) / s;
14726                    o += a * t[e][n][1]
14727                }
14728                f[n] = u -= i ? o / i * s : 0,
14729                u < l && (l = u)
14730            }
14731            for (n = 0; n < d; ++n)
14732                f[n] -= l;
14733            return f
14734        },
14735        expand: function(t) {
14736            var e, n, r, i = t.length, o = t[0].length, a = 1 / i, s = [];
14737            for (n = 0; n < o; ++n) {
14738                for (e = 0,
14739                r = 0; e < i; e++)
14740                    r += t[e][n][1];
14741                if (r)
14742                    for (e = 0; e < i; e++)
14743                        t[e][n][1] /= r;
14744                else
14745                    for (e = 0; e < i; e++)
14746                        t[e][n][1] = a
14747            }
14748            for (n = 0; n < o; ++n)
14749                s[n] = 0;
14750            return s
14751        },
14752        zero: Xe
14753    });
14754    d3.layout.histogram = function() {
14755        function t(t, o) {
14756            for (var a, s, u = [], l = t.map(n, this), c = r.call(this, l, o), h = i.call(this, c, l, o), o = -1, d = l.length, f = h.length - 1, p = e ? 1 : 1 / d; ++o < f; )
14757                a = u[o] = [],
14758                a.dx = h[o + 1] - (a.x = h[o]),
14759                a.y = 0;
14760            if (f > 0)
14761                for (o = -1; ++o < d; )
14762                    (s = l[o]) >= c[0] && s <= c[1] && (a = u[d3.bisect(h, s, 1, f) - 1],
14763                    a.y += p,
14764                    a.push(t[o]));
14765            return u
14766        }
14767        var e = !0
14768          , n = Number
14769          , r = on
14770          , i = nn;
14771        return t.value = function(e) {
14772            return arguments.length ? (n = e,
14773            t) : n
14774        }
14775        ,
14776        t.range = function(e) {
14777            return arguments.length ? (r = a(e),
14778            t) : r
14779        }
14780        ,
14781        t.bins = function(e) {
14782            return arguments.length ? (i = "number" == typeof e ? function(t) {
14783                return rn(t, e)
14784            }
14785            : a(e),
14786            t) : i
14787        }
14788        ,
14789        t.frequency = function(n) {
14790            return arguments.length ? (e = !!n,
14791            t) : e
14792        }
14793        ,
14794        t
14795    }
14796    ,
14797    d3.layout.hierarchy = function() {
14798        function t(e, a, s) {
14799            var u = i.call(n, e, a)
14800              , l = ao ? e : {
14801                data: e
14802            };
14803            if (l.depth = a,
14804            s.push(l),
14805            u && (c = u.length)) {
14806                for (var c, h, d = -1, f = l.children = [], p = 0, g = a + 1; ++d < c; )
14807                    h = t(u[d], g, s),
14808                    h.parent = l,
14809                    f.push(h),
14810                    p += h.value;
14811                r && f.sort(r),
14812                o && (l.value = p)
14813            } else
14814                o && (l.value = +o.call(n, e, a) || 0);
14815            return l
14816        }
14817        function e(t, r) {
14818            var i = t.children
14819              , a = 0;
14820            if (i && (s = i.length))
14821                for (var s, u = -1, l = r + 1; ++u < s; )
14822                    a += e(i[u], l);
14823            else
14824                o && (a = +o.call(n, ao ? t : t.data, r) || 0);
14825            return o && (t.value = a),
14826            a
14827        }
14828        function n(e) {
14829            var n = [];
14830            return t(e, 0, n),
14831            n
14832        }
14833        var r = ln
14834          , i = sn
14835          , o = un;
14836        return n.sort = function(t) {
14837            return arguments.length ? (r = t,
14838            n) : r
14839        }
14840        ,
14841        n.children = function(t) {
14842            return arguments.length ? (i = t,
14843            n) : i
14844        }
14845        ,
14846        n.value = function(t) {
14847            return arguments.length ? (o = t,
14848            n) : o
14849        }
14850        ,
14851        n.revalue = function(t) {
14852            return e(t, 0),
14853            t
14854        }
14855        ,
14856        n
14857    }
14858    ;
14859    var ao = !1;
14860    d3.layout.pack = function() {
14861        function t(t, i) {
14862            var o = e.call(this, t, i)
14863              , a = o[0];
14864            a.x = 0,
14865            a.y = 0,
14866            Qn(a, function(t) {
14867                t.r = Math.sqrt(t.value)
14868            }),
14869            Qn(a, gn);
14870            var s = r[0]
14871              , u = r[1]
14872              , l = Math.max(2 * a.r / s, 2 * a.r / u);
14873            if (n > 0) {
14874                var c = n * l / 2;
14875                Qn(a, function(t) {
14876                    t.r += c
14877                }),
14878                Qn(a, gn),
14879                Qn(a, function(t) {
14880                    t.r -= c
14881                }),
14882                l = Math.max(2 * a.r / s, 2 * a.r / u)
14883            }
14884            return vn(a, s / 2, u / 2, 1 / l),
14885            o
14886        }
14887        var e = d3.layout.hierarchy().sort(hn)
14888          , n = 0
14889          , r = [1, 1];
14890        return t.size = function(e) {
14891            return arguments.length ? (r = e,
14892            t) : r
14893        }
14894        ,
14895        t.padding = function(e) {
14896            return arguments.length ? (n = +e,
14897            t) : n
14898        }
14899        ,
14900        an(t, e)
14901    }
14902    ,
14903    d3.layout.cluster = function() {
14904        function t(t, i) {
14905            var o, a = e.call(this, t, i), s = a[0], u = 0;
14906            Qn(s, function(t) {
14907                var e = t.children;
14908                e && e.length ? (t.x = xn(e),
14909                t.y = wn(e)) : (t.x = o ? u += n(t, o) : 0,
14910                t.y = 0,
14911                o = t)
14912            });
14913            var l = _n(s)
14914              , c = Cn(s)
14915              , h = l.x - n(l, c) / 2
14916              , d = c.x + n(c, l) / 2;
14917            return Qn(s, function(t) {
14918                t.x = (t.x - h) / (d - h) * r[0],
14919                t.y = (1 - (s.y ? t.y / s.y : 1)) * r[1]
14920            }),
14921            a
14922        }
14923        var e = d3.layout.hierarchy().sort(null).value(null)
14924          , n = kn
14925          , r = [1, 1];
14926        return t.separation = function(e) {
14927            return arguments.length ? (n = e,
14928            t) : n
14929        }
14930        ,
14931        t.size = function(e) {
14932            return arguments.length ? (r = e,
14933            t) : r
14934        }
14935        ,
14936        an(t, e)
14937    }
14938    ,
14939    d3.layout.tree = function() {
14940        function t(t, i) {
14941            function o(t, e) {
14942                var r = t.children
14943                  , i = t._tree;
14944                if (r && (a = r.length)) {
14945                    for (var a, u, l, c = r[0], h = c, d = -1; ++d < a; )
14946                        l = r[d],
14947                        o(l, u),
14948                        h = s(l, u, h),
14949                        u = l;
14950                    $n(t);
14951                    var f = .5 * (c._tree.prelim + l._tree.prelim);
14952                    e ? (i.prelim = e._tree.prelim + n(t, e),
14953                    i.mod = i.prelim - f) : i.prelim = f
14954                } else
14955                    e && (i.prelim = e._tree.prelim + n(t, e))
14956            }
14957            function a(t, e) {
14958                t.x = t._tree.prelim + e;
14959                var n = t.children;
14960                if (n && (r = n.length)) {
14961                    var r, i = -1;
14962                    for (e += t._tree.mod; ++i < r; )
14963                        a(n[i], e)
14964                }
14965            }
14966            function s(t, e, r) {
14967                if (e) {
14968                    for (var i, o = t, a = t, s = e, u = t.parent.children[0], l = o._tree.mod, c = a._tree.mod, h = s._tree.mod, d = u._tree.mod; s = Tn(s),
14969                    o = jn(o),
14970                    s && o; )
14971                        u = jn(u),
14972                        a = Tn(a),
14973                        a._tree.ancestor = t,
14974                        i = s._tree.prelim + h - o._tree.prelim - l + n(s, o),
14975                        i > 0 && (Dn(In(s, t, r), t, i),
14976                        l += i,
14977                        c += i),
14978                        h += s._tree.mod,
14979                        l += o._tree.mod,
14980                        d += u._tree.mod,
14981                        c += a._tree.mod;
14982                    s && !Tn(a) && (a._tree.thread = s,
14983                    a._tree.mod += h - c),
14984                    o && !jn(u) && (u._tree.thread = o,
14985                    u._tree.mod += l - d,
14986                    r = t)
14987                }
14988                return r
14989            }
14990            var u = e.call(this, t, i)
14991              , l = u[0];
14992            Qn(l, function(t, e) {
14993                t._tree = {
14994                    ancestor: t,
14995                    prelim: 0,
14996                    mod: 0,
14997                    change: 0,
14998                    shift: 0,
14999                    number: e ? e._tree.number + 1 : 0
15000                }
15001            }),
15002            o(l),
15003            a(l, -l._tree.prelim);
15004            var c = Sn(l, An)
15005              , h = Sn(l, En)
15006              , d = Sn(l, Mn)
15007              , f = c.x - n(c, h) / 2
15008              , p = h.x + n(h, c) / 2
15009              , g = d.depth || 1;
15010            return Qn(l, function(t) {
15011                t.x = (t.x - f) / (p - f) * r[0],
15012                t.y = t.depth / g * r[1],
15013                delete t._tree
15014            }),
15015            u
15016        }
15017        var e = d3.layout.hierarchy().sort(null).value(null)
15018          , n = kn
15019          , r = [1, 1];
15020        return t.separation = function(e) {
15021            return arguments.length ? (n = e,
15022            t) : n
15023        }
15024        ,
15025        t.size = function(e) {
15026            return arguments.length ? (r = e,
15027            t) : r
15028        }
15029        ,
15030        an(t, e)
15031    }
15032    ,
15033    d3.layout.treemap = function() {
15034        function t(t, e) {
15035            for (var n, r, i = -1, o = t.length; ++i < o; )
15036                r = (n = t[i]).value * (e < 0 ? 0 : e),
15037                n.area = isNaN(r) || r <= 0 ? 0 : r
15038        }
15039        function e(n) {
15040            var o = n.children;
15041            if (o && o.length) {
15042                var a, s, u, l = h(n), c = [], d = o.slice(), f = 1 / 0, p = Math.min(l.dx, l.dy);
15043                for (t(d, l.dx * l.dy / n.value),
15044                c.area = 0; (u = d.length) > 0; )
15045                    c.push(a = d[u - 1]),
15046                    c.area += a.area,
15047                    (s = r(c, p)) <= f ? (d.pop(),
15048                    f = s) : (c.area -= c.pop().area,
15049                    i(c, p, l, !1),
15050                    p = Math.min(l.dx, l.dy),
15051                    c.length = c.area = 0,
15052                    f = 1 / 0);
15053                c.length && (i(c, p, l, !0),
15054                c.length = c.area = 0),
15055                o.forEach(e)
15056            }
15057        }
15058        function n(e) {
15059            var r = e.children;
15060            if (r && r.length) {
15061                var o, a = h(e), s = r.slice(), u = [];
15062                for (t(s, a.dx * a.dy / e.value),
15063                u.area = 0; o = s.pop(); )
15064                    u.push(o),
15065                    u.area += o.area,
15066                    null != o.z && (i(u, o.z ? a.dx : a.dy, a, !s.length),
15067                    u.length = u.area = 0);
15068                r.forEach(n)
15069            }
15070        }
15071        function r(t, e) {
15072            for (var n, r = t.area, i = 0, o = 1 / 0, a = -1, s = t.length; ++a < s; )
15073                (n = t[a].area) && (n < o && (o = n),
15074                n > i && (i = n));
15075            return r *= r,
15076            e *= e,
15077            r ? Math.max(e * i * f / r, r / (e * o * f)) : 1 / 0
15078        }
15079        function i(t, e, n, r) {
15080            var i, o = -1, a = t.length, s = n.x, l = n.y, c = e ? u(t.area / e) : 0;
15081            if (e == n.dx) {
15082                for ((r || c > n.dy) && (c = n.dy); ++o < a; )
15083                    i = t[o],
15084                    i.x = s,
15085                    i.y = l,
15086                    i.dy = c,
15087                    s += i.dx = Math.min(n.x + n.dx - s, c ? u(i.area / c) : 0);
15088                i.z = !0,
15089                i.dx += n.x + n.dx - s,
15090                n.y += c,
15091                n.dy -= c
15092            } else {
15093                for ((r || c > n.dx) && (c = n.dx); ++o < a; )
15094                    i = t[o],
15095                    i.x = s,
15096                    i.y = l,
15097                    i.dx = c,
15098                    l += i.dy = Math.min(n.y + n.dy - l, c ? u(i.area / c) : 0);
15099                i.z = !1,
15100                i.dy += n.y + n.dy - l,
15101                n.x += c,
15102                n.dx -= c
15103            }
15104        }
15105        function o(r) {
15106            var i = a || s(r)
15107              , o = i[0];
15108            return o.x = 0,
15109            o.y = 0,
15110            o.dx = l[0],
15111            o.dy = l[1],
15112            a && s.revalue(o),
15113            t([o], o.dx * o.dy / o.value),
15114            (a ? n : e)(o),
15115            d && (a = i),
15116            i
15117        }
15118        var a, s = d3.layout.hierarchy(), u = Math.round, l = [1, 1], c = null, h = Nn, d = !1, f = .5 * (1 + Math.sqrt(5));
15119        return o.size = function(t) {
15120            return arguments.length ? (l = t,
15121            o) : l
15122        }
15123        ,
15124        o.padding = function(t) {
15125            function e(e) {
15126                var n = t.call(o, e, e.depth);
15127                return null == n ? Nn(e) : Fn(e, "number" == typeof n ? [n, n, n, n] : n)
15128            }
15129            function n(e) {
15130                return Fn(e, t)
15131            }
15132            if (!arguments.length)
15133                return c;
15134            var r;
15135            return h = null == (c = t) ? Nn : "function" == (r = typeof t) ? e : "number" === r ? (t = [t, t, t, t],
15136            n) : n,
15137            o
15138        }
15139        ,
15140        o.round = function(t) {
15141            return arguments.length ? (u = t ? Math.round : Number,
15142            o) : u != Number
15143        }
15144        ,
15145        o.sticky = function(t) {
15146            return arguments.length ? (d = t,
15147            a = null,
15148            o) : d
15149        }
15150        ,
15151        o.ratio = function(t) {
15152            return arguments.length ? (f = t,
15153            o) : f
15154        }
15155        ,
15156        an(o, s)
15157    }
15158    ,
15159    d3.csv = Ln(",", "text/csv"),
15160    d3.tsv = Ln("\t", "text/tab-separated-values"),
15161    d3.geo = {};
15162    var so = Math.PI / 180;
15163    d3.geo.azimuthal = function() {
15164        function t(t) {
15165            var e, r = t[0] * so - n, l = t[1] * so, c = Math.cos(r), h = Math.sin(r), d = Math.cos(l), f = Math.sin(l), p = "orthographic" !== a ? o * f + i * d * c : null, g = "stereographic" === a ? 1 / (1 + p) : "gnomonic" === a ? 1 / p : "equidistant" === a ? (e = Math.acos(p),
15166            e ? e / Math.sin(e) : 0) : "equalarea" === a ? Math.sqrt(2 / (1 + p)) : 1, m = g * d * h, y = g * (o * d * c - i * f);
15167            return [s * m + u[0], s * y + u[1]]
15168        }
15169        var e, n, r, i, o, a = "orthographic", s = 200, u = [480, 250];
15170        return t.invert = function(t) {
15171            var e = (t[0] - u[0]) / s
15172              , r = (t[1] - u[1]) / s
15173              , l = Math.sqrt(e * e + r * r)
15174              , c = "stereographic" === a ? 2 * Math.atan(l) : "gnomonic" === a ? Math.atan(l) : "equidistant" === a ? l : "equalarea" === a ? 2 * Math.asin(.5 * l) : Math.asin(l)
15175              , h = Math.sin(c)
15176              , d = Math.cos(c);
15177            return [(n + Math.atan2(e * h, l * i * d + r * o * h)) / so, Math.asin(d * o - (l ? r * h * i / l : 0)) / so]
15178        }
15179        ,
15180        t.mode = function(e) {
15181            return arguments.length ? (a = e + "",
15182            t) : a
15183        }
15184        ,
15185        t.origin = function(a) {
15186            return arguments.length ? (e = a,
15187            n = e[0] * so,
15188            r = e[1] * so,
15189            i = Math.cos(r),
15190            o = Math.sin(r),
15191            t) : e
15192        }
15193        ,
15194        t.scale = function(e) {
15195            return arguments.length ? (s = +e,
15196            t) : s
15197        }
15198        ,
15199        t.translate = function(e) {
15200            return arguments.length ? (u = [+e[0], +e[1]],
15201            t) : u
15202        }
15203        ,
15204        t.origin([0, 0])
15205    }
15206    ,
15207    d3.geo.albers = function() {
15208        function t(t) {
15209            var e = r * (so * t[0] - n)
15210              , a = Math.sqrt(i - 2 * r * Math.sin(so * t[1])) / r;
15211            return [u * a * Math.sin(e) + l[0], u * (a * Math.cos(e) - o) + l[1]]
15212        }
15213        function e() {
15214            var e = so * s[0]
15215              , u = so * s[1]
15216              , l = so * a[1]
15217              , c = Math.sin(e)
15218              , h = Math.cos(e);
15219            return n = so * a[0],
15220            r = .5 * (c + Math.sin(u)),
15221            i = h * h + 2 * r * c,
15222            o = Math.sqrt(i - 2 * r * Math.sin(l)) / r,
15223            t
15224        }
15225        var n, r, i, o, a = [-98, 38], s = [29.5, 45.5], u = 1e3, l = [480, 250];
15226        return t.invert = function(t) {
15227            var e = (t[0] - l[0]) / u
15228              , a = (t[1] - l[1]) / u
15229              , s = o + a
15230              , c = Math.atan2(e, s)
15231              , h = Math.sqrt(e * e + s * s);
15232            return [(n + c / r) / so, Math.asin((i - h * h * r * r) / (2 * r)) / so]
15233        }
15234        ,
15235        t.origin = function(t) {
15236            return arguments.length ? (a = [+t[0], +t[1]],
15237            e()) : a
15238        }
15239        ,
15240        t.parallels = function(t) {
15241            return arguments.length ? (s = [+t[0], +t[1]],
15242            e()) : s
15243        }
15244        ,
15245        t.scale = function(e) {
15246            return arguments.length ? (u = +e,
15247            t) : u
15248        }
15249        ,
15250        t.translate = function(e) {
15251            return arguments.length ? (l = [+e[0], +e[1]],
15252            t) : l
15253        }
15254        ,
15255        e()
15256    }
15257    ,
15258    d3.geo.albersUsa = function() {
15259        function t(t) {
15260            var o = t[0]
15261              , a = t[1];
15262            return (a > 50 ? n : o < -140 ? r : a < 21 ? i : e)(t)
15263        }
15264        var e = d3.geo.albers()
15265          , n = d3.geo.albers().origin([-160, 60]).parallels([55, 65])
15266          , r = d3.geo.albers().origin([-160, 20]).parallels([8, 18])
15267          , i = d3.geo.albers().origin([-60, 10]).parallels([8, 18]);
15268        return t.scale = function(o) {
15269            return arguments.length ? (e.scale(o),
15270            n.scale(.6 * o),
15271            r.scale(o),
15272            i.scale(1.5 * o),
15273            t.translate(e.translate())) : e.scale()
15274        }
15275        ,
15276        t.translate = function(o) {
15277            if (!arguments.length)
15278                return e.translate();
15279            var a = e.scale() / 1e3
15280              , s = o[0]
15281              , u = o[1];
15282            return e.translate(o),
15283            n.translate([s - 400 * a, u + 170 * a]),
15284            r.translate([s - 190 * a, u + 200 * a]),
15285            i.translate([s + 580 * a, u + 430 * a]),
15286            t
15287        }
15288        ,
15289        t.scale(e.scale())
15290    }
15291    ,
15292    d3.geo.bonne = function() {
15293        function t(t) {
15294            var s = t[0] * so - e
15295              , u = t[1] * so - n;
15296            if (r) {
15297                var l = i + r - u
15298                  , c = s * Math.cos(u) / l;
15299                s = l * Math.sin(c),
15300                u = l * Math.cos(c) - i
15301            } else
15302                s *= Math.cos(u),
15303                u *= -1;
15304            return [o * s + a[0], o * u + a[1]]
15305        }
15306        var e, n, r, i, o = 200, a = [480, 250];
15307        return t.invert = function(t) {
15308            var n = (t[0] - a[0]) / o
15309              , s = (t[1] - a[1]) / o;
15310            if (r) {
15311                var u = i + s
15312                  , l = Math.sqrt(n * n + u * u);
15313                s = i + r - l,
15314                n = e + l * Math.atan2(n, u) / Math.cos(s)
15315            } else
15316                s *= -1,
15317                n /= Math.cos(s);
15318            return [n / so, s / so]
15319        }
15320        ,
15321        t.parallel = function(e) {
15322            return arguments.length ? (i = 1 / Math.tan(r = e * so),
15323            t) : r / so
15324        }
15325        ,
15326        t.origin = function(r) {
15327            return arguments.length ? (e = r[0] * so,
15328            n = r[1] * so,
15329            t) : [e / so, n / so]
15330        }
15331        ,
15332        t.scale = function(e) {
15333            return arguments.length ? (o = +e,
15334            t) : o
15335        }
15336        ,
15337        t.translate = function(e) {
15338            return arguments.length ? (a = [+e[0], +e[1]],
15339            t) : a
15340        }
15341        ,
15342        t.origin([0, 0]).parallel(45)
15343    }
15344    ,
15345    d3.geo.equirectangular = function() {
15346        function t(t) {
15347            var r = t[0] / 360
15348              , i = -t[1] / 360;
15349            return [e * r + n[0], e * i + n[1]]
15350        }
15351        var e = 500
15352          , n = [480, 250];
15353        return t.invert = function(t) {
15354            return [(t[0] - n[0]) / e * 360, (t[1] - n[1]) / e * -360]
15355        }
15356        ,
15357        t.scale = function(n) {
15358            return arguments.length ? (e = +n,
15359            t) : e
15360        }
15361        ,
15362        t.translate = function(e) {
15363            return arguments.length ? (n = [+e[0], +e[1]],
15364            t) : n
15365        }
15366        ,
15367        t
15368    }
15369    ,
15370    d3.geo.mercator = function() {
15371        function t(t) {
15372            var r = t[0] / 360
15373              , i = -Math.log(Math.tan(Math.PI / 4 + t[1] * so / 2)) / so / 360;
15374            return [e * r + n[0], e * Math.max(-.5, Math.min(.5, i)) + n[1]]
15375        }
15376        var e = 500
15377          , n = [480, 250];
15378        return t.invert = function(t) {
15379            var r = (t[0] - n[0]) / e
15380              , i = (t[1] - n[1]) / e;
15381            return [360 * r, 2 * Math.atan(Math.exp(-360 * i * so)) / so - 90]
15382        }
15383        ,
15384        t.scale = function(n) {
15385            return arguments.length ? (e = +n,
15386            t) : e
15387        }
15388        ,
15389        t.translate = function(e) {
15390            return arguments.length ? (n = [+e[0], +e[1]],
15391            t) : n
15392        }
15393        ,
15394        t
15395    }
15396    ,
15397    d3.geo.path = function() {
15398        function t(t, e) {
15399            "function" == typeof o && (a = On(o.apply(this, arguments))),
15400            l(t);
15401            var n = u.length ? u.join("") : null;
15402            return u = [],
15403            n
15404        }
15405        function e(t) {
15406            return s(t).join(",")
15407        }
15408        function n(t) {
15409            for (var e = i(t[0]), n = 0, r = t.length; ++n < r; )
15410                e -= i(t[n]);
15411            return e
15412        }
15413        function r(t) {
15414            for (var e = d3.geom.polygon(t[0].map(s)), n = e.area(), r = e.centroid(n < 0 ? (n *= -1,
15415            1) : -1), i = r[0], o = r[1], a = n, u = 0, l = t.length; ++u < l; )
15416                e = d3.geom.polygon(t[u].map(s)),
15417                n = e.area(),
15418                r = e.centroid(n < 0 ? (n *= -1,
15419                1) : -1),
15420                i -= r[0],
15421                o -= r[1],
15422                a -= n;
15423            return [i, o, 6 * a]
15424        }
15425        function i(t) {
15426            return Math.abs(d3.geom.polygon(t.map(s)).area())
15427        }
15428        var o = 4.5
15429          , a = On(o)
15430          , s = d3.geo.albersUsa()
15431          , u = []
15432          , l = Pn({
15433            FeatureCollection: function(t) {
15434                for (var e = t.features, n = -1, r = e.length; ++n < r; )
15435                    u.push(l(e[n].geometry))
15436            },
15437            Feature: function(t) {
15438                l(t.geometry)
15439            },
15440            Point: function(t) {
15441                u.push("M", e(t.coordinates), a)
15442            },
15443            MultiPoint: function(t) {
15444                for (var n = t.coordinates, r = -1, i = n.length; ++r < i; )
15445                    u.push("M", e(n[r]), a)
15446            },
15447            LineString: function(t) {
15448                var n = t.coordinates
15449                  , r = -1
15450                  , i = n.length;
15451                for (u.push("M"); ++r < i; )
15452                    u.push(e(n[r]), "L");
15453                u.pop()
15454            },
15455            MultiLineString: function(t) {
15456                for (var n, r, i, o = t.coordinates, a = -1, s = o.length; ++a < s; ) {
15457                    for (n = o[a],
15458                    r = -1,
15459                    i = n.length,
15460                    u.push("M"); ++r < i; )
15461                        u.push(e(n[r]), "L");
15462                    u.pop()
15463                }
15464            },
15465            Polygon: function(t) {
15466                for (var n, r, i, o = t.coordinates, a = -1, s = o.length; ++a < s; )
15467                    if (n = o[a],
15468                    r = -1,
15469                    (i = n.length - 1) > 0) {
15470                        for (u.push("M"); ++r < i; )
15471                            u.push(e(n[r]), "L");
15472                        u[u.length - 1] = "Z"
15473                    }
15474            },
15475            MultiPolygon: function(t) {
15476                for (var n, r, i, o, a, s, l = t.coordinates, c = -1, h = l.length; ++c < h; )
15477                    for (n = l[c],
15478                    r = -1,
15479                    i = n.length; ++r < i; )
15480                        if (o = n[r],
15481                        a = -1,
15482                        (s = o.length - 1) > 0) {
15483                            for (u.push("M"); ++a < s; )
15484                                u.push(e(o[a]), "L");
15485                            u[u.length - 1] = "Z"
15486                        }
15487            },
15488            GeometryCollection: function(t) {
15489                for (var e = t.geometries, n = -1, r = e.length; ++n < r; )
15490                    u.push(l(e[n]))
15491            }
15492        })
15493          , c = t.area = Pn({
15494            FeatureCollection: function(t) {
15495                for (var e = 0, n = t.features, r = -1, i = n.length; ++r < i; )
15496                    e += c(n[r]);
15497                return e
15498            },
15499            Feature: function(t) {
15500                return c(t.geometry)
15501            },
15502            Polygon: function(t) {
15503                return n(t.coordinates)
15504            },
15505            MultiPolygon: function(t) {
15506                for (var e = 0, r = t.coordinates, i = -1, o = r.length; ++i < o; )
15507                    e += n(r[i]);
15508                return e
15509            },
15510            GeometryCollection: function(t) {
15511                for (var e = 0, n = t.geometries, r = -1, i = n.length; ++r < i; )
15512                    e += c(n[r]);
15513                return e
15514            }
15515        }, 0)
15516          , h = t.centroid = Pn({
15517            Feature: function(t) {
15518                return h(t.geometry)
15519            },
15520            Polygon: function(t) {
15521                var e = r(t.coordinates);
15522                return [e[0] / e[2], e[1] / e[2]]
15523            },
15524            MultiPolygon: function(t) {
15525                for (var e, n = t.coordinates, i = 0, o = 0, a = 0, s = -1, u = n.length; ++s < u; )
15526                    e = r(n[s]),
15527                    i += e[0],
15528                    o += e[1],
15529                    a += e[2];
15530                return [i / a, o / a]
15531            }
15532        });
15533        return t.projection = function(e) {
15534            return s = e,
15535            t
15536        }
15537        ,
15538        t.pointRadius = function(e) {
15539            return "function" == typeof e ? o = e : (o = +e,
15540            a = On(o)),
15541            t
15542        }
15543        ,
15544        t
15545    }
15546    ,
15547    d3.geo.bounds = function(t) {
15548        var e = 1 / 0
15549          , n = 1 / 0
15550          , r = -1 / 0
15551          , i = -1 / 0;
15552        return qn(t, function(t, o) {
15553            t < e && (e = t),
15554            t > r && (r = t),
15555            o < n && (n = o),
15556            o > i && (i = o)
15557        }),
15558        [[e, n], [r, i]]
15559    }
15560    ;
15561    var uo = {
15562        Feature: Rn,
15563        FeatureCollection: zn,
15564        GeometryCollection: Hn,
15565        LineString: Bn,
15566        MultiLineString: Vn,
15567        MultiPoint: Bn,
15568        MultiPolygon: Un,
15569        Point: Wn,
15570        Polygon: Kn
15571    };
15572    d3.geo.circle = function() {
15573        function t() {}
15574        function e(t) {
15575            return u.distance(t) < s
15576        }
15577        function n(t) {
15578            for (var e, n, r, o, a, l = -1, c = t.length, h = []; ++l < c; )
15579                a = u.distance(r = t[l]),
15580                a < s ? (n && h.push(Xn(n, r)((o - s) / (o - a))),
15581                h.push(r),
15582                e = n = null) : (n = r,
15583                !e && h.length && (h.push(Xn(h[h.length - 1], n)((s - o) / (a - o))),
15584                e = n)),
15585                o = a;
15586            return e = t[0],
15587            n = h[0],
15588            !n || r[0] !== e[0] || r[1] !== e[1] || r[0] === n[0] && r[1] === n[1] || h.push(n),
15589            i(h)
15590        }
15591        function i(t) {
15592            for (var e, n, r, i = 0, o = t.length, a = o ? [t[0]] : t, s = u.source(); ++i < o; )
15593                for (r = u.source(t[i - 1])(t[i]).coordinates,
15594                e = 0,
15595                n = r.length; ++e < n; )
15596                    a.push(r[e]);
15597            return u.source(s),
15598            a
15599        }
15600        var o = [0, 0]
15601          , a = 89.99
15602          , s = a * so
15603          , u = d3.geo.greatArc().source(o).target(r);
15604        t.clip = function(t) {
15605            return "function" == typeof o && u.source(o.apply(this, arguments)),
15606            l(t) || null
15607        }
15608        ;
15609        var l = Pn({
15610            FeatureCollection: function(t) {
15611                var e = t.features.map(l).filter(r);
15612                return e && (t = Object.create(t),
15613                t.features = e,
15614                t)
15615            },
15616            Feature: function(t) {
15617                var e = l(t.geometry);
15618                return e && (t = Object.create(t),
15619                t.geometry = e,
15620                t)
15621            },
15622            Point: function(t) {
15623                return e(t.coordinates) && t
15624            },
15625            MultiPoint: function(t) {
15626                var n = t.coordinates.filter(e);
15627                return n.length && {
15628                    type: t.type,
15629                    coordinates: n
15630                }
15631            },
15632            LineString: function(t) {
15633                var e = n(t.coordinates);
15634                return e.length && (t = Object.create(t),
15635                t.coordinates = e,
15636                t)
15637            },
15638            MultiLineString: function(t) {
15639                var e = t.coordinates.map(n).filter(function(t) {
15640                    return t.length
15641                });
15642                return e.length && (t = Object.create(t),
15643                t.coordinates = e,
15644                t)
15645            },
15646            Polygon: function(t) {
15647                var e = t.coordinates.map(n);
15648                return e[0].length && (t = Object.create(t),
15649                t.coordinates = e,
15650                t)
15651            },
15652            MultiPolygon: function(t) {
15653                var e = t.coordinates.map(function(t) {
15654                    return t.map(n)
15655                }).filter(function(t) {
15656                    return t[0].length
15657                });
15658                return e.length && (t = Object.create(t),
15659                t.coordinates = e,
15660                t)
15661            },
15662            GeometryCollection: function(t) {
15663                var e = t.geometries.map(l).filter(r);
15664                return e.length && (t = Object.create(t),
15665                t.geometries = e,
15666                t)
15667            }
15668        });
15669        return t.origin = function(e) {
15670            return arguments.length ? (o = e,
15671            "function" != typeof o && u.source(o),
15672            t) : o
15673        }
15674        ,
15675        t.angle = function(e) {
15676            return arguments.length ? (s = (a = +e) * so,
15677            t) : a
15678        }
15679        ,
15680        d3.rebind(t, u, "precision")
15681    }
15682    ,
15683    d3.geo.greatArc = function() {
15684        function t() {
15685            for (var r = t.distance.apply(this, arguments), i = 0, s = o / r, u = [e]; (i += s) < 1; )
15686                u.push(a(i));
15687            return u.push(n),
15688            {
15689                type: "LineString",
15690                coordinates: u
15691            }
15692        }
15693        var e, n, r = Gn, i = Yn, o = 6 * so, a = Jn();
15694        return t.distance = function() {
15695            return "function" == typeof r && a.source(e = r.apply(this, arguments)),
15696            "function" == typeof i && a.target(n = i.apply(this, arguments)),
15697            a.distance()
15698        }
15699        ,
15700        t.source = function(n) {
15701            return arguments.length ? (r = n,
15702            "function" != typeof r && a.source(e = r),
15703            t) : r
15704        }
15705        ,
15706        t.target = function(e) {
15707            return arguments.length ? (i = e,
15708            "function" != typeof i && a.target(n = i),
15709            t) : i
15710        }
15711        ,
15712        t.precision = function(e) {
15713            return arguments.length ? (o = e * so,
15714            t) : o / so
15715        }
15716        ,
15717        t
15718    }
15719    ,
15720    d3.geo.greatCircle = d3.geo.circle,
15721    d3.geom = {},
15722    d3.geom.contour = function(t, e) {
15723        var n = e || Zn(t)
15724          , r = []
15725          , i = n[0]
15726          , o = n[1]
15727          , a = 0
15728          , s = 0
15729          , u = NaN
15730          , l = NaN
15731          , c = 0;
15732        do {
15733            c = 0,
15734            t(i - 1, o - 1) && (c += 1),
15735            t(i, o - 1) && (c += 2),
15736            t(i - 1, o) && (c += 4),
15737            t(i, o) && (c += 8),
15738            6 === c ? (a = -1 === l ? -1 : 1,
15739            s = 0) : 9 === c ? (a = 0,
15740            s = 1 === u ? -1 : 1) : (a = lo[c],
15741            s = co[c]),
15742            a != u && s != l && (r.push([i, o]),
15743            u = a,
15744            l = s),
15745            i += a,
15746            o += s
15747        } while (n[0] != i || n[1] != o);
15748        return r
15749    }
15750    ;
15751    var lo = [1, 0, 1, 1, -1, 0, -1, 1, 0, 0, 0, 0, -1, 0, -1, NaN]
15752      , co = [0, -1, 0, 0, 0, -1, 0, 0, 1, -1, 1, 1, 0, -1, 0, NaN];
15753    d3.geom.hull = function(t) {
15754        if (t.length < 3)
15755            return [];
15756        var e, n, r, i, o, a, s, u, l, c, h = t.length, d = h - 1, f = [], p 
15756= [], g = 0;
15757        for (e = 1; e < h; ++e)
15758            t[e][1] < t[g][1] ? g = e : t[e][1] == t[g][1] && (g = t[e][0] < t[g][0] ? e : g);
15759        for (e = 0; e < h; ++e)
15760            e !== g && (i = t[e][1] - t[g][1],
15761            r = t[e][0] - t[g][0],
15762            f.push({
15763                angle: Math.atan2(i, r),
15764                index: e
15765            }));
15766        for (f.sort(function(t, e) {
15767            return t.angle - e.angle
15768        }),
15769        l = f[0].angle,
15770        u = f[0].index,
15771        s = 0,
15772        e = 1; e < d; ++e)
15773            n = f[e].index,
15774            l == f[e].angle ? (r = t[u][0] - t[g][0],
15775            i = t[u][1] - t[g][1],
15776            o = t[n][0] - t[g][0],
15777            a = t[n][1] - t[g][1],
15778            r * r + i * i >= o * o + a * a ? f[e].index = -1 : (f[s].index = -1,
15779            l = f[e].angle,
15780            s = e,
15781            u = n)) : (l = f[e].angle,
15782            s = e,
15783            u = n);
15784        for (p.push(g),
15785        e = 0,
15786        n = 0; e < 2; ++n)
15787            -1 !== f[n].index && (p.push(f[n].index),
15788            e++);
15789        for (c = p.length; n < d; ++n)
15790            if (-1 !== f[n].index) {
15791                for (; !tr(p[c - 2], p[c - 1], f[n].index, t); )
15792                    --c;
15793                p[c++] = f[n].index
15794            }
15795        var m = [];
15796        for (e = 0; e < c; ++e)
15797            m.push(t[p[e]]);
15798        return m
15799    }
15800    ,
15801    d3.geom.polygon = function(t) {
15802        return t.area = function() {
15803            for (var e = 0, n = t.length, r = t[n - 1][0] * t[0][1], i = t[n - 1][1] * t[0][0]; ++e < n; )
15804                r += t[e - 1][0] * t[e][1],
15805                i += t[e - 1][1] * t[e][0];
15806            return .5 * (i - r)
15807        }
15808        ,
15809        t.centroid = function(e) {
15810            var n, r, i = -1, o = t.length, a = 0, s = 0, u = t[o - 1];
15811            for (arguments.length || (e = -1 / (6 * t.area())); ++i < o; )
15812                n = u,
15813                u = t[i],
15814                r = n[0] * u[1] - u[0] * n[1],
15815                a += (n[0] + u[0]) * r,
15816                s += (n[1] + u[1]) * r;
15817            return [a * e, s * e]
15818        }
15819        ,
15820        t.clip = function(e) {
15821            for (var n, r, i, o, a, s, u = -1, l = t.length, c = t[l - 1]; ++u < l; ) {
15822                for (n = e.slice(),
15823                e.length = 0,
15824                o = t[u],
15825                a = n[(i = n.length) - 1],
15826                r = -1; ++r < i; )
15827                    s = n[r],
15828                    er(s, c, o) ? (er(a, c, o) || e.push(nr(a, s, c, o)),
15829                    e.push(s)) : er(a, c, o) && e.push(nr(a, s, c, o)),
15830                    a = s;
15831                c = o
15832            }
15833            return e
15834        }
15835        ,
15836        t
15837    }
15838    ,
15839    d3.geom.voronoi = function(t) {
15840        var e = t.map(function() {
15841            return []
15842        });
15843        return rr(t, function(t) {
15844            var n, r, i, o, a, s;
15845            1 === t.a && t.b >= 0 ? (n = t.ep.r,
15846            r = t.ep.l) : (n = t.ep.l,
15847            r = t.ep.r),
15848            1 === t.a ? (a = n ? n.y : -1e6,
15849            i = t.c - t.b * a,
15850            s = r ? r.y : 1e6,
15851            o = t.c - t.b * s) : (i = n ? n.x : -1e6,
15852            a = t.c - t.a * i,
15853            o = r ? r.x : 1e6,
15854            s = t.c - t.a * o);
15855            var u = [i, a]
15856              , l = [o, s];
15857            e[t.region.l.index].push(u, l),
15858            e[t.region.r.index].push(u, l)
15859        }),
15860        e.map(function(e, n) {
15861            var r = t[n][0]
15862              , i = t[n][1];
15863            return e.forEach(function(t) {
15864                t.angle = Math.atan2(t[0] - r, t[1] - i)
15865            }),
15866            e.sort(function(t, e) {
15867                return t.angle - e.angle
15868            }).filter(function(t, n) {
15869                return !n || t.angle - e[n - 1].angle > 1e-10
15870            })
15871        })
15872    }
15873    ;
15874    var ho = {
15875        l: "r",
15876        r: "l"
15877    };
15878    d3.geom.delaunay = function(t) {
15879        var e = t.map(function() {
15880            return []
15881        })
15882          , n = [];
15883        return rr(t, function(n) {
15884            e[n.region.l.index].push(t[n.region.r.index])
15885        }),
15886        e.forEach(function(e, r) {
15887            var i = t[r]
15888              , o = i[0]
15889              , a = i[1];
15890            e.forEach(function(t) {
15891                t.angle = Math.atan2(t[0] - o, t[1] - a)
15892            }),
15893            e.sort(function(t, e) {
15894                return t.angle - e.angle
15895            });
15896            for (var s = 0, u = e.length - 1; s < u; s++)
15897                n.push([i, e[s], e[s + 1]])
15898        }),
15899        n
15900    }
15901    ,
15902    d3.geom.quadtree = function(t, e, n, r, i) {
15903        function o(t, e, n, r, i, o) {
15904            if (!isNaN(e.x) && !isNaN(e.y))
15905                if (t.leaf) {
15906                    var s = t.point;
15907                    s ? Math.abs(s.x - e.x) + Math.abs(s.y - e.y) < .01 ? a(t, e, n, r, i, o) : (t.point = null,
15908                    a(t, s, n, r, i, o),
15909                    a(t, e, n, r, i, o)) : t.point = e
15910                } else
15911                    a(t, e, n, r, i, o)
15912        }
15913        function a(t, e, n, r, i, a) {
15914            var s = .5 * (n + i)
15915              , u = .5 * (r + a)
15916              , l = e.x >= s
15917              , c = e.y >= u
15918              , h = (c << 1) + l;
15919            t.leaf = !1,
15920            t = t.nodes[h] || (t.nodes[h] = ir()),
15921            l ? n = s : i = s,
15922            c ? r = u : a = u,
15923            o(t, e, n, r, i, a)
15924        }
15925        var s, u = -1, l = t.length;
15926        if (l && isNaN(t[0].x) && (t = t.map(ar)),
15927        arguments.length < 5)
15928            if (3 === arguments.length)
15929                i = r = n,
15930                n = e;
15931            else {
15932                for (e = n = 1 / 0,
15933                r = i = -1 / 0; ++u < l; )
15934                    s = t[u],
15935                    s.x < e && (e = s.x),
15936                    s.y < n && (n = s.y),
15937                    s.x > r && (r = s.x),
15938                    s.y > i && (i = s.y);
15939                var c = r - e
15940                  , h = i - n;
15941                c > h ? i = n + c : r = e + h
15942            }
15943        var d = ir();
15944        return d.add = function(t) {
15945            o(d, t, e, n, r, i)
15946        }
15947        ,
15948        d.visit = function(t) {
15949            or(t, d, e, n, r, i)
15950        }
15951        ,
15952        t.forEach(d.add),
15953        d
15954    }
15955    ,
15956    d3.time = {};
15957    var fo = Date
15958      , po = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
15959    sr.prototype = {
15960        getDate: function() {
15961            return this._.getUTCDate()
15962        },
15963        getDay: function() {
15964            return this._.getUTCDay()
15965        },
15966        getFullYear: function() {
15967            return this._.getUTCFullYear()
15968        },
15969        getHours: function() {
15970            return this._.getUTCHours()
15971        },
15972        getMilliseconds: function() {
15973            return this._.getUTCMilliseconds()
15974        },
15975        getMinutes: function() {
15976            return this._.getUTCMinutes()
15977        },
15978        getMonth: function() {
15979            return this._.getUTCMonth()
15980        },
15981        getSeconds: function() {
15982            return this._.getUTCSeconds()
15983        },
15984        getTime: function() {
15985            return this._.getTime()
15986        },
15987        getTimezoneOffset: function() {
15988            return 0
15989        },
15990        valueOf: function() {
15991            return this._.valueOf()
15992        },
15993        setDate: function() {
15994            go.setUTCDate.apply(this._, arguments)
15995        },
15996        setDay: function() {
15997            go.setUTCDay.apply(this._, arguments)
15998        },
15999        setFullYear: function() {
16000            go.setUTCFullYear.apply(this._, arguments)
16001        },
16002        setHours: function() {
16003            go.setUTCHours.apply(this._, arguments)
16004        },
16005        setMilliseconds: function() {
16006            go.setUTCMilliseconds.apply(this._, arguments)
16007        },
16008        setMinutes: function() {
16009            go.setUTCMinutes.apply(this._, arguments)
16010        },
16011        setMonth: function() {
16012            go.setUTCMonth.apply(this._, arguments)
16013        },
16014        setSeconds: function() {
16015            go.setUTCSeconds.apply(this._, arguments)
16016        },
16017        setTime: function() {
16018            go.setTime.apply(this._, arguments)
16019        }
16020    };
16021    var go = Date.prototype
16022      , mo = po
16023      , yo = mo.map(ur)
16024      , vo = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "
16024November", "December"]
16025      , bo = vo.map(ur);
16026    d3.time.format = function(t) {
16027        function e(e) {
16028            for (var r, i, o = [], a = -1, s = 0; ++a < n; )
16029                37 == t.charCodeAt(a) && (o.push(t.substring(s, a), (i = Mo[r = t.charAt(++a)]) ? i(e) : r),
16030                s = a + 1);
16031            return o.push(t.substring(s, a)),
16032            o.join("")
16033        }
16034        var n = t.length;
16035        return e.parse = function(e) {
16036            var n = {
16037                y: 1900,
16038                m: 0,
16039                d: 1,
16040                H: 0,
16041                M: 0,
16042                S: 0,
16043                L: 0
16044            };
16045            if (lr(n, t, e, 0) != e.length)
16046                return null;
16047            "p"in n && (n.H = n.H % 12 + 12 * n.p);
16048            var r = new fo;
16049            return r.setFullYear(n.y, n.m, n.d),
16050            r.setHours(n.H, n.M, n.S, n.L),
16051            r
16052        }
16053        ,
16054        e.toString = function() {
16055            return t
16056        }
16057        ,
16058        e
16059    }
16060    ;
16061    var wo = d3.format("02d")
16062      , xo = d3.format("03d")
16063      , _o = d3.format("04d")
16064      , Co = d3.format("2d")
16065      , ko = cr(mo)
16066      , jo = cr(yo)
16067      , To = cr(vo)
16068      , So = hr(vo)
16069      , Eo = cr(bo)
16070      , Ao = hr(bo)
16071      , Mo = {
16072        a: function(t) {
16073            return yo[t.getDay()]
16074        },
16075        A: function(t) {
16076            return mo[t.getDay()]
16077        },
16078        b: function(t) {
16079            return bo[t.getMonth()]
16080        },
16081        B: function(t) {
16082            return vo[t.getMonth()]
16083        },
16084        c: d3.time.format("%a %b %e %H:%M:%S %Y"),
16085        d: function(t) {
16086            return wo(t.getDate())
16087        },
16088        e: function(t) {
16089            return Co(t.getDate())
16090        },
16091        H: function(t) {
16092            return wo(t.getHours())
16093        },
16094        I: function(t) {
16095            return wo(t.getHours() % 12 || 12)
16096        },
16097        j: function(t) {
16098            return xo(1 + d3.time.dayOfYear(t))
16099        },
16100        L: function(t) {
16101            return xo(t.getMilliseconds())
16102        },
16103        m: function(t) {
16104            return wo(t.getMonth() + 1)
16105        },
16106        M: function(t) {
16107            return wo(t.getMinutes())
16108        },
16109        p: function(t) {
16110            return t.getHours() >= 12 ? "PM" : "AM"
16111        },
16112        S: function(t) {
16113            return wo(t.getSeconds())
16114        },
16115        U: function(t) {
16116            return wo(d3.time.sundayOfYear(t))
16117        },
16118        w: function(t) {
16119            return t.getDay()
16120        },
16121        W: function(t) {
16122            return wo(d3.time.mondayOfYear(t))
16123        },
16124        x: d3.time.format("%m/%d/%y"),
16125        X: d3.time.format("%H:%M:%S"),
16126        y: function(t) {
16127            return wo(t.getFullYear() % 100)
16128        },
16129        Y: function(t) {
16130            return _o(t.getFullYear() % 1e4)
16131        },
16132        Z: Ar,
16133        "%": function(t) {
16134            return "%"
16135        }
16136    }
16137      , Qo = {
16138        a: dr,
16139        A: fr,
16140        b: pr,
16141        B: gr,
16142        c: mr,
16143        d: Cr,
16144        e: Cr,
16145        H: kr,
16146        I: kr,
16147        L: Sr,
16148        m: _r,
16149        M: jr,
16150        p: Er,
16151        S: Tr,
16152        x: yr,
16153        X: vr,
16154        y: wr,
16155        Y: br
16156    }
16157      , $o = /^\s*\d+/
16158      , Do = d3.map({
16159        am: 0,
16160        pm: 1
16161    });
16162    d3.time.format.utc = function(t) {
16163        function e(t) {
16164            try {
16165                fo = sr;
16166                var e = new fo;
16167                return e._ = t,
16168                n(e)
16169            } finally {
16170                fo = Date
16171            }
16172        }
16173        var n = d3.time.format(t);
16174        return e.parse = function(t) {
16175            try {
16176                fo = sr;
16177                var e = n.parse(t);
16178                return e && e._
16179            } finally {
16180                fo = Date
16181            }
16182        }
16183        ,
16184        e.toString = n.toString,
16185        e
16186    }
16187    ;
16188    var Io = d3.time.format.utc("%Y-%m-%dT%H:%M:%S.%LZ");
16189    d3.time.format.iso = Date.prototype.toISOString ? Mr : Io,
16190    Mr.parse = function(t) {
16191        var e = new Date(t);
16192        return isNaN(e) ? null : e
16193    }
16194    ,
16195    Mr.toString = Io.toString,
16196    d3.time.second = Qr(function(t) {
16197        return new fo(1e3 * Math.floor(t / 1e3))
16198    }, function(t, e) {
16199        t.setTime(t.getTime() + 1e3 * Math.floor(e))
16200    }, function(t) {
16201        return t.getSeconds()
16202    }),
16203    d3.time.seconds = d3.time.second.range,
16204    d3.time.seconds.utc = d3.time.second.utc.range,
16205    d3.time.minute = Qr(function(t) {
16206        return new fo(6e4 * Math.floor(t / 6e4))
16207    }, function(t, e) {
16208        t.setTime(t.getTime() + 6e4 * Math.floor(e))
16209    }, function(t) {
16210        return t.getMinutes()
16211    }),
16212    d3.time.minutes = d3.time.minute.range,
16213    d3.time.minutes.utc = d3.time.minute.utc.range,
16214    d3.time.hour = Qr(function(t) {
16215        var e = t.getTimezoneOffset() / 60;
16216        return new fo(36e5 * (Math.floor(t / 36e5 - e) + e))
16217    }, function(t, e) {
16218        t.setTime(t.getTime() + 36e5 * Math.floor(e))
16219    }, function(t) {
16220        return t.getHours()
16221    }),
16222    d3.time.hours = d3.time.hour.range,
16223    d3.time.hours.utc = d3.time.hour.utc.range,
16224    d3.time.day = Qr(function(t) {
16225        var e = new fo(1970,0);
16226        return e.setFullYear(t.getFullYear(), t.getMonth(), t.getDate()),
16227        e
16228    }, function(t, e) {
16229        t.setDate(t.getDate() + e)
16230    }, function(t) {
16231        return t.getDate() - 1
16232    }),
16233    d3.time.days = d3.time.day.range,
16234    d3.time.days.utc = d3.time.day.utc.range,
16235    d3.time.dayOfYear = function(t) {
16236        var e = d3.time.year(t);
16237        return Math.floor((t - e - 6e4 * (t.getTimezoneOffset() - e.getTimezoneOffset())) / 864e5)
16238    }
16239    ,
16240    po.forEach(function(t, e) {
16241        t = t.toLowerCase(),
16242        e = 7 - e;
16243        var n = d3.time[t] = Qr(function(t) {
16244            return (t = d3.time.day(t)).setDate(t.getDate() - (t.getDay() + e) % 7),
16245            t
16246        }, function(t, e) {
16247            t.setDate(t.getDate() + 7 * Math.floor(e))
16248        }, function(t) {
16249            var n = d3.time.year(t).getDay();
16250            return Math.floor((d3.time.dayOfYear(t) + (n + e) % 7) / 7) - (n !== e)
16251        });
16252        d3.time[t + "s"] = n.range,
16253        d3.time[t + "s"].utc = n.utc.range,
16254        d3.time[t + "OfYear"] = function(t) {
16255            var n = d3.time.year(t).getDay();
16256            return Math.floor((d3.time.dayOfYear(t) + (n + e) % 7) / 7)
16257        }
16258    }),
16259    d3.time.week = d3.time.sunday,
16260    d3.time.weeks = d3.time.sunday.range,
16261    d3.time.weeks.utc = d3.time.sunday.utc.range,
16262    d3.time.weekOfYear = d3.time.sundayOfYear,
16263    d3.time.month = Qr(function(t) {
16264        return t = d3.time.day(t),
16265        t.setDate(1),
16266        t
16267    }, function(t, e) {
16268        t.setMonth(t.getMonth() + e)
16269    }, function(t) {
16270        return t.getMonth()
16271    }),
16272    d3.time.months = d3.time.month.range,
16273    d3.time.months.utc = d3.time.month.utc.range,
16274    d3.time.year = Qr(function(t) {
16275        return t = d3.time.day(t),
16276        t.setMonth(0, 1),
16277        t
16278    }, function(t, e) {
16279        t.setFullYear(t.getFullYear() + e)
16280    }, function(t) {
16281        return t.getFullYear()
16282    }),
16283    d3.time.years = d3.time.year.range,
16284    d3.time.years.utc = d3.time.year.utc.range;
16285    var No = [1e3, 5e3, 15e3, 3e4, 6e4, 3e5, 9e5, 18e5, 36e5, 108e5, 216e5, 432e5, 864e5, 1728e5, 6048e5, 2592e6, 7776e6, 31536e6]
16286      , Fo = [[d3.time.second, 1], [d3.time.second, 5], [d3.time.second, 15], [d3.time.second, 30], [d3.time.minute, 1], [d3.time.minute, 5], [d3.time.minute, 15], [d3.time.minute, 30], [d3.time.hour, 1], [d3.time.hour, 3], [d3.time.hour, 6], [d3.time.hour, 12], [d3.time.day, 1], [d3.time.day, 2], [d3.time.week, 1], [d3.time.month, 1], [d3.time.month, 3], [d3.time.year, 1]]
16287      , Lo = [[d3.time.format("%Y"), function(t) {
16288        return !0
16289    }
16290    ], [d3.time.format("%B"), function(t) {
16291        return t.getMonth()
16292    }
16293    ], [d3.time.format("%b %d"), function(t) {
16294        return 1 != t.getDate()
16295    }
16296    ], [d3.time.format("%a %d"), function(t) {
16297        return t.getDay() && 1 != t.getDate()
16298    }
16299    ], [d3.time.format("%I %p"), function(t) {
16300        return t.getHours()
16301    }
16302    ], [d3.time.format("%I:%M"), function(t) {
16303        return t.getMinutes()
16304    }
16305    ], [d3.time.format(":%S"), function(t) {
16306        return t.getSeconds()
16307    }
16308    ], [d3.time.format(".%L"), function(t) {
16309        return t.getMilliseconds()
16310    }
16311    ]]
16312      , Po = d3.scale.linear()
16313      , Oo = Fr(Lo);
16314    Fo.year = function(t, e) {
16315        return Po.domain(t.map(Pr)).ticks(e).map(Lr)
16316    }
16317    ,
16318    d3.time.scale = function() {
16319        return Dr(d3.scale.linear(), Fo, Oo)
16320    }
16321    ;
16322    var qo = Fo.map(function(t) {
16323        return [t[0].utc, t[1]]
16324    })
16325      , Ro = [[d3.time.format.utc("%Y"), function(t) {
16326        return !0
16327    }
16328    ], [d3.time.format.utc("%B"), function(t) {
16329        return t.getUTCMonth()
16330    }
16331    ], [d3.time.format.utc("%b %d"), function(t) {
16332        return 1 != t.getUTCDate()
16333    }
16334    ], [d3.time.format.utc("%a %d"), function(t) {
16335        return t.getUTCDay() && 1 != t.getUTCDate()
16336    }
16337    ], [d3.time.format.utc("%I %p"), function(t) {
16338        return t.getUTCHours()
16339    }
16340    ], [d3.time.format.utc("%I:%M"), function(t) {
16341        return t.getUTCMinutes()
16342    }
16343    ], [d3.time.format.utc(":%S"), function(t) {
16344        return t.getUTCSeconds()
16345    }
16346    ], [d3.time.format.utc(".%L"), function(t) {
16347        return t.getUTCMilliseconds()
16348    }
16349    ]]
16350      , zo = Fr(Ro);
16351    qo.year = function(t, e) {
16352        return Po.domain(t.map(qr)).ticks(e).map(Or)
16353    }
16354    ,
16355    d3.time.scale.utc = function() {
16356        return Dr(d3.scale.linear(), qo, zo)
16357    }
16358}(),
16359function(t, e) {
16360    function n(t, e) {
16361        var n = t.createElement("p")
16362          , r = t.getElementsByTagName("head")[0] || t.documentElement;
16363        return n.innerHTML = "x<style>" + e + "</style>",
16364        r.insertBefore(n.lastChild, r.firstChild)
16365    }
16366    function r() {
16367        var t = v.elements;
16368        return "string" == typeof t ? t.split(" ") : t
16369    }
16370    function i(t, e) {
16371        var n = v.elements;
16372        "string" != typeof n && (n = n.join(" ")),
16373        "string" != typeof t && (t = t.join(" ")),
16374        v.elements = n + " " + t,
16375        l(e)
16376    }
16377    function o(t) {
16378        var e = y[t[g]];
16379        return e || (e = {},
16380        m++,
16381        t[g] = m,
16382        y[m] = e),
16383        e
16384    }
16385    function a(t, n, r) {
16386        if (n || (n = e),
16387        h)
16388            return n.createElement(t);
16389        r || (r = o(n));
16390        var i;
16391        return i = r.cache[t] ? r.cache[t].cloneNode() : p.test(t) ? (r.cache[t] = r.createElem(t)).cloneNode() : r.createElem(t),
16392        !i.canHaveChildren || f.test(t) || i.tagUrn ? i : r.frag.appendChild(i)
16393    }
16394    function s(t, n) {
16395        if (t || (t = e),
16396        h)
16397            return t.createDocumentFragment();
16398        n = n || o(t);
16399        for (var i = n.frag.cloneNode(), a = 0, s = r(), u = s.length; u > a; a++)
16400            i.createElement(s[a]);
16401        return i
16402    }
16403    function u(t, e) {
16404        e.cache || (e.cache = {},
16405        e.createElem = t.createElement,
16406        e.createFrag = t.createDocumentFragment,
16407        e.frag = e.createFrag()),
16408        t.createElement = function(n) {
16409            return v.shivMethods ? a(n, t, e) : e.createElem(n)
16410        }
16411        ,
16412        t.createDocumentFragment = Function("h,f", "return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&(" + r().join().replace(/[\w\-:]+/g, function(t) {
16413            return e.createElem(t),
16414            e.frag.createElement(t),
16415            'c("' + t + '")'
16416        }) + ");return n}")(v, e.frag)
16417    }
16418    function l(t) {
16419        t || (t = e);
16420        var r = o(t);
16421        return !v.shivCSS || c || r.hasCSS || (r.hasCSS = !!n(t, "article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{dis
16421play:block}mark{background:#FF0;color:#000}template{display:none}")),
16422        h || u(t, r),
16423        t
16424    }
16425    var c, h, d = t.html5 || {}, f = /^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i, p = /^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i, g = "_html5shiv", m = 0, y = {};
16426    !function() {
16427        try {
16428            var t = e.createElement("a");
16429            t.innerHTML = "<xyz></xyz>",
16430            c = "hidden"in t,
16431            h = 1 == t.childNodes.length || function() {
16432                e.createElement("a");
16433                var t = e.createDocumentFragment();
16434                return void 0 === t.cloneNode || void 0 === t.createDocumentFragment || void 0 === t.createElement
16435            }()
16436        } catch (t) {
16437            c = !0,
16438            h = !0
16439        }
16440    }();
16441    var v = {
16442        elements: d.elements || "abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",
16443        version: "3.7.3",
16444        shivCSS: !1 !== d.shivCSS,
16445        supportsUnknownElements: h,
16446        shivMethods: !1 !== d.shivMethods,
16447        type: "default",
16448        shivDocument: l,
16449        createElement: a,
16450        createDocumentFragment: s,
16451        addElements: i
16452    };
16453    t.html5 = v,
16454    l(e),
16455    "object" == typeof module && module.exports && (module.exports = v)
16456}("undefined" != typeof window ? window : this, document),
16457/*
16458 * International Telephone Input v17.0.0
16459 * https://github.com/jackocnr/intl-tel-input.git
16460 * Licensed under the MIT license
16461 */
16462function(t) {
16463    "object" == typeof module && module.exports ? module.exports = t() : window.intlTelInput = t()
16464}(function(t) {
16465    "use strict";
16466    return function() {
16467        for (var e = [["Afghanistan (‫افغانستان‬‎)", "af", "93"], ["Albania (Shqipëri)", "al", "355"], ["Algeria (‫الجزائر‬‎)", "dz", "213"], ["American Samoa", "as", "1", 5, ["684"]], ["Andorra", "ad", "376"], ["Angola", "ao", "244"], ["Anguilla", "ai", "1", 6, ["264"]], ["Antigua and Barbuda", "ag", "1", 7, ["268"]], ["Argentina", "ar", "54"], ["Armenia (Հայաստան)", "am", "374"], ["Aruba", "aw", "297"], ["Australia", "au", "61", 0], ["Austria (Österreich)", "at", "43"], ["Azerbaijan (Azərbaycan)", "az", "994"], ["Bahamas", "bs", "1", 8, ["242"]], ["Bahrain (‫البحرين‬‎)", "bh", "973"], ["Bangladesh (বাংলাদেশ)", "bd", "880"], ["Barbados", "bb", "1", 9, ["246"]], ["Belarus (Беларусь)", "by", "375"], ["Belgium (België)", "be", "32"], ["Belize", "bz", "501"], ["Benin (Bénin)", "bj", "229"], ["Bermuda", "bm", "1", 10, ["441"]], ["Bhutan (འབྲུག)", "bt", "975"], ["Bolivia", "bo", "591"], ["Bosnia and Herzegovina (Босна и Херцеговина)", "ba", "387"], ["Botswana", "bw", "267"], ["Brazil (Brasil)", "br", "55"], ["British Indian Ocean Territory", "io", "246"], ["British Virgin Islands", "vg", "1", 11, ["284"]], ["Brunei", "bn", "673"], ["Bulgaria (България)", "bg", "359"], ["Burkina Faso", "bf", "226"], ["Burundi (Uburundi)", "bi", "257"], ["Cambodia (កម្ពុជា)", "kh", "855"], ["Cameroon (Cameroun)", "cm", "237"], ["Canada", "ca", "1", 1, ["204", "226", "236", "249", "250", "289", "306", "343", "365", "387", "403", "416", "418", "431", "437", "438", "450", "506", "514", "519", "548", "579", "581", "587", "604", "613", "639", "647", "672", "705", "709", "742", "778", "780", "782", "807", "819", "825", "867", "873", "902", "905"]], ["Cape Verde (Kabu Verdi)", "cv", "238"], ["Caribbean Netherlands", "bq", "599", 1, ["3", "4", "7"]], ["Cayman Islands", "ky", "1", 12, ["345"]], ["Central African Republic (République centrafricaine)", "cf", "236"], ["Chad (Tchad)", "td", "235"], ["Chile", "cl", "56"], ["China (中国)", "cn", "86"], ["Christmas Island", "cx", "61", 2], ["Cocos (Keeling) Islands", "cc", "61", 1], ["Colombia", "co", "57"], ["Comoros (‫جزر القمر‬‎)", "km", "269"], ["Congo (DRC) (Jamhuri ya Kidemokrasia ya Kongo)", "cd", "243"], ["Congo (Republic) (Congo-Brazzaville)", "cg", "242"], ["Cook Islands", "ck", "682"], ["Costa Rica", "cr", "506"], ["Côte d’Ivoire", "ci", "225"], ["Croatia (Hrvatska)", "hr", "385"], ["Cuba", "cu", "53"], ["Curaçao", "cw", "599", 0], ["Cyprus (Κύπρος)", "cy", "357"], ["Czech Republic (Česká republika)", "cz", "420"], ["Denmark (Danmark)", "dk", "45"], ["Djibouti", "dj", "253"], ["Dominica", "dm", "1", 13, ["767"]], ["Dominican Republic (República Dominicana)", "do", "1", 2, ["809", "829", "849"]], ["Ecuador", "ec", "593"], ["Egypt (‫مصر‬‎)", "eg", "20"], ["
16467El Salvador", "sv", "503"], ["Equatorial Guinea (Guinea Ecuatorial)", "gq", "240"], ["Eritrea", "er", "291"], ["Estonia (Eesti)", "ee", "372"], ["Ethiopia", "et", "251"], ["Falkland Islands (Islas Malvinas)", "fk", "500"], ["Faroe Islands (Føroyar)", "fo", "298"], ["Fiji", "fj", "679"], ["Finland (Suomi)", "fi", "358", 0], ["France", "fr", "33"], ["French Guiana (Guyane française)", "gf", "594"], ["French Polynesia (Polynésie française)", "pf", "689"], ["Gabon", "ga", "241"], ["Gambia", "gm", "220"], ["Georgia (საქართველო)", "ge", "995"], ["Germany (Deutschland)", "de", "49"], ["Ghana (Gaana)", "gh", "233"], ["Gibraltar", "gi", "350"], ["Greece (Ελλάδα)", "gr", "30"], ["Greenland (Kalaallit Nunaat)", "gl", "299"], ["Grenada", "gd", "1", 14, ["473"]], ["Guadeloupe", "gp", "590", 0], ["Guam", "gu", "1", 15, ["671"]], ["Guatemala", "gt", "502"], ["Guernsey", "gg", "44", 1, ["1481", "7781", "7839", "7911"]], ["Guinea (Guinée)", "gn", "224"], ["Guinea-Bissau (Guiné Bissau)", "gw", "245"], ["Guyana", "gy", "592"], ["Haiti", "ht", "509"], ["Honduras", "hn", "504"], ["Hong Kong (香港)", "hk", "852"], ["Hungary (Magyarország)", "hu", "36"], ["Iceland (Ísland)", "is", "354"], ["India (भारत)", "in", "91"], ["Indonesia", "id", "62"], ["Iran (‫ایران‬‎)", "ir", "98"], ["Iraq (‫العراق‬‎)", "iq", "964"], ["Ireland", "ie", "353"], ["Isle of Man", "im", "44", 2, ["1624", "74576", "7524", "7924", "7624"]], ["Israel (‫ישראל‬‎)", "il", "972"], ["Italy (Italia)", "it", "39", 0], ["Jamaica", "jm", "1", 4, ["876", "658"]], ["Japan (日本)", "jp", "81"], ["Jersey", "je", "44", 3, ["1534", "7509", "7700", "7797", "7829", "7937"]], ["Jordan (‫الأردن‬‎)", "jo", "962"], ["Kazakhstan (Казахстан)", "kz", "7", 1, ["33", "7"]], ["Kenya", "ke", "254"], ["Kiribati", "ki", "686"], ["Kosovo", "xk", "383"], ["Kuwait (‫الكويت‬‎)", "kw", "965"], ["Kyrgyzstan (Кыргызстан)", "kg", "996"], ["Laos (ລາວ)", "la", "856"], ["Latvia (Latvija)", "lv", "371"], ["Lebanon (‫لبنان‬‎)", "lb", "961"], ["Lesotho", "ls", "266"], ["Liberia", "lr", "231"], ["Libya (‫ليبيا‬‎)", "ly", "218"], ["Liechtenstein", "li", "423"], ["Lithuania (Lietuva)", "lt", "370"], ["Luxembourg", "lu", "352"], ["Macau (澳門)", "mo", "853"], ["Macedonia (FYROM) (Македонија)", "mk", "389"], ["Madagascar (Madagasikara)", "mg", "261"], ["Malawi", "mw", "265"], ["Malaysia", "my", "60"], ["Maldives", "mv", "960"], ["Mali", "ml", "223"], ["Malta", "mt", "356"], ["Marshall Islands", "mh", "692"], ["Martinique", "mq", "596"], ["Mauritania (‫موريتانيا‬‎)", "mr", "222"], ["Mauritius (Moris)", "mu", "230"], ["Mayotte", "yt", "262", 1, ["269", "639"]], ["Mexico (México)", "mx", "52"], ["Micronesia", "fm", "691"], ["Moldova (Republica Moldova)", "md", "373"], ["Monaco", "mc", "377"], ["Mongolia (Монгол)", "mn", "976"], ["Montenegro (Crna Gora)", "me", "382"], ["Montserrat", "ms", "1", 16, ["664"]], ["Morocco (‫المغرب‬‎)", "ma", "212", 0], ["Mozambique (Moçambique)", "mz", "258"], ["Myanmar (Burma) (မြန်မာ)", "mm", "95"], ["Namibia (Namibië)", "na", "264"], ["Nauru", "nr", "674"], ["Nepal (नेपाल)", "np", "977"], ["Netherlands (Nederland)", "nl", "31"], ["New Caledonia (Nouvelle-Calédonie)", "nc", "687"], ["New Zealand", "nz", "64"], ["Nicaragua", "ni", "505"], ["Niger (Nijar)", "ne", "227"], ["Nigeria", "ng", "234"], ["Niue", "nu", "683"], ["Norfolk Island", "nf", "672"], ["North Korea (조선 민주주의 인민 공화국)", "kp", "850"], ["Northern Mariana Islands", "mp", "1", 17, ["670"]], ["Norway (Norge)", "no", "47", 0], ["Oman (‫عُمان‬‎)", "om", "968"], ["Pakistan (‫پاکستان‬‎)", "pk", "92"], ["Palau", "pw", "680"], ["Palestine (‫فلسطين‬‎)", "ps", "970"], ["Panama (Panamá)", "pa", "507"], ["Papua New Guinea", "pg", "675"], ["Paraguay", "py", "595"], ["Peru (Perú)", "pe", "51"], ["Philippines", "ph", "63"], ["Poland (Polska)", "pl", "48"], ["Portugal", "pt", "351"], ["Puerto Rico", "pr", "1", 3, ["787", "939"]], ["Qatar (‫قطر‬‎)", "qa", "974"], ["Réunion (La Réunion)", "re", "262", 0], ["Romania (România)", "ro", "40"], ["Russia (Россия)", "ru", "7", 0], ["Rwanda", "rw", "250"], ["Saint Barthélemy", "bl", "590", 1], ["Saint Helena", "sh", "290"], ["Saint Kitts and Nevis", "kn", "1", 18, ["869"]], ["Saint Lucia", "lc", "1", 19, ["758"]], ["Saint Martin (Saint-Martin (partie française))", "mf", "590", 2], ["Saint Pierre and Miquelon (Saint-Pierre-et-Miquelon)", "pm", "508"], ["Saint Vincent and the Grenadines", "vc", "1", 20, ["784"]], ["Samoa", "ws", "685"], ["San Marino", "sm", "378"], ["São Tomé and Príncipe (São Tomé e Príncipe)", "st", "239"], ["Saudi Arabia (‫المملكة العربية السعودية‬‎)", "sa", "966"], ["Senegal (Sénégal)", "sn", "221"], ["Serbia (Србија)", "rs", "381"], ["Seychelles", "sc", "248"], ["Sierra Leone", "sl", "232"], ["Singapore", "sg", "65"], ["Sint Maarten", "sx", "1", 21, ["721"]], ["Slovakia (Slovensko)", "sk", "421"], ["Slovenia (Slovenija)", "si", "386"], ["Solomon Islands", "sb", "677"], ["Somalia (Soomaaliya)", "so", "252"], ["South Africa", "za", "27"], ["South Korea (대한민국)", "kr", "82"], ["South Sudan (‫جنوب السودان‬‎)", "ss", "211"], ["Spain (España)", "es", "34"], ["Sri Lanka (ශ්‍රී ලංකාව)", "lk", "94"], ["Sudan (‫السودان‬‎)", "sd", "249"], ["Suriname", "sr", "597"], ["Svalbard and Jan Mayen", "sj", "47", 1, ["79"]], ["Swaziland", "sz", "268"], ["Swede
16467n (Sverige)", "se", "46"], ["Switzerland (Schweiz)", "ch", "41"], ["Syria (‫سوريا‬‎)", "sy", "963"], ["Taiwan (台灣)", "tw", "886"], ["Tajikistan", "tj", "992"], ["Tanzania", "tz", "255"], ["Thailand (ไทย)", "th", "66"], ["Timor-Leste", "tl", "670"], ["Togo", "tg", "228"], ["Tokelau", "tk", "690"], ["Tonga", "to", "676"], ["Trinidad and Tobago", "tt", "1", 22, ["868"]], ["Tunisia (‫تونس‬‎)", "tn", "216"], ["Turkey (Türkiye)", "tr", "90"], ["Turkmenistan", "tm", "993"], ["Turks and Caicos Islands", "tc", "1", 23, ["649"]], ["Tuvalu", "tv", "688"], ["U.S. Virgin Islands", "vi", "1", 24, ["340"]], ["Uganda", "ug", "256"], ["Ukraine (Україна)", "ua", "380"], ["United Arab Emirates (‫الإمارات العربية المتحدة‬‎)", "ae", "971"], ["United Kingdom", "gb", "44", 0], ["United States", "us", "1", 0], ["Uruguay", "uy", "598"], ["Uzbekistan (Oʻzbekiston)", "uz", "998"], ["Vanuatu", "vu", "678"], ["Vatican City (Città del Vaticano)", "va", "39", 1, ["06698"]], ["Venezuela", "ve", "58"], ["Vietnam (Việt Nam)", "vn", "84"], ["Wallis and Futuna (Wallis-et-Futuna)", "wf", "681"], ["Western Sahara (‫الصحراء الغربية‬‎)", "eh", "212", 1, ["5288", "5289"]], ["Yemen (‫اليمن‬‎)", "ye", "967"], ["Zambia", "zm", "260"], ["Zimbabwe", "zw", "263"], ["Åland Islands", "ax", "358", 1, ["18"]]], n = 0; n < e.length; n++) {
16468            var r = e[n];
16469            e[n] = {
16470                name: r[0],
16471                iso2: r[1],
16472                dialCode: r[2],
16473                priority: r[3] || 0,
16474                areaCodes: r[4] || null
16475            }
16476        }
16477        function i(t, e) {
16478            if (!(t instanceof e))
16479                throw new TypeError("Cannot call a class as a function")
16480        }
16481        function o(t, e) {
16482            for (var n = 0; n < e.length; n++) {
16483                var r = e[n];
16484                r.enumerable = r.enumerable || !1,
16485                r.configurable = !0,
16486                "value"in r && (r.writable = !0),
16487                Object.defineProperty(t, r.key, r)
16488            }
16489        }
16490        function a(t, e, n) {
16491            return e && o(t.prototype, e),
16492            n && o(t, n),
16493            t
16494        }
16495        var s = {
16496            getInstance: function(t) {
16497                var e = t.getAttribute("data-intl-tel-input-id");
16498                return window.intlTelInputGlobals.instances[e]
16499            },
16500            instances: {}
16501        };
16502        "object" == typeof window && (window.intlTelInputGlobals = s);
16503        var u = 0
16504          , l = {
16505            allowDropdown: !0,
16506            autoHideDialCode: !0,
16507            autoPlaceholder: "polite",
16508            customContainer: "",
16509            customPlaceholder: null,
16510            dropdownContainer: null,
16511            excludeCountries: [],
16512            formatOnDisplay: !0,
16513            geoIpLookup: null,
16514            hiddenInput: "",
16515            initialCountry: "",
16516            localizedCountries: null,
16517            nationalMode: !0,
16518            onlyCountries: [],
16519            placeholderNumberType: "MOBILE",
16520            preferredCountries: ["us", "gb"],
16521            separateDialCode: !1,
16522            utilsScript: ""
16523        }
16524          , c = ["800", "822", "833", "844", "855", "866", "877", "880", "881", "882", "883", "884", "885", "886", "887", "888", "889"];
16525        "object" == typeof window && window.addEventListener("load", function() {
16526            window.intlTelInputGlobals.windowLoaded = !0
16527        });
16528        var h = function(t, e) {
16529            for (var n = Object.keys(t), r = 0; r < n.length; r++)
16530                e(n[r], t[n[r]])
16531        }
16532          , d = function(t) {
16533            h(window.intlTelInputGlobals.instances, function(e) {
16534                window.intlTelInputGlobals.instances[e][t]()
16535            })
16536        }
16537          , f = function() {
16538            function n(t, e) {
16539                var r = this;
16540                i(this, n),
16541                this.id = u++,
16542                this.telInput = t,
16543                this.activeItem = null,
16544                this.highlightedItem = null;
16545                var o = e || {};
16546                this.options = {},
16547                h(l, function(t, e) {
16548                    r.options[t] = o.hasOwnProperty(t) ? o[t] : e
16549                }),
16550                this.hadInitialPlaceholder = Boolean(t.getAttribute("placeholder"))
16551            }
16552            return a(n, [{
16553                key: "_init",
16554                value: function() {
16555                    var t = this;
16556                    if (this.options.nationalMode && (this.options.autoHideDialCode = !1),
16557                    this.options.separateDialCode && (this.options.autoHideDialCode = this.options.nationalMode = !1),
16558                    this.isMobile = /Android.+Mobile|webOS|iPhone|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent),
16559                    this.isMobile && (document.body.classList.add("iti-mobile"),
16560                    this.options.dropdownContainer || (this.options.dropdownContainer = document.body)),
16561                    "undefined" != typeof Promise) {
16562                        var e = new Promise(function(e, n) {
16563                            t.resolveAutoCountryPromise = e,
16564                            t.rejectAutoCountryPromise = n
16565                        }
16566                        )
16567                          , n = new Promise(function(e, n) {
16568                            t.resolveUtilsScriptPromise = e,
16569                            t.rejectUtilsScriptPromise = n
16570                        }
16571                        );
16572                        this.promise = Promise.all([e, n])
16573                    } else
16574                        this.resolveAutoCountryPromise = this.rejectAutoCountryPromise = function() {}
16575                        ,
16576                        this.resolveUtilsScriptPromise = this.rejectUtilsScriptPromise = function() {}
16577                        ;
16578                    this.selectedCountryData = {},
16579                    this._processCountryData(),
16580                    this._generateMarkup(),
16581                    this._setInitialState(),
16582                    this._initListeners(),
16583                    this._initRequests()
16584                }
16585            }, {
16586                key: "_processCountryData",
16587                value: function() {
16588                    this._processAllCountries(),
16589                    this._processCountryCodes(),
16590                    this._processPreferredCountries(),
16591                    this.options.localizedCountries && this._translateCountriesByLocale(),
16592                    (this.options.onlyCountries.length || this.options.localizedCountries) && this.countries.sort(this._countryNameSort)
16593                }
16594            }, {
16595                key: "_addCountryCode",
16596                value: function(e, n, r) {
16597                    n.length > this.dialCodeMaxLen && (this.dialCodeMaxLen = n.length),
16598                    this.countryCodes.hasOwnProperty(n) || (this.countryCodes[n] = []);
16599                    for (var i = 0; i < this.countryCodes[n].length; i++)
16600                        if (this.countryCodes[n][i] === e)
16601                            return;
16602                    var o = r !== t ? r : this.countryCodes[n].length;
16603                    this.countryCodes[n][o] = e
16604                }
16605            }, {
16606                key: "_processAllCountries",
16607                value: function() {
16608                    if (this.options.onlyCountries.length) {
16609                        var t = this.options.onlyCountries.map(function(t) {
16610                            return t.toLowerCase()
16611                        });
16612                        this.countries = e.filter(function(e) {
16613                            return t.indexOf(e.iso2) > -1
16614                        })
16615                    } else if (this.options.excludeCountries.length) {
16616                        var n = this.options.excludeCountries.map(function(t) {
16617                            return t.toLowerCase()
16618                        });
16619                        this.countries = e.filter(function(t) {
16620                            return -1 === n.indexOf(t.iso2)
16621                        })
16622                    } else
16623                        this.countries = e
16624                }
16625            }, {
16626                key: "_translateCountriesByLocale",
16627                value: function() {
16628                    for (var t = 0; t < this.countries.length; t++) {
16629                        var e = this.countries[t].iso2.toLowerCase();
16630                        this.options.localizedCountries.hasOwnProperty(e) && (this.countries[t].name = this.options.localizedCountries[e])
16631                    }
16632                }
16633            }, {
16634                key: "_countryNameSort",
16635                value: function(t, e) {
16636                    return t.name.localeCompare(e.name)
16637                }
16638            }, {
16639                key: "_processCountryCodes",
16640                value: function() {
16641                    this.dialCodeMaxLen = 0,
16642                    this.countryCodes = {};
16643                    for (var t = 0; t < this.countries.length; t++) {
16644                        var e = this.countries[t];
16645                        this._addCountryCode(e.iso2, e.dialCode, e.priority)
16646                    }
16647                    for (var n = 0; n < this.countries.length; n++) {
16648                        var r = this.countries[n];
16649                        if (r.areaCodes)
16650                            for (var i = this.countryCodes[r.dialCode][0], o = 0; o < r.areaCodes.length; o++) {
16651                                for (var a = r.areaCodes[o], s = 1; s < a.length; s++) {
16652                                    var u = r.dialCode + a.substr(0, s);
16653                                    this._addCountryCode(i, u),
16654                                    this._addCountryCode(r.iso2, u)
16655                                }
16656                                this._addCountryCode(r.iso2, r.dialCode + a)
16657                            }
16658                    }
16659                }
16660            }, {
16661                key: "_processPreferredCountries",
16662                value: function() {
16663                    this.preferredCountries = [];
16664                    for (var t = 0; t < this.options.preferredCountries.length; t++) {
16665                        var e = this.options.preferredCountries[t].toLowerCase()
16666                          , n = this._getCountryData(e, !1, !0);
16667                        n && this.preferredCountries.push(n)
16668                    }
16669                }
16670            }, {
16671                key: "_createEl",
16672                value: function(t, e, n) {
16673                    var r = document.createElement(t);
16674                    return e && h(e, function(t, e) {
16675                        return r.setAttribute(t, e)
16676                    }),
16677                    n && n.appendChild(r),
16678                    r
16679                }
16680            }, {
16681                key: "_generateMarkup",
16682                value: function() {
16683                    this.telInput.hasAttribute("autocomplete") || this.telInput.form && this.telInput.form.hasAttribute("autocomplete") || this.telInput.setAttribute("autocomplete", "off");
16684                    var t = "iti";
16685                    this.options.allowDropdown && (t += " iti--allow-dropdown"),
16686                    this.options.separateDialCode && (t += " iti--separate-dial-code"),
16687                    this.options.customContainer && (t += " ",
16688                    t += this.options.customContainer);
16689                    var e = this._createEl("div", {
16690                        class: t
16691                    });
16692                    if (this.telInput.parentNode.insertBefore(e, this.telInput),
16693                    this.flagsContainer = this._createEl("div", {
16694                        class: "iti__flag-container"
16695                    }, e),
16696                    e.appendChild(this.telInput),
16697                    this.selectedFlag = this._createEl("div", {
16698                        class: "iti__selected-flag",
16699                        role: "combobox",
16700                        "aria-owns": "iti-".concat(this.id, "__country-listbox"),
16701                        "aria-expanded": "false"
16702                    }, this.flagsContainer),
16703                    this.selectedFlagInner = this._createEl("div", {
16704                        class: "iti__flag"
16705                    }, this.selectedFlag),
16706                    this.options.separateDialCode && (this.selectedDialCode = this._createEl("div", {
16707                        class: "iti__selected-dial-code"
16708                    }, this.selectedFlag)),
16709                    this.options.allowDropdown && (this.selectedFlag.setAttribute("tabindex", "0"),
16710                    this.dropdownArrow = this._createEl("div", {
16711                        class: "iti__arrow"
16712                    }, this.selectedFlag),
16713                    this.countryList = this._createEl("ul", {
16714                        class: "iti__country-list iti__hide",
16715                        id: "iti-".concat(this.id, "__country-listbox"),
16716                        role: "listbox"
vendor: 15,509 bytes, lines 16717-17011
16717                    }),
16718                    this.preferredCountries.length && (this._appendListItems(this.preferredCountries, "iti__preferred", !0),
16719                    this._createEl("li", {
16720                        class: "iti__divider",
16721                        role: "separator",
16722                        "aria-disabled": "true"
16723                    }, this.countryList)),
16724                    this._appendListItems(this.countries, "iti__standard"),
16725                    this.options.dropdownContainer ? (this.dropdown = this._createEl("div", {
16726                        class: "iti iti--container"
16727                    }),
16728                    this.dropdown.appendChild(this.countryList)) : this.flagsContainer.appendChild(this.countryList)),
16729                    this.options.hiddenInput) {
16730                        var n = this.options.hiddenInput
16731                          , r = this.telInput.getAttribute("name");
16732                        if (r) {
16733                            var i = r.lastIndexOf("[");
16734                            -1 !== i && (n = "".concat(r.substr(0, i), "[").concat(n, "]"))
16735                        }
16736                        this.hiddenInput = this._createEl("input", {
16737                            type: "hidden",
16738                            name: n
16739                        }),
16740                        e.appendChild(this.hiddenInput)
16741                    }
16742                }
16743            }, {
16744                key: "_appendListItems",
16745                value: function(t, e, n) {
16746                    for (var r = "", i = 0; i < t.length; i++) {
16747                        var o = t[i]
16748                          , a = n ? "-preferred" : "";
16749                        r += "<li class='iti__country ".concat(e, "' tabIndex='-1' id='iti-").concat(this.id, "__item-").concat(o.iso2).concat(a, "' role='option' data-dial-code='").concat(o.dialCode, "' data-country-code='").concat(o.iso2, "'>"),
16750                        r += "<div class='iti__flag-box'><div class='iti__flag iti__".concat(o.iso2, "'></div></div>"),
16751                        r += "<span class='iti__country-name'>".concat(o.name, "</span>"),
16752                        r += "<span class='iti__dial-code'>+".concat(o.dialCode, "</span>"),
16753                        r += "</li>"
16754                    }
16755                    this.countryList.insertAdjacentHTML("beforeend", r)
16756                }
16757            }, {
16758                key: "_setInitialState",
16759                value: function() {
16760                    var t = this.telInput.value
16761                      , e = this._getDialCode(t)
16762                      , n = this._isRegionlessNanp(t)
16763                      , r = this.options
16764                      , i = r.initialCountry
16765                      , o = r.nationalMode
16766                      , a = r.autoHideDialCode
16767                      , s = r.separateDialCode;
16768                    e && !n ? this._updateFlagFromNumber(t) : "auto" !== i && (i ? this._setFlag(i.toLowerCase()) : e && n ? this._setFlag("us") : (this.defaultCountry = this.preferredCountries.length ? this.preferredCountries[0].iso2 : this.countries[0].iso2,
16769                    t || this._setFlag(this.defaultCountry)),
16770                    t || o || a || s || (this.telInput.value = "+".concat(this.selectedCountryData.dialCode))),
16771                    t && this._updateValFromNumber(t)
16772                }
16773            }, {
16774                key: "_initListeners",
16775                value: function() {
16776                    this._initKeyListeners(),
16777                    this.options.autoHideDialCode && this._initBlurListeners(),
16778                    this.options.allowDropdown && this._initDropdownListeners(),
16779                    this.hiddenInput && this._initHiddenInputListener()
16780                }
16781            }, {
16782                key: "_initHiddenInputListener",
16783                value: function() {
16784                    var t = this;
16785                    this._handleHiddenInputSubmit = function() {
16786                        t.hiddenInput.value = t.getNumber()
16787                    }
16788                    ,
16789                    this.telInput.form && this.telInput.form.addEventListener("submit", this._handleHiddenInputSubmit)
16790                }
16791            }, {
16792                key: "_getClosestLabel",
16793                value: function() {
16794                    for (var t = this.telInput; t && "LABEL" !== t.tagName; )
16795                        t = t.parentNode;
16796                    return t
16797                }
16798            }, {
16799                key: "_initDropdownListeners",
16800                value: function() {
16801                    var t = this;
16802                    this._handleLabelClick = function(e) {
16803                        t.countryList.classList.contains("iti__hide") ? t.telInput.focus() : e.preventDefault()
16804                    }
16805                    ;
16806                    var e = this._getClosestLabel();
16807                    e && e.addEventListener("click", this._handleLabelClick),
16808                    this._handleClickSelectedFlag = function() {
16809                        !t.countryList.classList.contains("iti__hide") || t.telInput.disabled || t.telInput.readOnly || t._showDropdown()
16810                    }
16811                    ,
16812                    this.selectedFlag.addEventListener("click", this._handleClickSelectedFlag),
16813                    this._handleFlagsContainerKeydown = function(e) {
16814                        t.countryList.classList.contains("iti__hide") && -1 !== ["ArrowUp", "Up", "ArrowDown", "Down", " ", "Enter"].indexOf(e.key) && (e.preventDefault(),
16815                        e.stopPropagation(),
16816                        t._showDropdown()),
16817                        "Tab" === e.key && t._closeDropdown()
16818                    }
16819                    ,
16820                    this.flagsContainer.addEventListener("keydown", this._handleFlagsContainerKeydown)
16821                }
16822            }, {
16823                key: "_initRequests",
16824                value: function() {
16825                    var t = this;
16826                    this.options.utilsScript && !window.intlTelInputUtils ? window.intlTelInputGlobals.windowLoaded ? window.intlTelInputGlobals.loadUtils(this.options.utilsScript) : window.addEventListener("load", function() {
16827                        window.intlTelInputGlobals.loadUtils(t.options.utilsScript)
16828                    }) : this.resolveUtilsScriptPromise(),
16829                    "auto" === this.options.initialCountry ? this._loadAutoCountry() : this.resolveAutoCountryPromise()
16830                }
16831            }, {
16832                key: "_loadAutoCountry",
16833                value: function() {
16834                    window.intlTelInputGlobals.autoCountry ? this.handleAutoCountry() : window.intlTelInputGlobals.startedLoadingAutoCountry || (window.intlTelInputGlobals.startedLoadingAutoCountry = !0,
16835                    "function" == typeof this.options.geoIpLookup && this.options.geoIpLookup(function(t) {
16836                        window.intlTelInputGlobals.autoCountry = t.toLowerCase(),
16837                        setTimeout(function() {
16838                            return d("handleAutoCountry")
16839                        })
16840                    }, function() {
16841                        return d("rejectAutoCountryPromise")
16842                    }))
16843                }
16844            }, {
16845                key: "_initKeyListeners",
16846                value: function() {
16847                    var t = this;
16848                    this._handleKeyupEvent = function() {
16849                        t._updateFlagFromNumber(t.telInput.value) && t._triggerCountryChange()
16850                    }
16851                    ,
16852                    this.telInput.addEventListener("keyup", this._handleKeyupEvent),
16853                    this._handleClipboardEvent = function() {
16854                        setTimeout(t._handleKeyupEvent)
16855                    }
16856                    ,
16857                    this.telInput.addEventListener("cut", this._handleClipboardEvent),
16858                    this.telInput.addEventListener("paste", this._handleClipboardEvent)
16859                }
16860            }, {
16861                key: "_cap",
16862                value: function(t) {
16863                    var e = this.telInput.getAttribute("maxlength");
16864                    return e && t.length > e ? t.substr(0, e) : t
16865                }
16866            }, {
16867                key: "_initBlurListeners",
16868                value: function() {
16869                    var t = this;
16870                    this._handleSubmitOrBlurEvent = function() {
16871                        t._removeEmptyDialCode()
16872                    }
16873                    ,
16874                    this.telInput.form && this.telInput.form.addEventListener("submit", this._handleSubmitOrBlurEvent),
16875                    this.telInput.addEventListener("blur", this._handleSubmitOrBlurEvent)
16876                }
16877            }, {
16878                key: "_removeEmptyDialCode",
16879                value: function() {
16880                    if ("+" === this.telInput.value.charAt(0)) {
16881                        var t = this._getNumeric(this.telInput.value);
16882                        t && this.selectedCountryData.dialCode !== t || (this.telInput.value = "")
16883                    }
16884                }
16885            }, {
16886                key: "_getNumeric",
16887                value: function(t) {
16888                    return t.replace(/\D/g, "")
16889                }
16890            }, {
16891                key: "_trigger",
16892                value: function(t) {
16893                    var e = document.createEvent("Event");
16894                    e.initEvent(t, !0, !0),
16895                    this.telInput.dispatchEvent(e)
16896                }
16897            }, {
16898                key: "_showDropdown",
16899                value: function() {
16900                    this.countryList.classList.remove("iti__hide"),
16901                    this.selectedFlag.setAttribute("aria-expanded", "true"),
16902                    this._setDropdownPosition(),
16903                    this.activeItem && (this._highlightListItem(this.activeItem, !1),
16904                    this._scrollTo(this.activeItem, !0)),
16905                    this._bindDropdownListeners(),
16906                    this.dropdownArrow.classList.add("iti__arrow--up"),
16907                    this._trigger("open:countrydropdown")
16908                }
16909            }, {
16910                key: "_toggleClass",
16911                value: function(t, e, n) {
16912                    n && !t.classList.contains(e) ? t.classList.add(e) : !n && t.classList.contains(e) && t.classList.remove(e)
16913                }
16914            }, {
16915                key: "_setDropdownPosition",
16916                value: function() {
16917                    var t = this;
16918                    if (this.options.dropdownContainer && this.options.dropdownContainer.appendChild(this.dropdown),
16919                    !this.isMobile) {
16920                        var e = this.telInput.getBoundingClientRect()
16921                          , n = window.pageYOffset || document.documentElement.scrollTop
16922                          , r = e.top + n
16923                          , i = this.countryList.offsetHeight
16924                          , o = r + this.telInput.offsetHeight + i < n + window.innerHeight
16925                          , a = r - i > n;
16926                        if (this._toggleClass(this.countryList, "iti__country-list--dropup", !o && a),
16927                        this.options.dropdownContainer) {
16928                            var s = !o && a ? 0 : this.telInput.offsetHeight;
16929                            this.dropdown.style.top = "".concat(r + s, "px"),
16930                            this.dropdown.style.left = "".concat(e.left + document.body.scrollLeft, "px"),
16931                            this._handleWindowScroll = function() {
16932                                return t._closeDropdown()
16933                            }
16934                            ,
16935                            window.addEventListener("scroll", this._handleWindowScroll)
16936                        }
16937                    }
16938                }
16939            }, {
16940                key: "_getClosestListItem",
16941                value: function(t) {
16942                    for (var e = t; e && e !== this.countryList && !e.classList.contains("iti__country"); )
16943                        e = e.parentNode;
16944                    return e === this.countryList ? null : e
16945                }
16946            }, {
16947                key: "_bindDropdownListeners",
16948                value: function() {
16949                    var t = this;
16950                    this._handleMouseoverCountryList = function(e) {
16951                        var n = t._getClosestListItem(e.target);
16952                        n && t._highlightListItem(n, !1)
16953                    }
16954                    ,
16955                    this.countryList.addEventListener("mouseover", this._handleMouseoverCountryList),
16956                    this._handleClickCountryList = function(e) {
16957                        var n = t._getClosestListItem(e.target);
16958                        n && t._selectListItem(n)
16959                    }
16960                    ,
16961                    this.countryList.addEventListener("click", this._handleClickCountryList);
16962                    var e = !0;
16963                    this._handleClickOffToClose = function() {
16964                        e || t._closeDropdown(),
16965                        e = !1
16966                    }
16967                    ,
16968                    document.documentElement.addEventListener("click", this._handleClickOffToClose);
16969                    var n = ""
16970                      , r = null;
16971                    this._handleKeydownOnDropdown = function(e) {
16972                        e.preventDefault(),
16973                        "ArrowUp" === e.key || "Up" === e.key || "ArrowDown" === e.key || "Down" === e.key ? t._handleUpDownKey(e.key) : "Enter" === e.key ? t._handleEnterKey() : "Escape" === e.key ? t._closeDropdown() : /^[a-zA-ZÀ-ÿа-яА-Я ]$/.test(e.key) && (r && clearTimeout(r),
16974                        n += e.key.toLowerCase(),
16975                        t._searchForCountry(n),
16976                        r = setTimeout(function() {
16977                            n = ""
16978                        }, 1e3))
16979                    }
16980                    ,
16981                    document.addEventListener("keydown", this._handleKeydownOnDropdown)
16982                }
16983            }, {
16984                key: "_handleUpDownKey",
16985                value: function(t) {
16986                    var e = "ArrowUp" === t || "Up" === t ? this.highlightedItem.previousElementSibling : this.highlightedItem.nextElementSibling;
16987                    e && (e.classList.contains("iti__divider") && (e = "ArrowUp" === t || "Up" === t ? e.previousElementSibling : e.nextElementSibling),
16988                    this._highlightListItem(e, !0))
16989                }
16990            }, {
16991                key: "_handleEnterKey",
16992                value: function() {
16993                    this.highlightedItem && this._selectListItem(this.highlightedItem)
16994                }
16995            }, {
16996                key: "_searchForCountry",
16997                value: function(t) {
16998                    for (var e = 0; e < this.countries.length; e++)
16999                        if (this._startsWith(this.countries[e].name, t)) {
17000                            var n = this.countryList.querySelector("#iti-".concat(this.id, "__item-").concat(this.countries[e].iso2));
17001                            this._highlightListItem(n, !1),
17002                            this._scrollTo(n, !0);
17003                            break
17004                        }
17005                }
17006            }, {
17007                key: "_startsWith",
17008                value: function(t, e) {
17009                    return t.substr(0, e.length).toLowerCase() === e
17010                }
17011            }, {
17012                key: "_updateValFromNumber",
17013                value: function(t) {
17014                    var e = t;
17015                    if (this.options.formatOnDisplay && window.intlTelInputUtils && this.selectedCountryData) {
17016                        var n = !this.options.separateDialCode && (this.options.nationalMode || "+" !== e.charAt(0))
17017                          , r = intlTelInputUtils.numberFormat
17018                          , i = r.NATIONAL
17019                          , o = r.INTERNATIONAL
17020                          , a = n ? i : o;
17021                        e = intlTelInputUtils.formatNumber(e, this.selectedCountryData.iso2, a)
17022                    }
17023                    e = this._beforeSetNumber(e),
17024                    this.telInput.value = e
17025                }
17026            }, {
17027                key: "_updateFlagFromNumber",
17028                value: function(t) {
17029                    var e = t
17030                      , n = this.selectedCountryData.dialCode
17031                      , r = "1" === n;
17032                    e && this.options.nationalMode && r && "+" !== e.charAt(0) && ("1" !== e.charAt(0) && (e = "1".concat(e)),
17033                    e = "+".concat(e)),
17034                    this.options.separateDialCode && n && "+" !== e.charAt(0) && (e = "+".concat(n).concat(e));
17035                    var i = this._getDialCode(e)
17036                      , o = this._getNumeric(e)
17037                      , a = null;
17038                    if (i) {
17039                        var s = this.countryCodes[this._getNumeric(i)]
17040                          , u = -1 !== s.indexOf(this.selectedCountryData.iso2) && o.length <= i.length - 1;
17041                        if (!("1" === n && this._isRegionlessNanp(o)) && !u)
17042                            for (var l = 0; l < s.length; l++)
17043                                if (s[l]) {
17044                                    a = s[l];
17045                                    break
17046                                }
17047                    } else
17048                        "+" === e.charAt(0) && o.length ? a = "" : e && "+" !== e || (a = this.defaultCountry);
17049                    return null !== a && this._setFlag(a)
17050                }
17051            }, {
17052                key: "_isRegionlessNanp",
17053                value: function(t) {
17054                    var e = this._getNumeric(t);
17055                    if ("1" === e.charAt(0)) {
17056                        var n = e.substr(1, 3);
17057                        return -1 !== c.indexOf(n)
17058                    }
17059                    return !1
17060                }
17061            }, {
17062                key: "_highlightListItem",
17063                value: function(t, e) {
17064                    var n = this.highlightedItem;
17065                    n && n.classList.remove("iti__highlight"),
17066                    this.highlightedItem = t,
17067                    this.highlightedItem.classList.add("iti__highlight"),
17068                    e && this.highlightedItem.focus()
17069                }
17070            }, {
17071                key: "_getCountryData",
17072                value: function(t, n, r) {
17073                    for (var i = n ? e : this.countries, o = 0; o < i.length; o++)
17074                        if (i[o].iso2 === t)
17075                            return i[o];
17076                    if (r)
17077                        return null;
17078                    throw new Error("No country data for '".concat(t, "'"))
17079                }
17080            }, {
17081                key: "_setFlag",
17082                value: function(t) {
17083                    var e = this.selectedCountryData.iso2 ? this.selectedCountryData : {};
17084                    this.selectedCountryData = t ? this._getCountryData(t, !1, !1) : {},
17085                    this.selectedCountryData.iso2 && (this.defaultCountry = this.selectedCountryData.iso2),
17086                    this.selectedFlagInner.setAttribute("class", "iti__flag iti__".concat(t));
17087                    var n = t ? "".concat(this.selectedCountryData.name, ": +").concat(this.selectedCountryData.dialCode) : "Unknown";
17088                    if (this.selectedFlag.setAttribute("title", n),
17089                    this.options.separateDialCode) {
17090                        var r = this.selectedCountryData.dialCode ? "+".concat(this.selectedCountryData.dialCode) : "";
17091                        this.selectedDialCode.innerHTML = r;
17092                        var i = this.selectedFlag.offsetWidth || this._getHiddenSelectedFlagWidth();
17093                        this.telInput.style.paddingLeft = "".concat(i + 6, "px")
17094                    }
17095                    if (this._updatePlaceholder(),
17096                    this.options.allowDropdown) {
17097                        var o = this.activeItem;
17098                        if (o && (o.classList.remove("iti__active"),
17099                        o.setAttribute("aria-selected", "false")),
17100                        t) {
17101                            var a = this.countryList.querySelector("#iti-".concat(this.id, "__item-").concat(t, "-preferred")) || this.countryList.querySelector("#iti-".concat(this.id, "__item-").concat(t));
17102                            a.setAttribute("aria-selected", "true"),
17103                            a.classList.add("iti__active"),
17104                            this.activeItem = a,
17105                            this.selectedFlag.setAttribute("aria-activedescendant", a.getAttribute("id"))
17106                        }
17107                    }
17108                    return e.iso2 !== t
17109                }
17110            }, {
17111                key: "_getHiddenSelectedFlagWidth",
17112                value: function() {
17113                    var t = this.telInput.parentNode.cloneNode();
17114                    t.style.visibility = "hidden",
17115                    document.body.appendChild(t);
17116                    var e = this.selectedFlag.cloneNode(!0);
17117                    t.appendChild(e);
17118                    var n = e.offsetWidth;
17119                    return t.parentNode.removeChild(t),
17120                    n
17121                }
17122            }, {
17123                key: "_updatePlaceholder",
17124                value: function() {
17125                    var t = "aggressive" === this.options.autoPlaceholder || !this.hadInitialPlaceholder && "polite" === this.options.autoPlaceholder;
17126                    if (window.intlTelInputUtils && t) {
17127                        var e = intlTelInputUtils.numberType[this.options.placeholderNumberType]
17128                          , n = this.selectedCountryData.iso2 ? intlTelInputUtils.getExampleNumber(this.selectedCountryData.iso2, this.options.nationalMode, e) : "";
17129                        n = this._beforeSetNumber(n),
17130                        "function" == typeof this.options.customPlaceholder && (n = this.options.customPlaceholder(n, this.selectedCountryData)),
17131                        this.telInput.setAttribute("placeholder", n)
17132                    }
17133                }
17134            }, {
17135                key: "_selectListItem",
17136                value: function(t) {
17137                    var e = this._setFlag(t.getAttribute("data-country-code"));
17138                    this._closeDropdown(),
17139                    this._updateDialCode(t.getAttribute("data-dial-code"), !0),
17140                    this.telInput.focus();
17141                    var n = this.telInput.value.length;
17142                    this.telInput.setSelectionRange(n, n),
17143                    e && this._triggerCountryChange()
17144                }
17145            }, {
17146                key: "_closeDropdown",
17147                value: function() {
17148                    this.countryList.classList.add("iti__hide"),
17149                    this.selectedFlag.setAttribute("aria-expanded", "false"),
17150                    this.dropdownArrow.classList.remove("iti__arrow--up"),
17151                    document.removeEventListener("keydown", this._handleKeydownOnDropdown),
17152                    document.documentElement.removeEventListener("click", this._handleClickOffToClose),
17153                    this.countryList.removeEventListener("mouseover", this._handleMouseoverCountryList),
17154                    this.countryList.removeEventListener("click", this._handleClickCountryList),
17155                    this.options.dropdownContainer && (this.isMobile || window.removeEventListener("scroll", this._handleWindowScroll),
17156                    this.dropdown.parentNode && this.dropdown.parentNode.removeChild(this.dropdown)),
17157                    this._trigger("close:countrydropdown")
17158                }
17159            }, {
17160                key: "_scrollTo",
17161                value: function(t, e) {
17162                    var n = this.countryList
17163                      , r = window.pageYOffset || document.documentElement.scrollTop
17164                      , i = n.offsetHeight
17165                      , o = n.getBoundingClientRect().top + r
17166                      , a = o + i
17167                      , s = t.offsetHeight
17168                      , u = t.getBoundingClientRect().top + r
17169                      , l = u + s
17170                      , c = u - o + n.scrollTop
17171                      , h = i / 2 - s / 2;
17172                    if (u < o)
17173                        e && (c -= h),
17174                        n.scrollTop = c;
17175                    else if (l > a) {
17176                        e && (c += h);
17177                        var d = i - s;
17178                        n.scrollTop = c - d
17179                    }
17180                }
17181            }, {
17182                key: "_updateDialCode",
17183                value: function(t, e) {
17184                    var n, r = this.telInput.value, i = "+".concat(t);
17185                    if ("+" === r.charAt(0)) {
17186                        var o = this._getDialCode(r);
17187                        n = o ? r.replace(o, i) : i
17188                    } else {
17189                        if (this.options.nationalMode || this.options.separateDialCode)
17190                            return;
17191                        if (r)
17192                            n = i + r;
17193                        else {
17194                            if (!e && this.options.autoHideDialCode)
17195                                return;
17196                            n = i
17197                        }
17198                    }
17199                    this.telInput.value = n
17200                }
17201            }, {
17202                key: "_getDialCode",
17203                value: function(t) {
17204                    var e = "";
17205                    if ("+" === t.charAt(0))
17206                        for (var n = "", r = 0; r < t.length; r++) {
17207                            var i = t.charAt(r);
17208                            if (!isNaN(parseInt(i, 10)) && (n += i,
17209                            this.countryCodes[n] && (e = t.substr(0, r + 1)),
17210                            n.length === this.dialCodeMaxLen))
17211                                break
17212                        }
17213                    return e
17214                }
17215            }, {
17216                key: "_getFullNumber",
17217                value: function() {
17218                    var t = this.telInput.value.trim()
17219                      , e = this.selectedCountryData.dialCode
17220                      , n = this._getNumeric(t);
17221                    return (this.options.separateDialCode && "+" !== t.charAt(0) && e && n ? "+".concat(e) : "") + t
17222                }
17223            }, {
17224                key: "_beforeSetNumber",
17225                value: function(t) {
17226                    var e = t;
17227                    if (this.options.separateDialCode) {
17228                        var n = this._getDialCode(e);
17229                        if (n) {
17230                            n = "+".concat(this.selectedCountryData.dialCode);
17231                            var r = " " === e[n.length] || "-" === e[n.length] ? n.length + 1 : n.length;
17232                            e = e.substr(r)
17233                        }
17234                    }
17235                    return this._cap(e)
17236                }
17237            }, {
17238                key: "_triggerCountryChange",
17239                value: function() {
17240                    this._trigger("countrychange")
17241                }
17242            }, {
17243                key: "handleAutoCountry",
17244                value: function() {
17245                    "auto" === this.options.initialCountry && (this.defaultCountry = window.intlTelInputGlobals.autoCountry,
17246                    this.telInput.value || this.setCountry(this.defaultCountry),
17247                    this.resolveAutoCountryPromise())
17248                }
17249            }, {
17250                key: "handleUtils",
17251                value: function() {
17252                    window.intlTelInputUtils && (this.telInput.value && this._updateV
17252alFromNumber(this.telInput.value),
17253                    this._updatePlaceholder()),
17254                    this.resolveUtilsScriptPromise()
17255                }
17256            }, {
17257                key: "destroy",
17258                value: function() {
17259                    var t = this.telInput.form;
17260                    if (this.options.allowDropdown) {
17261                        this._closeDropdown(),
17262                        this.selectedFlag.removeEventListener("click", this._handleClickSelectedFlag),
17263                        this.flagsContainer.removeEventListener("keydown", this._handleFlagsContainerKeydown);
17264                        var e = this._getClosestLabel();
17265                        e && e.removeEventListener("click", this._handleLabelClick)
17266                    }
17267                    this.hiddenInput && t && t.removeEventListener("submit", this._handleHiddenInputSubmit),
17268                    this.options.autoHideDialCode && (t && t.removeEventListener("submit", this._handleSubmitOrBlurEvent),
17269                    this.telInput.removeEventListener("blur", this._handleSubmitOrBlurEvent)),
17270                    this.telInput.removeEventListener("keyup", this._handleKeyupEvent),
17271                    this.telInput.removeEventListener("cut", this._handleClipboardEvent),
17272                    this.telInput.removeEventListener("paste", this._handleClipboardEvent),
17273                    this.telInput.removeAttribute("data-intl-tel-input-id");
17274                    var n = this.telInput.parentNode;
17275                    n.parentNode.insertBefore(this.telInput, n),
17276                    n.parentNode.removeChild(n),
17277                    delete window.intlTelInputGlobals.instances[this.id]
17278                }
17279            }, {
17280                key: "getExtension",
17281                value: function() {
17282                    return window.intlTelInputUtils ? intlTelInputUtils.getExtension(this._getFullNumber(), this.selectedCountryData.iso2) : ""
17283                }
17284            }, {
17285                key: "getNumber",
17286                value: function(t) {
17287                    if (window.intlTelInputUtils) {
17288                        var e = this.selectedCountryData.iso2;
17289                        return intlTelInputUtils.formatNumber(this._getFullNumber(), e, t)
17290                    }
17291                    return ""
17292                }
17293            }, {
17294                key: "getNumberType",
17295                value: function() {
17296                    return window.intlTelInputUtils ? intlTelInputUtils.getNumberType(this._getFullNumber(), this.selectedCountryData.iso2) : -99
17297                }
17298            }, {
17299                key: "getSelectedCountryData",
17300                value: function() {
17301                    return this.selectedCountryData
17302                }
17303            }, {
17304                key: "getValidationError",
17305                value: function() {
17306                    if (window.intlTelInputUtils) {
17307                        var t = this.selectedCountryData.iso2;
17308                        return intlTelInputUtils.getValidationError(this._getFullNumber(), t)
17309                    }
17310                    return -99
17311                }
17312            }, {
17313                key: "isValidNumber",
17314                value: function() {
17315                    var t = this._getFullNumber().trim()
17316                      , e = this.options.nationalMode ? this.selectedCountryData.iso2 : "";
17317                    return window.intlTelInputUtils ? intlTelInputUtils.isValidNumber(t, e) : null
17318                }
17319            }, {
17320                key: "setCountry",
17321                value: function(t) {
17322                    var e = t.toLowerCase();
17323                    this.selectedFlagInner.classList.contains("iti__".concat(e)) || (this._setFlag(e),
17324                    this._updateDialCode(this.selectedCountryData.dialCode, !1),
17325                    this._triggerCountryChange())
17326                }
17327            }, {
17328                key: "setNumber",
17329                value: function(t) {
17330                    var e = this._updateFlagFromNumber(t);
17331                    this._updateValFromNumber(t),
17332                    e && this._triggerCountryChange()
17333                }
17334            }, {
17335                key: "setPlaceholderNumberType",
17336                value: function(t) {
17337                    this.options.placeholderNumberType = t,
17338                    this._updatePlaceholder()
17339                }
17340            }]),
17341            n
17342        }();
17343        s.getCountryData = function() {
17344            return e
17345        }
17346        ;
17347        var p = function(t, e, n) {
17348            var r = document.createElement("script");
17349            r.onload = function() {
17350                d("handleUtils"),
17351                e && e()
17352            }
17353            ,
17354            r.onerror = function() {
17355                d("rejectUtilsScriptPromise"),
17356                n && n()
17357            }
17358            ,
17359            r.className = "iti-load-utils",
17360            r.async = !0,
17361            r.src = t,
17362            document.body.appendChild(r)
17363        };
17364        return s.loadUtils = function(t) {
17365            if (!window.intlTelInputUtils && !window.intlTelInputGlobals.startedLoadingUtilsScript) {
17366                if (window.intlTelInputGlobals.startedLoadingUtilsScript = !0,
17367                "undefined" != typeof Promise)
17368                    return new Promise(function(e, n) {
17369                        return p(t, e, n)
17370                    }
17371                    );
17372                p(t)
17373            }
17374            return null
17375        }
17376        ,
17377        s.defaults = l,
17378        s.version = "17.0.0",
17379        function(t, e) {
17380            var n = new f(t,e);
17381            return n._init(),
17382            t.setAttribute("data-intl-tel-input-id", n.id),
17383            window.intlTelInputGlobals.instances[n.id] = n,
17384            n
17385        }
17386    }()
17387}),
17388// (c) 2008-2010 jason frame [[email protected]]
17389// releated under the MIT license
17390function(t) {
17391    function e(t) {
17392        (t.attr("title") || "string" != typeof t.attr("original-title")) && t.attr("original-title", t.attr("title") || "").removeAttr("title")
17393    }
17394    function n(n, r) {
17395        this.$element = t(n),
17396        this.options = r,
17397        this.enabled = !0,
17398        e(this.$element)
17399    }
17400    n.prototype = {
17401        show: function() {
17402            var e = this.getTitle();
17403            if (e && this.enabled) {
17404                var n = this.tip();
17405                n.find(".tipsy-inner")[this.options.html ? "html" : "text"](e),
17406                n[0].className = "tipsy",
17407                n.remove().css({
17408                    top: 0,
17409                    left: 0,
17410                    visibility: "hidden",
17411                    display: "block"
17412                }).appendTo(document.body);
17413                var r, i = t.extend({}, this.$element.offset(), {
17414                    width: this.$element[0].offsetWidth,
17415                    height: this.$element[0].offsetHeight
17416                }), o = n[0].offsetWidth, a = n[0].offsetHeight, s = "function" == typeof this.options.gravity ? this.options.gravity.call(this.$element[0]) : this.options.gravity;
17417                switch (s.charAt(0)) {
17418                case "n":
17419                    r = {
17420                        top: i.top + i.height + this.options.offset,
17421                        left: i.left + i.width / 2 - o / 2
17422                    };
17423                    break;
17424                case "s":
17425                    r = {
17426                        top: i.top - a - this.options.offset,
17427                        left: i.left + i.width / 2 - o / 2
17428                    };
17429                    break;
17430                case "e":
17431                    r = {
17432                        top: i.top + i.height / 2 - a / 2,
17433                        left: i.left - o - this.options.offset
17434                    };
17435                    break;
17436                case "w":
17437                    r = {
17438                        top: i.top + i.height / 2 - a / 2,
17439                        left: i.left + i.width + this.options.offset
17440                    }
17441                }
17442                2 == s.length && ("w" == s.charAt(1) ? r.left = i.left + i.width / 2 - 15 : r.left = i.left + i.width / 2 - o + 15),
17443                n.css(r).addClass("tipsy-" + s),
17444                this.options.fade ? n.stop().css({
17445                    opacity: 0,
17446                    display: "block",
17447                    visibility: "visible"
17448                }).animate({
17449                    opacity: this.options.opacity
17450                }) : n.css({
17451                    visibility: "visible",
17452                    opacity: this.options.opacity
17453                })
17454            }
17455        },
17456        hide: function() {
17457            this.options.fade ? this.tip().stop().fadeOut(function() {
17458                t(this).remove()
17459            }) : this.tip().remove()
17460        },
17461        getTitle: function() {
17462            var t, n = this.$element, r = this.options;
17463            e(n);
17464            var t, r = this.options;
17465            return "string" == typeof r.title ? t = n.attr("title" == r.title ? "original-title" : r.title) : "function" == typeof r.title && (t = r.title.call(n[0])),
17466            (t = ("" + t).replace(/(^\s*|\s*$)/, "")) || r.fallback
17467        },
17468        tip: function() {
17469            return this.$tip || (this.$tip = t('<div class="tipsy"></div>').html('<div class="tipsy-arrow"></div><div class="tipsy-inner"/></div>')),
17470            this.$tip
17471        },
17472        validate: function() {
17473            this.$element[0].parentNode || (this.hide(),
17474            this.$element = null,
17475            this.options = null)
17476        },
17477        enable: function() {
17478            this.enabled = !0
17479        },
17480        disable: function() {
17481            this.enabled = !1
17482        },
17483        toggleEnabled: function() {
17484            this.enabled = !this.enabled
17485        }
17486    },
17487    t.fn.tipsy = function(e) {
17488        if (!0 === e)
17489            return this.data("tipsy");
17490        if ("string" == typeof e)
17491            return this.data("tipsy")[e]();
17492        e = t.extend({}, t.fn.tipsy.defaults, e);
17493        function r(r) {
17494            var i = t.data(r, "tipsy");
17495            return i || (i = new n(r,t.fn.tipsy.elementOptions(r, e)),
17496            t.data(r, "tipsy", i)),
17497            i
17498        }
17499        function i() {
17500            var t = r(this);
17501            t.hoverState = "in",
17502            0 == e.delayIn ? t.show() : setTimeout(function() {
17503                "in" == t.hoverState && t.show()
17504            }, e.delayIn)
17505        }
17506        function o() {
17507            var t = r(this);
17508            t.hoverState = "out",
17509            0 == e.delayOut ? t.hide() : setTimeout(function() {
17510                "out" == t.hoverState && t.hide()
17511            }, e.delayOut)
17512        }
17513        if (e.live || this.each(function() {
17514            r(this)
17515        }),
17516        "manual" != e.trigger) {
17517            var a = e.live ? "live" : "bind"
17518              , s = "hover" == e.trigger ? "mouseenter" : "focus"
17519              , u = "hover" == e.trigger ? "mouseleave" : "blur";
17520            this[a](s, i)[a](u, o)
17521        }
17522        return this
17523    }
17524    ,
17525    t.fn.tipsy.defaults = {
17526        delayIn: 0,
17527        delayOut: 0,
17528        fade: !1,
17529        fallback: "",
17530        gravity: "n",
17531        html: !1,
17532        live: !1,
17533        offset: 0,
17534        opacity: .8,
17535        title: "title",
17536        trigger: "hover"
17537    },
17538    t.fn.tipsy.elementOptions = function(e, n) {
17539        return t.metadata ? t.extend({}, n, t(e).metadata()) : n
17540    }
17541    ,
17542    t.fn.tipsy.autoNS = function() {
17543        return t(this).offset().top >
17543 t(document).scrollTop() + t(window).height() / 2 ? "s" : "n"
17544    }
17545    ,
17546    t.fn.tipsy.autoWE = function() {
17547        return t(this).offset().left > t(document).scrollLeft() + t(window).width() / 2 ? "e" : "w"
17548    }
17549}(jQuery),
17550/*! Respond.js v1.4.2: min/max-width media query polyfill * Copyright 2013 Scott Jehl
17551 * Licensed under https://github.com/scottjehl/Respond/blob/master/LICENSE-MIT
17552 *  */
17553function(t) {
17554    "use strict";
17555    t.matchMedia = t.matchMedia || function(t) {
17556        var e, n = t.documentElement, r = n.firstElementChild || n.firstChild, i = t.createElement("body"), o = t.createElement("div");
17557        return o.id = "mq-test-1",
17558        o.style.cssText = "position:absolute;top:-100em",
17559        i.style.background = "none",
17560        i.appendChild(o),
17561        function(t) {
17562            return o.innerHTML = '&shy;<style media="' + t + '"> #mq-test-1 { width: 42px; }</style>',
17563            n.insertBefore(i, r),
17564            e = 42 === o.offsetWidth,
17565            n.removeChild(i),
17566            {
17567                matches: e,
17568                media: t
17569            }
17570        }
17571    }(t.document)
17572}(this),
17573function(t) {
17574    "use strict";
17575    function e() {
17576        b(!0)
17577    }
17578    var n = {};
17579    t.respond = n,
17580    n.update = function() {}
17581    ;
17582    var r = []
17583      , i = function() {
17584        var e = !1;
17585        try {
17586            e = new t.XMLHttpRequest
17587        } catch (n) {
17588            e = new t.ActiveXObject("Microsoft.XMLHTTP")
17589        }
17590        return function() {
17591            return e
17592        }
17593    }()
17594      , o = function(t, e) {
17595        var n = i();
17596        n && (n.open("GET", t, !0),
17597        n.onreadystatechange = function() {
17598            4 !== n.readyState || 200 !== n.status && 304 !== n.status || e(n.responseText)
17599        }
17600        ,
17601        4 !== n.readyState && n.send(null))
17602    };
17603    if (n.ajax = o,
17604    n.queue = r,
17605    n.regex = {
17606        media: /@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+/gi,
17607        keyframes: /@(?:\-(?:o|moz|webkit)\-)?keyframes[^\{]+\{(?:[^\{\}]*\{[^\}\{]*\})+[^\}]*\}/gi,
17608        urls: /(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g,
17609        findStyles: /@media *([^\{]+)\{([\S\s]+?)$/,
17610        only: /(only\s+)?([a-zA-Z]+)\s?/,
17611        minw: /\([\s]*min\-width\s*:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/,
17612        maxw: /\([\s]*max\-width\s*:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/
17613    },
17614    n.mediaQueriesSupported = t.matchMedia && null !== t.matchMedia("only all") && t.matchMedia("only all").matches,
17615    !n.mediaQueriesSupported) {
17616        var a, s, u, l = t.document, c = l.documentElement, h = [], d = [], f = [], p = {}, g = l.getElementsByTagName("head")[0] || c, m = l.getElementsByTagName("base")[0], y = g.getElementsByTagName("link"), v = function() {
17617            var t, e = l.createElement("div"), n = l.body, r = c.style.fontSize, i = n && n.style.fontSize, o = !1;
17618            return e.style.cssText = "position:absolute;font-size:1em;width:1em",
17619            n || (n = o = l.createElement("body"),
17620            n.style.background = "none"),
17621            c.style.fontSize = "100%",
17622            n.style.fontSize = "100%",
17623            n.appendChild(e),
17624            o && c.insertBefore(n, c.firstChild),
17625            t = e.offsetWidth,
17626            o ? c.removeChild(n) : n.removeChild(e),
17627            c.style.fontSize = r,
17628            i && (n.style.fontSize = i),
17629            t = u = parseFloat(t)
17630        }, b = function(e) {
17631            var n = "clientWidth"
17632              , r = c[n]
17633              , i = "CSS1Compat" === l.compatMode && r || l.body[n] || r
17634              , o = {}
17635              , p = y[y.length - 1]
17636              , m = (new Date).getTime();
17637            if (e && a && 30 > m - a)
17638                return t.clearTimeout(s),
17639                void (s = t.setTimeout(b, 30));
17640            a = m;
17641            for (var w in h)
17642                if (h.hasOwnProperty(w)) {
17643                    var x = h[w]
17644                      , _ = x.minw
17645                      , C = x.maxw
17646                      , k = null === _
17647                      , j = null === C;
17648                    _ && (_ = parseFloat(_) * (_.indexOf("em") > -1 ? u || v() : 1)),
17649                    C && (C = parseFloat(C) * (C.indexOf("em") > -1 ? u || v() : 1)),
17650                    x.hasquery && (k && j || !(k || i >= _) || !(j || C >= i)) || (o[x.media] || (o[x.media] = []),
17651                    o[x.media].push(d[x.rules]))
17652                }
17653            for (var T in f)
17654                f.hasOwnProperty(T) && f[T] && f[T].parentNode === g && g.removeChild(f[T]);
17655            f.length = 0;
17656            for (var S in o)
17657                if (o.hasOwnProperty(S)) {
17658                    var E = l.createElement("style")
17659                      , A = o[S].join("\n");
17660                    E.type = "text/css",
17661                    E.media = S,
17662                    g.insertBefore(E, p.nextSibling),
17663                    E.styleSheet ? E.styleSheet.cssText = A : E.appendChild(l.createTextNode(A)),
17664                    f.push(E)
17665                }
17666        }, w = function(t, e, r) {
17667            var i = t.replace(n.regex.keyframes, "").match(n.regex.media)
17668              , o = i && i.length || 0;
17669            e = e.substring(0, e.lastIndexOf("/"));
17670            var a = function(t) {
17671                return t.replace(n.regex.urls, "$1" + e + "$2$3")
17672            }
17673              , s = !o && r;
17674            e.length && (e += "/"),
17675            s && (o = 1);
17676            for (var u = 0; o > u; u++) {
17677                var l, c, f, p;
17678                s ? (l = r,
17679                d.push(a(t))) : (l = i[u].match(n.regex.findStyles) && RegExp.$1,
17680                d.push(RegExp.$2 && a(RegExp.$2))),
17681                f = l.split(","),
17682                p = f.length;
17683                for (var g = 0; p > g; g++)
17684                    c = f[g],
17685                    h.push({
17686                        media: c.split("(")[0].match(n.regex.only) && RegExp.$2 || "all",
17687                        rules: d.length - 1,
17688                        hasquery: c.indexOf("(") > -1,
17689                        minw: c.match(n.regex.minw) && parseFloat(RegExp.$1) + (RegExp.$2 || ""),
17690                        maxw: c.match(n.regex.maxw) && parseFloat(RegExp.$1) + (RegExp.$2 || "")
17691                    })
17692            }
17693            b()
17694        }, x = function() {
17695            if (r.length) {
17696                var e = r.shift();
17697                o(e.href, function(n) {
17698                    w(n, e.href, e.media),
17699                    p[e.href] = !0,
17700                    t.setTimeout(function() {
17701                        x()
17702                    }, 0)
17703                })
17704            }
17705        }, _ = function() {
17706            for (var e = 0; e < y.length; e++) {
17707                var n = y[e]
17708                  , i = n.href
17709                  , o = n.media
17710                  , a = n.rel && "stylesheet" === n.rel.toLowerCase();
17711                i && a && !p[i] && (n.styleSheet && n.styleSheet.rawCssText ? (w(n.styleSheet.rawCssText, i, o),
17712                p[i] = !0) : (!/^([a-zA-Z:]*\/\/)/.test(i) && !m || i.replace(RegExp.$1, "").split("/")[0] === t.location.host) && ("//" === i.substring(0, 2) && (i = t.location.protocol + i),
17713                r.push({
17714                    href: i,
17715                    media: o
17716                })))
17717            }
17718            x()
17719        };
17720        _(),
17721        n.update = _,
17722        n.getEmValue = v,
17723        t.addEventListener ? t.addEventListener("resize", e, !1) : t.attachEvent && t.attachEvent("onresize", e)
17724    }
17725}(this),
17726/*!
17727 * typeahead.js 0.11.1
17728 * https://github.com/twitter/typeahead.js
17729 * Copyright 2013-2015 Twitter, Inc. and other contributors; Licensed MIT
17730 */
17731function(t, e) {
17732    "function" == typeof define && define.amd ? define("bloodhound", ["jquery"], function(n) {
17733        return t.Bloodhound = e(n)
17734    }) : "object" == typeof exports ? module.exports = e(require("jquery")) : t.Bloodhound = e(jQuery)
17735}(this, function(t) {
17736    var e = function() {
17737        "use strict";
17738        return {
17739            isMsie: function() {
17740                return !!/(msie|trident)/i.test(navigator.userAgent) && navigator.userAgent.match(/(msie |rv:)(\d+(.\d+)?)/i)[2]
17741            },
17742            isBlankString: function(t) {
17743                return !t || /^\s*$/.test(t)
17744            },
17745            escapeRegExChars: function(t) {
17746                return t.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&")
17747            },
17748            isString: function(t) {
17749                return "string" == typeof t
17750            },
17751            isNumber: function(t) {
17752                return "number" == typeof t
17753            },
17754            isArray: t.isArray,
17755            isFunction: t.isFunction,
17756            isObject: t.isPlainObject,
17757            isUndefined: function(t) {
17758                return void 0 === t
17759            },
17760            isElement: function(t) {
17761                return !(!t || 1 !== t.nodeType)
17762            },
17763            isJQuery: function(e) {
17764                return e instanceof t
17765            },
17766            toStr: function(t) {
17767                return e.isUndefined(t) || null === t ? "" : t + ""
17768            },
17769            bind: t.proxy,
17770            each: function(e, n) {
17771                t.each(e, r);
17772                function r(t, e) {
17773                    return n(e, t)
17774                }
17775            },
17776            map: t.map,
17777            filter: t.grep,
17778            every: function(e, n) {
17779                var r = !0;
17780                return e ? (t.each(e, function(t, i) {
17781                    if (!(r = n.call(null, i, t, e)))
17782                        return !1
17783                }),
17784                !!r) : r
17785            },
17786            some: function(e, n) {
17787                var r = !1;
17788                return e ? (t.each(e, function(t, i) {
17789                    if (r = n.call(null, i, t, e))
17790                        return !1
17791                }),
17792                !!r) : r
17793            },
17794            mixin: t.extend,
17795            identity: function(t) {
17796                return t
17797            },
17798            clone: function(e) {
17799                return t.extend(!0, {}, e)
17800            },
17801            getIdGenerator: function() {
17802                var t = 0;
17803                return function() {
17804                    return t++
17805                }
17806            },
17807            templatify: function(e) {
17808                return t.isFunction(e) ? e : n;
17809                function n() {
17810                    return String(e)
17811                }
17812            },
17813            defer: function(t) {
17814                setTimeout(t, 0)
17815            },
17816            debounce: function(t, e, n) {
17817                var r, i;
17818                return function() {
17819                    var o, a, s = this, u = arguments;
17820                    return o = function() {
17821                        r = null,
17822                        n || (i = t.apply(s, u))
17823                    }
17824                    ,
17825                    a = n && !r,
17826                    clearTimeout(r),
17827                    r = setTimeout(o, e),
17828                    a && (i = t.apply(s, u)),
17829                    i
17830                }
17831            },
17832            throttle: function(t, e) {
17833                var n, r, i, o, a, s;
17834                return a = 0,
17835                s = function() {
17836                    a = new Date,
17837                    i = null,
17838                    o = t.apply(n, r)
17839                }
17840                ,
17841                function() {
17842                    var u = new Date
17843                      , l = e - (u - a);
17844                    return n = this,
17845                    r = arguments,
17846                    l <= 0 ? (clearTimeout(i),
17847                    i = null,
17848                    a = u,
17849                    o = t.apply(n, r)) : i || (i = setTimeout(s, l)),
17850                    o
17851                }
17852            },
vendor: 5,789 bytes, lines 17853-18037
17853            stringify: function(t) {
17854                return e.isString(t) ? t : JSON.stringify(t)
17855            },
17856            noop: function() {}
17857        }
17858    }()
17859      , n = "0.11.1"
17860      , r = function() {
17861        "use strict";
17862        return {
17863            nonword: n,
17864            whitespace: t,
17865            obj: {
17866                nonword: r(n),
17867                whitespace: r(t)
17868            }
17869        };
17870        function t(t) {
17871            return t = e.toStr(t),
17872            t ? t.split(/\s+/) : []
17873        }
17874        function n(t) {
17875            return t = e.toStr(t),
17876            t ? t.split(/\W+/) : []
17877        }
17878        function r(t) {
17879            return function(n) {
17880                return n = e.isArray(n) ? n : [].slice.call(arguments, 0),
17881                function(r) {
17882                    var i = [];
17883                    return e.each(n, function(n) {
17884                        i = i.concat(t(e.toStr(r[n])))
17885                    }),
17886                    i
17887                }
17888            }
17889        }
17890    }()
17891      , i = function() {
17892        "use strict";
17893        function n(n) {
17894            this.maxSize = e.isNumber(n) ? n : 100,
17895            this.reset(),
17896            this.maxSize <= 0 && (this.set = this.get = t.noop)
17897        }
17898        e.mixin(n.prototype, {
17899            set: function(t, e) {
17900                var n, r = this.list.tail;
17901                this.size >= this.maxSize && (this.list.remove(r),
17902                delete this.hash[r.key],
17903                this.size--),
17904                (n = this.hash[t]) ? (n.val = e,
17905                this.list.moveToFront(n)) : (n = new i(t,e),
17906                this.list.add(n),
17907                this.hash[t] = n,
17908                this.size++)
17909            },
17910            get: function(t) {
17911                var e = this.hash[t];
17912                if (e)
17913                    return this.list.moveToFront(e),
17914                    e.val
17915            },
17916            reset: function() {
17917                this.size = 0,
17918                this.hash = {},
17919                this.list = new r
17920            }
17921        });
17922        function r() {
17923            this.head = this.tail = null
17924        }
17925        e.mixin(r.prototype, {
17926            add: function(t) {
17927                this.head && (t.next = this.head,
17928                this.head.prev = t),
17929                this.head = t,
17930                this.tail = this.tail || t
17931            },
17932            remove: function(t) {
17933                t.prev ? t.prev.next = t.next : this.head = t.next,
17934                t.next ? t.next.prev = t.prev : this.tail = t.prev
17935            },
17936            moveToFront: function(t) {
17937                this.remove(t),
17938                this.add(t)
17939            }
17940        });
17941        function i(t, e) {
17942            this.key = t,
17943            this.val = e,
17944            this.prev = this.next = null
17945        }
17946        return n
17947    }()
17948      , o = function() {
17949        "use strict";
17950        var n;
17951        try {
17952            n = window.localStorage,
17953            n.setItem("~~~", "!"),
17954            n.removeItem("~~~")
17955        } catch (t) {
17956            n = null
17957        }
17958        function r(t, r) {
17959            this.prefix = ["__", t, "__"].join(""),
17960            this.ttlKey = "__ttl__",
17961            this.keyMatcher = new RegExp("^" + e.escapeRegExChars(this.prefix)),
17962            this.ls = r || n,
17963            !this.ls && this._noop()
17964        }
17965        return e.mixin(r.prototype, {
17966            _prefix: function(t) {
17967                return this.prefix + t
17968            },
17969            _ttlKey: function(t) {
17970                return this._prefix(t) + this.ttlKey
17971            },
17972            _noop: function() {
17973                this.get = this.set = this.remove = this.clear = this.isExpired = e.noop
17974            },
17975            _safeSet: function(t, e) {
17976                try {
17977                    this.ls.setItem(t, e)
17978                } catch (t) {
17979                    "QuotaExceededError" === t.name && (this.clear(),
17980                    this._noop())
17981                }
17982            },
17983            get: function(t) {
17984                return this.isExpired(t) && this.remove(t),
17985                a(this.ls.getItem(this._prefix(t)))
17986            },
17987            set: function(t, n, r) {
17988                return e.isNumber(r) ? this._safeSet(this._ttlKey(t), o(i() + r)) : this.ls.removeItem(this._ttlKey(t)),
17989                this._safeSet(this._prefix(t), o(n))
17990            },
17991            remove: function(t) {
17992                return this.ls.removeItem(this._ttlKey(t)),
17993                this.ls.removeItem(this._prefix(t)),
17994                this
17995            },
17996            clear: function() {
17997                var t, e = s(this.keyMatcher);
17998                for (t = e.length; t--; )
17999                    this.remove(e[t]);
18000                return this
18001            },
18002            isExpired: function(t) {
18003                var n = a(this.ls.getItem(this._ttlKey(t)));
18004                return !!(e.isNumber(n) && i() > n)
18005            }
18006        }),
18007        r;
18008        function i() {
18009            return (new Date).getTime()
18010        }
18011        function o(t) {
18012            return JSON.stringify(e.isUndefined(t) ? null : t)
18013        }
18014        function a(e) {
18015            return t.parseJSON(e)
18016        }
18017        function s(t) {
18018            var e, r, i = [], o = n.length;
18019            for (e = 0; e < o; e++)
18020                (r = n.key(e)).match(t) && i.push(r.replace(t, ""));
18021            return i
18022        }
18023    }()
18024      , a = function() {
18025        "use strict";
18026        var n = 0
18027          , r = {}
18028          , o = 6
18029          , a = new i(10);
18030        function s(t) {
18031            t = t || {},
18032            this.cancelled = !1,
18033            this.lastReq = null,
18034            this._send = t.transport,
18035            this._get = t.limiter ? t.limiter(this._get) : this._get,
18036            this._cache = !1 === t.cache ? new i(0) : a
18037        }
18038        return s.setMaxPendingRequests = function(t) {
18039            o = t
18040        }
18041        ,
18042        s.resetCache = function() {
18043            a.reset()
18044        }
18045        ,
18046        e.mixin(s.prototype, {
18047            _fingerprint: function(e) {
18048                return e = e || {},
18049                e.url + e.type + t.param(e.data || {})
18050            },
18051            _get: function(t, e) {
18052                var i, a, s = this;
18053                i = this._fingerprint(t);
18054                function u(t) {
18055                    e(null, t),
18056                    s._cache.set(i, t)
18057                }
18058                function l() {
18059                    e(!0)
18060                }
18061                function c() {
18062                    n--,
18063                    delete r[i],
18064                    s.onDeckRequestArgs && (s._get.apply(s, s.onDeckRequestArgs),
18065                    s.onDeckRequestArgs = null)
18066                }
18067                this.cancelled || i !== this.lastReq || ((a = r[i]) ? a.done(u).fail(l) : n < o ? (n++,
18068                r[i] = this._send(t).done(u).fail(l).always(c)) : this.onDeckRequestArgs = [].slice.call(arguments, 0))
18069            },
18070            get: function(n, r) {
18071                var i, o;
18072                r = r || t.noop,
18073                n = e.isString(n) ? {
18074                    url: n
18075                } : n || {},
18076                o = this._fingerprint(n),
18077                this.cancelled = !1,
18078                this.lastReq = o,
18079                (i = this._cache.get(o)) ? r(null, i) : this._get(n, r)
18080            },
18081            cancel: function() {
18082                this.cancelled = !0
18083            }
18084        }),
18085        s
18086    }()
18087      , s = window.SearchIndex = function() {
18088        "use strict";
18089        var n = "c"
18090          , r = "i";
18091        function i(n) {
18092            n = n || {},
18093            n.datumTokenizer && n.queryTokenizer || t.error("datumTokenizer and queryTokenizer are both required"),
18094            this.identify = n.identify || e.stringify,
18095            this.datumTokenizer = n.datumTokenizer,
18096            this.queryTokenizer = n.queryTokenizer,
18097            this.reset()
18098        }
18099        return e.mixin(i.prototype, {
18100            bootstrap: function(t) {
18101                this.datums = t.datums,
18102                this.trie = t.trie
18103            },
18104            add: function(t) {
18105                var i = this;
18106                t = e.isArray(t) ? t : [t],
18107                e.each(t, function(t) {
18108                    var s, u;
18109                    i.datums[s = i.identify(t)] = t,
18110                    u = o(i.datumTokenizer(t)),
18111                    e.each(u, function(t) {
18112                        var e, o, u;
18113                        for (e = i.trie,
18114                        o = t.split(""); u = o.shift(); )
18115                            e = e[n][u] || (e[n][u] = a()),
18116                            e[r].push(s)
18117                    })
18118                })
18119            },
18120            get: function(t) {
18121                var n = this;
18122                return e.map(t, function(t) {
18123                    return n.datums[t]
18124                })
18125            },
18126            search: function(t) {
18127                var i, a, l = this;
18128                return i = o(this.queryTokenizer(t)),
18129                e.each(i, function(t) {
18130                    var e, i, o, s;
18131                    if (a && 0 === a.length)
18132                        return !1;
18133                    for (e = l.trie,
18134                    i = t.split(""); e && (o = i.shift()); )
18135                        e = e[n][o];
18136                    if (!e || 0 !== i.length)
18137                        return a = [],
18138                        !1;
18139                    s = e[r].slice(0),
18140                    a = a ? u(a, s) : s
18141                }),
18142                a ? e.map(s(a), function(t) {
18143                    return l.datums[t]
18144                }) : []
18145            },
18146            all: function() {
18147                var t = [];
18148                for (var e in this.datums)
18149                    t.push(this.datums[e]);
18150                return t
18151            },
18152            reset: function() {
18153                this.datums = {},
18154                this.trie = a()
18155            },
18156            serialize: function() {
18157                return {
18158                    datums: this.datums,
18159                    trie: this.trie
18160                }
18161            }
18162        }),
18163        i;
18164        function o(t) {
18165            return t = e.filter(t, function(t) {
18166                return !!t
18167            }),
18168            t = e.map(t, function(t) {
18169                return t.toLowerCase()
18170            })
18171        }
18172        function a() {
18173            var t = {};
18174            return t[r] = [],
18175            t[n] = {},
18176            t
18177        }
18178        function s(t) {
18179            for (var e = {}, n = [], r = 0, i = t.length; r < i; r++)
18180                e[t[r]] || (e[t[r]] = !0,
18181                n.push(t[r]));
18182            return n
18183        }
18184        function u(t, e) {
18185            var n = 0
18186              , r = 0
18187              , i = [];
18188            t = t.sort(),
18189            e = e.sort();
18190            for (var o = t.length, a = e.length; n < o && r < a; )
18191                t[n] < e[r] ? n++ : t[n] >
vendor: 5,744 bytes, lines 18191-18367
18191 e[r] ? r++ : (i.push(t[n]),
18192                n++,
18193                r++);
18194            return i
18195        }
18196    }()
18197      , u = function() {
18198        "use strict";
18199        var t;
18200        t = {
18201            data: "data",
18202            protocol: "protocol",
18203            thumbprint: "thumbprint"
18204        };
18205        function n(t) {
18206            this.url = t.url,
18207            this.ttl = t.ttl,
18208            this.cache = t.cache,
18209            this.prepare = t.prepare,
18210            this.transform = t.transform,
18211            this.transport = t.transport,
18212            this.thumbprint = t.thumbprint,
18213            this.storage = new o(t.cacheKey)
18214        }
18215        return e.mixin(n.prototype, {
18216            _settings: function() {
18217                return {
18218                    url: this.url,
18219                    type: "GET",
18220                    dataType: "json"
18221                }
18222            },
18223            store: function(e) {
18224                this.cache && (this.storage.set(t.data, e, this.ttl),
18225                this.storage.set(t.protocol, location.protocol, this.ttl),
18226                this.storage.set(t.thumbprint, this.thumbprint, this.ttl))
18227            },
18228            fromCache: function() {
18229                var e, n = {};
18230                return this.cache ? (n.data = this.storage.get(t.data),
18231                n.protocol = this.storage.get(t.protocol),
18232                n.thumbprint = this.storage.get(t.thumbprint),
18233                e = n.thumbprint !== this.thumbprint || n.protocol !== location.protocol,
18234                n.data && !e ? n.data : null) : null
18235            },
18236            fromNetwork: function(t) {
18237                var e, n = this;
18238                function r() {
18239                    t(!0)
18240                }
18241                function i(e) {
18242                    t(null, n.transform(e))
18243                }
18244                t && (e = this.prepare(this._settings()),
18245                this.transport(e).fail(r).done(i))
18246            },
18247            clear: function() {
18248                return this.storage.clear(),
18249                this
18250            }
18251        }),
18252        n
18253    }()
18254      , l = function() {
18255        "use strict";
18256        function t(t) {
18257            this.url = t.url,
18258            this.prepare = t.prepare,
18259            this.transform = t.transform,
18260            this.transport = new a({
18261                cache: t.cache,
18262                limiter: t.limiter,
18263                transport: t.transport
18264            })
18265        }
18266        return e.mixin(t.prototype, {
18267            _settings: function() {
18268                return {
18269                    url: this.url,
18270                    type: "GET",
18271                    dataType: "json"
18272                }
18273            },
18274            get: function(t, e) {
18275                var n, r = this;
18276                function i(t, n) {
18277                    e(t ? [] : r.transform(n))
18278                }
18279                if (e)
18280                    return t = t || "",
18281                    n = this.prepare(t, this._settings()),
18282                    this.transport.get(n, i)
18283            },
18284            cancelLastRequest: function() {
18285                this.transport.cancel()
18286            }
18287        }),
18288        t
18289    }()
18290      , c = function() {
18291        "use strict";
18292        return function(n) {
18293            var o, a;
18294            return o = {
18295                initialize: !0,
18296                identify: e.stringify,
18297                datumTokenizer: null,
18298                queryTokenizer: null,
18299                sufficient: 5,
18300                sorter: null,
18301                local: [],
18302                prefetch: null,
18303                remote: null
18304            },
18305            n = e.mixin(o, n || {}),
18306            !n.datumTokenizer && t.error("datumTokenizer is required"),
18307            !n.queryTokenizer && t.error("queryTokenizer is required"),
18308            a = n.sorter,
18309            n.sorter = a ? function(t) {
18310                return t.sort(a)
18311            }
18312            : e.identity,
18313            n.local = e.isFunction(n.local) ? n.local() : n.local,
18314            n.prefetch = r(n.prefetch),
18315            n.remote = i(n.remote),
18316            n
18317        }
18318        ;
18319        function r(r) {
18320            var i;
18321            return r ? (i = {
18322                url: null,
18323                ttl: 864e5,
18324                cache: !0,
18325                cacheKey: null,
18326                thumbprint: "",
18327                prepare: e.identity,
18328                transform: e.identity,
18329                transport: null
18330            },
18331            r = e.isString(r) ? {
18332                url: r
18333            } : r,
18334            r = e.mixin(i, r),
18335            !r.url && t.error("prefetch requires url to be set"),
18336            r.transform = r.filter || r.transform,
18337            r.cacheKey = r.cacheKey || r.url,
18338            r.thumbprint = n + r.thumbprint,
18339            r.transport = r.transport ? s(r.transport) : t.ajax,
18340            r) : null
18341        }
18342        function i(n) {
18343            var r;
18344            if (n)
18345                return r = {
18346                    url: null,
18347                    cache: !0,
18348                    prepare: null,
18349                    replace: null,
18350                    wildcard: null,
18351                    limiter: null,
18352                    rateLimitBy: "debounce",
18353                    rateLimitWait: 300,
18354                    transform: e.identity,
18355                    transport: null
18356                },
18357                n = e.isString(n) ? {
18358                    url: n
18359                } : n,
18360                n = e.mixin(r, n),
18361                !n.url && t.error("remote requires url to be set"),
18362                n.transform = n.filter || n.transform,
18363                n.prepare = o(n),
18364                n.limiter = a(n),
18365                n.transport = n.transport ? s(n.transport) : t.ajax,
18366                delete n.replace,
18367                delete n.wildcard,
18368                delete n.rateLimitBy,
18369                delete n.rateLimitWait,
18370                n
18371        }
18372        function o(t) {
18373            var e, n, r;
18374            return e = t.prepare,
18375            n = t.replace,
18376            r = t.wildcard,
18377            e || (e = n ? i : t.wildcard ? o : a);
18378            function i(t, e) {
18379                return e.url = n(e.url, t),
18380                e
18381            }
18382            function o(t, e) {
18383                return e.url = e.url.replace(r, encodeURIComponent(t)),
18384                e
18385            }
18386            function a(t, e) {
18387                return e
18388            }
18389        }
18390        function a(t) {
18391            var n, r, i;
18392            return n = t.limiter,
18393            r = t.rateLimitBy,
18394            i = t.rateLimitWait,
18395            n || (n = /^throttle$/i.test(r) ? function(t) {
18396                return function n(r) {
18397                    return e.throttle(r, t)
18398                }
18399            }(i) : function(t) {
18400                return function n(r) {
18401                    return e.debounce(r, t)
18402                }
18403            }(i)),
18404            n
18405        }
18406        function s(n) {
18407            return function(r) {
18408                var i = t.Deferred();
18409                return n(r, o, a),
18410                i;
18411                function o(t) {
18412                    e.defer(function() {
18413                        i.resolve(t)
18414                    })
18415                }
18416                function a(t) {
18417                    e.defer(function() {
18418                        i.reject(t)
18419                    })
18420                }
18421            }
18422        }
18423    }();
18424    return function() {
18425        "use strict";
18426        var n;
18427        n = window && window.Bloodhound;
18428        function i(t) {
18429            t = c(t),
18430            this.sorter = t.sorter,
18431            this.identify = t.identify,
18432            this.sufficient = t.sufficient,
18433            this.local = t.local,
18434            this.remote = t.remote ? new l(t.remote) : null,
18435            this.prefetch = t.prefetch ? new u(t.prefetch) : null,
18436            this.index = new s({
18437                identify: this.identify,
18438                datumTokenizer: t.datumTokenizer,
18439                queryTokenizer: t.queryTokenizer
18440            }),
18441            !1 !== t.initialize && this.initialize()
18442        }
18443        return i.noConflict = function() {
18444            return window && (window.Bloodhound = n),
18445            i
18446        }
18447        ,
18448        i.tokenizers = r,
18449        e.mixin(i.prototype, {
18450            __ttAdapter: function() {
18451                var t = this;
18452                return this.remote ? e : n;
18453                function e(e, n, r) {
18454                    return t.search(e, n, r)
18455                }
18456                function n(e, n) {
18457                    return t.search(e, n)
18458                }
18459            },
18460            _loadPrefetch: function() {
18461                var e, n, r = this;
18462                return e = t.Deferred(),
18463                this.prefetch ? (n = this.prefetch.fromCache()) ? (this.index.bootstrap(n),
18464                e.resolve()) : this.prefetch.fromNetwork(i) : e.resolve(),
18465                e.promise();
18466                function i(t, n) {
18467                    if (t)
18468                        return e.reject();
18469                    r.add(n),
18470                    r.prefetch.store(r.index.serialize()),
18471                    e.resolve()
18472                }
18473            },
18474            _initialize: function() {
18475                var t = this;
18476                return this.clear(),
18477                (this.initPromise = this._loadPrefetch()).done(e),
18478                this.initPromise;
18479                function e() {
18480                    t.add(t.local)
18481                }
18482            },
18483            initialize: function(t) {
18484                return !this.initPromise || t ? this._initialize() : this.initPromise
18485            },
18486            add: function(t) {
18487                return this.index.add(t),
18488                this
18489            },
18490            get: function(t) {
18491                return t = e.isArray(t) ? t : [].slice.call(arguments),
18492                this.index.get(t)
18493            },
18494            search: function(t, n, r) {
18495                var i, o = this;
18496                return i = this.sorter(this.index.search(t)),
18497                n(this.remote ? i.slice() : i),
18498                this.remote && i.length < this.sufficient ? this.remote.get(t, a) : this.remote && this.remote.cancelLastRequest(),
18499                this;
18500                function a(t) {
18501                    var n = [];
18502                    e.each(t, function(t) {
18503                        !e.some(i, function(e) {
18504                            return o.identify(t) === o.identify(e)
18505                        }) && n.push(t)
18506                    }),
18507                    r && r(n)
18508                }
18509            },
18510            all: function() {
18511                return this.index.all()
18512            },
18513            clear: function() {
18514                return this.index.reset(),
18515                this
18516            },
18517            clearPrefetchCache: function() {
18518                return this.prefetch && this.prefetch.clear(),
18519                this
18520            },
18521            clearRemoteCache: function() {
18522                return a.resetCache(),
18523                this
18524            },
vendor: 4,181 bytes, lines 18525-18653
18525            ttAdapter: function() {
18526                return this.__ttAdapter()
18527            }
18528        }),
18529        i
18530    }()
18531}),
18532function(t, e) {
18533    "function" == typeof define && define.amd ? define("typeahead.js", ["jquery"], function(t) {
18534        return e(t)
18535    }) : "object" == typeof exports ? module.exports = e(require("jquery")) : e(jQuery)
18536}(0, function(t) {
18537    var e = function() {
18538        "use strict";
18539        return {
18540            isMsie: function() {
18541                return !!/(msie|trident)/i.test(navigator.userAgent) && navigator.userAgent.match(/(msie |rv:)(\d+(.\d+)?)/i)[2]
18542            },
18543            isBlankString: function(t) {
18544                return !t || /^\s*$/.test(t)
18545            },
18546            escapeRegExChars: function(t) {
18547                return t.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&")
18548            },
18549            isString: function(t) {
18550                return "string" == typeof t
18551            },
18552            isNumber: function(t) {
18553                return "number" == typeof t
18554            },
18555            isArray: t.isArray,
18556            isFunction: t.isFunction,
18557            isObject: t.isPlainObject,
18558            isUndefined: function(t) {
18559                return void 0 === t
18560            },
18561            isElement: function(t) {
18562                return !(!t || 1 !== t.nodeType)
18563            },
18564            isJQuery: function(e) {
18565                return e instanceof t
18566            },
18567            toStr: function(t) {
18568                return e.isUndefined(t) || null === t ? "" : t + ""
18569            },
18570            bind: t.proxy,
18571            each: function(e, n) {
18572                t.each(e, r);
18573                function r(t, e) {
18574                    return n(e, t)
18575                }
18576            },
18577            map: t.map,
18578            filter: t.grep,
18579            every: function(e, n) {
18580                var r = !0;
18581                return e ? (t.each(e, function(t, i) {
18582                    if (!(r = n.call(null, i, t, e)))
18583                        return !1
18584                }),
18585                !!r) : r
18586            },
18587            some: function(e, n) {
18588                var r = !1;
18589                return e ? (t.each(e, function(t, i) {
18590                    if (r = n.call(null, i, t, e))
18591                        return !1
18592                }),
18593                !!r) : r
18594            },
18595            mixin: t.extend,
18596            identity: function(t) {
18597                return t
18598            },
18599            clone: function(e) {
18600                return t.extend(!0, {}, e)
18601            },
18602            getIdGenerator: function() {
18603                var t = 0;
18604                return function() {
18605                    return t++
18606                }
18607            },
18608            templatify: function(e) {
18609                return t.isFunction(e) ? e : n;
18610                function n() {
18611                    return String(e)
18612                }
18613            },
18614            defer: function(t) {
18615                setTimeout(t, 0)
18616            },
18617            debounce: function(t, e, n) {
18618                var r, i;
18619                return function() {
18620                    var o, a, s = this, u = arguments;
18621                    return o = function() {
18622                        r = null,
18623                        n || (i = t.apply(s, u))
18624                    }
18625                    ,
18626                    a = n && !r,
18627                    clearTimeout(r),
18628                    r = setTimeout(o, e),
18629                    a && (i = t.apply(s, u)),
18630                    i
18631                }
18632            },
18633            throttle: function(t, e) {
18634                var n, r, i, o, a, s;
18635                return a = 0,
18636                s = function() {
18637                    a = new Date,
18638                    i = null,
18639                    o = t.apply(n, r)
18640                }
18641                ,
18642                function() {
18643                    var u = new Date
18644                      , l = e - (u - a);
18645                    return n = this,
18646                    r = arguments,
18647                    l <= 0 ? (clearTimeout(i),
18648                    i = null,
18649                    a = u,
18650                    o = t.apply(n, r)) : i || (i = setTimeout(s, l)),
18651                    o
18652                }
18653            },
vendor: 17,182 bytes, lines 18654-19144
18654            stringify: function(t) {
18655                return e.isString(t) ? t : JSON.stringify(t)
18656            },
18657            noop: function() {}
18658        }
18659    }()
18660      , n = function() {
18661        "use strict";
18662        var t = {
18663            wrapper: "twitter-typeahead",
18664            input: "tt-input",
18665            hint: "tt-hint",
18666            menu: "tt-menu",
18667            dataset: "tt-dataset",
18668            suggestion: "tt-suggestion",
18669            selectable: "tt-selectable",
18670            empty: "tt-empty",
18671            open: "tt-open",
18672            cursor: "tt-cursor",
18673            highlight: "tt-highlight"
18674        };
18675        return n;
18676        function n(n) {
18677            var a, s;
18678            return s = e.mixin({}, t, n),
18679            a = {
18680                css: o(),
18681                classes: s,
18682                html: r(s),
18683                selectors: i(s)
18684            },
18685            {
18686                css: a.css,
18687                html: a.html,
18688                classes: a.classes,
18689                selectors: a.selectors,
18690                mixin: function(t) {
18691                    e.mixin(t, a)
18692                }
18693            }
18694        }
18695        function r(t) {
18696            return {
18697                wrapper: '<span class="' + t.wrapper + '"></span>',
18698                menu: '<div class="' + t.menu + '"></div>'
18699            }
18700        }
18701        function i(t) {
18702            var n = {};
18703            return e.each(t, function(t, e) {
18704                n[e] = "." + t
18705            }),
18706            n
18707        }
18708        function o() {
18709            var t = {
18710                wrapper: {
18711                    position: "relative",
18712                    display: "inline-block"
18713                },
18714                hint: {
18715                    position: "absolute",
18716                    top: "0",
18717                    left: "0",
18718                    borderColor: "transparent",
18719                    boxShadow: "none",
18720                    opacity: "1"
18721                },
18722                input: {
18723                    position: "relative",
18724                    verticalAlign: "top",
18725                    backgroundColor: "transparent"
18726                },
18727                inputWithNoHint: {
18728                    position: "relative",
18729                    verticalAlign: "top"
18730                },
18731                menu: {
18732                    position: "absolute",
18733                    top: "100%",
18734                    left: "0",
18735                    zIndex: "100",
18736                    display: "none"
18737                },
18738                ltr: {
18739                    left: "0",
18740                    right: "auto"
18741                },
18742                rtl: {
18743                    left: "auto",
18744                    right: " 0"
18745                }
18746            };
18747            return e.isMsie() && e.mixin(t.input, {
18748                backgroundImage: "url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)"
18749            }),
18750            t
18751        }
18752    }()
18753      , r = function() {
18754        "use strict";
18755        var n, r;
18756        n = "typeahead:",
18757        r = {
18758            render: "rendered",
18759            cursorchange: "cursorchanged",
18760            select: "selected",
18761            autocomplete: "autocompleted"
18762        };
18763        function i(e) {
18764            e && e.el || t.error("EventBus initialized without el"),
18765            this.$el = t(e.el)
18766        }
18767        return e.mixin(i.prototype, {
18768            _trigger: function(e, r) {
18769                var i;
18770                return i = t.Event(n + e),
18771                (r = r || []).unshift(i),
18772                this.$el.trigger.apply(this.$el, r),
18773                i
18774            },
18775            before: function(t) {
18776                var e, n;
18777                return e = [].slice.call(arguments, 1),
18778                n = this._trigger("before" + t, e),
18779                n.isDefaultPrevented()
18780            },
18781            trigger: function(t) {
18782                var e;
18783                this._trigger(t, [].slice.call(arguments, 1)),
18784                (e = r[t]) && this._trigger(e, [].slice.call(arguments, 1))
18785            }
18786        }),
18787        i
18788    }()
18789      , i = function() {
18790        "use strict";
18791        var t = /\s+/
18792          , e = function() {
18793            var t;
18794            if (window.setImmediate) {
18795                t = function t(e) {
18796                    setImmediate(function() {
18797                        e()
18798                    })
18799                }
18800            } else {
18801                t = function t(e) {
18802                    setTimeout(function() {
18803                        e()
18804                    }, 0)
18805                }
18806            }
18807            return t
18808        }();
18809        return {
18810            onSync: i,
18811            onAsync: r,
18812            off: o,
18813            trigger: a
18814        };
18815        function n(e, n, r, i) {
18816            var o;
18817            if (!r)
18818                return this;
18819            for (n = n.split(t),
18820            r = i ? u(r, i) : r,
18821            this._callbacks = this._callbacks || {}; o = n.shift(); )
18822                this._callbacks[o] = this._callbacks[o] || {
18823                    sync: [],
18824                    async: []
18825                },
18826                this._callbacks[o][e].push(r);
18827            return this
18828        }
18829        function r(t, e, r) {
18830            return n.call(this, "async", t, e, r)
18831        }
18832        function i(t, e, r) {
18833            return n.call(this, "sync", t, e, r)
18834        }
18835        function o(e) {
18836            var n;
18837            if (!this._callbacks)
18838                return this;
18839            for (e = e.split(t); n = e.shift(); )
18840                delete this._callbacks[n];
18841            return this
18842        }
18843        function a(n) {
18844            var r, i, o, a, u;
18845            if (!this._callbacks)
18846                return this;
18847            for (n = n.split(t),
18848            o = [].slice.call(arguments, 1); (r = n.shift()) && (i = this._callbacks[r]); )
18849                a = s(i.sync, this, [r].concat(o)),
18850                u = s(i.async, this, [r].concat(o)),
18851                a() && e(u);
18852            return this
18853        }
18854        function s(t, e, n) {
18855            return r;
18856            function r() {
18857                for (var r, i = 0, o = t.length; !r && i < o; i += 1)
18858                    r = !1 === t[i].apply(e, n);
18859                return !r
18860            }
18861        }
18862        function u(t, e) {
18863            return t.bind ? t.bind(e) : function() {
18864                t.apply(e, [].slice.call(arguments, 0))
18865            }
18866        }
18867    }()
18868      , o = function(t) {
18869        "use strict";
18870        var n = {
18871            node: null,
18872            pattern: null,
18873            tagName: "strong",
18874            className: null,
18875            wordsOnly: !1,
18876            caseSensitive: !1
18877        };
18878        return function(i) {
18879            var o;
18880            i = e.mixin({}, n, i);
18881            function a(e) {
18882                var n, r, a;
18883                return (n = o.exec(e.data)) && (a = t.createElement(i.tagName),
18884                i.className && (a.className = i.className),
18885                r = e.splitText(n.index),
18886                r.splitText(n[0].length),
18887                a.appendChild(r.cloneNode(!0)),
18888                e.parentNode.replaceChild(a, r)),
18889                !!n
18890            }
18891            function s(t, e) {
18892                for (var n, r = 0; r < t.childNodes.length; r++)
18893                    n = t.childNodes[r],
18894                    3 === n.nodeType ? r += e(n) ? 1 : 0 : s(n, e)
18895            }
18896            i.node && i.pattern && (i.pattern = e.isArray(i.pattern) ? i.pattern : [i.pattern],
18897            o = r(i.pattern, i.caseSensitive, i.wordsOnly),
18898            s(i.node, a))
18899        }
18900        ;
18901        function r(t, n, r) {
18902            for (var i, o = [], a = 0, s = t.length; a < s; a++)
18903                o.push(e.escapeRegExChars(t[a]));
18904            return i = r ? "\\b(" + o.join("|") + ")\\b" : "(" + o.join("|") + ")",
18905            n ? new RegExp(i) : new RegExp(i,"i")
18906        }
18907    }(window.document)
18908      , a = function() {
18909        "use strict";
18910        var n;
18911        n = {
18912            9: "tab",
18913            27: "esc",
18914            37: "left",
18915            39: "right",
18916            13: "enter",
18917            38: "up",
18918            40: "down"
18919        };
18920        function r(n, r) {
18921            n = n || {},
18922            n.input || t.error("input is missing"),
18923            r.mixin(this),
18924            this.$hint = t(n.hint),
18925            this.$input = t(n.input),
18926            this.query = this.$input.val(),
18927            this.queryWhenFocused = this.hasFocus() ? this.query : null,
18928            this.$overflowHelper = o(this.$input),
18929            this._checkLanguageDirection(),
18930            0 === this.$hint.length && (this.setHint = this.getHint = this.clearHint = this.clearHintIfInvalid = e.noop)
18931        }
18932        return r.normalizeQuery = function(t) {
18933            return e.toStr(t).replace(/^\s*/g, "").replace(/\s{2,}/g, " ")
18934        }
18935        ,
18936        e.mixin(r.prototype, i, {
18937            _onBlur: function() {
18938                this.resetInputValue(),
18939                this.trigger("blurred")
18940            },
18941            _onFocus: function() {
18942                this.queryWhenFocused = this.query,
18943                this.trigger("focused")
18944            },
18945            _onKeydown: function(t) {
18946                var e = n[t.which || t.keyCode];
18947                this._managePreventDefault(e, t),
18948                e && this._shouldTrigger(e, t) && this.trigger(e + "Keyed", t)
18949            },
18950            _onInput: function() {
18951                this._setQuery(this.getInputValue()),
18952                this.clearHintIfInvalid(),
18953                this._checkLanguageDirection()
18954            },
18955            _managePreventDefault: function(t, e) {
18956                var n;
18957                switch (t) {
18958                case "up":
18959                case "down":
18960                    n = !s(e);
18961                    break;
18962                default:
18963                    n = !1
18964                }
18965                n && e.preventDefault()
18966            },
18967            _shouldTrigger: function(t, e) {
18968                var n;
18969                switch (t) {
18970                case "tab":
18971                    n = !s(e);
18972                    break;
18973                default:
18974                    n = !0
18975                }
18976                return n
18977            },
18978            _checkLanguageDirection: function() {
18979                var t = (this.$input.css("direction") || "ltr").toLowerCase();
18980                this.dir !== t && (this.dir = t,
18981                this.$hint.attr("dir", t),
18982                this.trigger("langDirChanged", t))
18983            },
18984            _setQuery: function(t, e) {
18985                var n, r;
18986                n = a(t, this.query),
18987                r = !!n && this.query.length !== t.length,
18988                this.query = t,
18989                e || n ? !e && r && this.trigger("whitespaceChanged", this.query) : this.trigger("queryChanged", this.query)
18990            },
18991            bind: function() {
18992                var t, r, i, o, a = this;
18993                return t = e.bind(this._onBlur, this),
18994                r = e.bind(this._onFocus, this),
18995                i = e.bind(this._onKeydown, this),
18996                o = e.bind(this._onInput, this),
18997                this.$input.on("blur.tt", t).on("focus.tt", r).on("keydown.tt", i),
18998                !e.isMsie() || e.isMsie() > 9 ? this.$input.on("input.tt", o) : this.$input.on("keydown.tt keypress.tt cut.tt paste.tt", function(t) {
18999                    n[t.which || t.keyCode] || e.defer(e.bind(a._onInput, a, t))
19000                }),
19001                this
19002            },
19003            focus: function() {
19004                this.$input.focus()
19005            },
19006            blur: function() {
19007                this.$input.blur()
19008            },
19009            getLangDir: function() {
19010                return this.dir
19011            },
19012            getQuery: function() {
19013                return this.query || ""
19014            },
19015            setQuery: function(t, e) {
19016                this.setInputValue(t),
19017                this._setQuery(t, e)
19018            },
19019            hasQueryChangedSinceLastFocus: function() {
19020                return this.query !== this.queryWhenFocused
19021            },
19022            getInputValue: function() {
19023                return this.$input.val()
19024            },
19025            setInputValue: function(t) {
19026                this.$input.val(t),
19027                this.clearHintIfInvalid(),
19028                this._checkLanguageDirection()
19029            },
19030            resetInputValue: function() {
19031                this.setInputValue(this.query)
19032            },
19033            getHint: function() {
19034                return this.$hint.val()
19035            },
19036            setHint: function(t) {
19037                this.$hint.val(t)
19038            },
19039            clearHint: function() {
19040                this.setHint("")
19041            },
19042            clearHintIfInvalid: function() {
19043                var t, e, n, r;
19044                t = this.getInputValue(),
19045                e = this.getHint(),
19046                n = t !== e && 0 === e.indexOf(t),
19047                !(r = "" !== t && n && !this.hasOverflow()) && this.clearHint()
19048            },
19049            hasFocus: function() {
19050                return this.$input.is(":focus")
19051            },
19052            hasOverflow: function() {
19053                var t = this.$input.width() - 2;
19054                return this.$overflowHelper.text(this.getInputValue()),
19055                this.$overflowHelper.width() >= t
19056            },
19057            isCursorAtEnd: function() {
19058                var t, n, r;
19059                return t = this.$input.val().length,
19060                n = this.$input[0].selectionStart,
19061                e.isNumber(n) ? n === t : !document.selection || (r = document.selection.createRange(),
19062                r.moveStart("character", -t),
19063                t === r.text.length)
19064            },
19065            destroy: function() {
19066                this.$hint.off(".tt"),
19067                this.$input.off(".tt"),
19068                this.$overflowHelper.remove(),
19069                this.$hint = this.$input = this.$overflowHelper = t("<div>")
19070            }
19071        }),
19072        r;
19073        function o(e) {
19074            return t('<pre aria-hidden="true"></pre>').css({
19075                position: "absolute",
19076                visibility: "hidden",
19077                whiteSpace: "pre",
19078                fontFamily: e.css("font-family"),
19079                fontSize: e.css("font-size"),
19080                fontStyle: e.css("font-style"),
19081                fontVariant: e.css("font-variant"),
19082                fontWeight: e.css("font-weight"),
19083                wordSpacing: e.css("word-spacing"),
19084                letterSpacing: e.css("letter-spacing"),
19085                textIndent: e.css("text-indent"),
19086                textRendering: e.css("text-rendering"),
19087                textTransform: e.css("text-transform")
19088            }).insertAfter(e)
19089        }
19090        function a(t, e) {
19091            return r.normalizeQuery(t) === r.normalizeQuery(e)
19092        }
19093        function s(t) {
19094            return t.altKey || t.ctrlKey || t.metaKey || t.shiftKey
19095        }
19096    }()
19097      , s = function() {
19098        "use strict";
19099        var n, r;
19100        n = {
19101            val: "tt-selectable-display",
19102            obj: "tt-selectable-object"
19103        },
19104        r = e.getIdGenerator();
19105        function a(n, i) {
19106            n = n || {},
19107            n.templates = n.templates || {},
19108            n.templates.notFound = n.templates.notFound || n.templates.empty,
19109            n.source || t.error("missing source"),
19110            n.node || t.error("missing node"),
19111            n.name && !l(n.name) && t.error("invalid dataset name: " + n.name),
19112            i.mixin(this),
19113            this.highlight = !!n.highlight,
19114            this.name = n.name || r(),
19115            this.limit = n.limit || 5,
19116            this.displayFn = s(n.display || n.displayKey),
19117            this.templates = u(n.templates, this.displayFn),
19118            this.source = n.source.__ttAdapter ? n.source.__ttAdapter() : n.source,
19119            this.async = e.isUndefined(n.async) ? this.source.length > 2 : !!n.async,
19120            this._resetLastSuggestion(),
19121            this.$el = t(n.node).addClass(this.classes.dataset).addClass(this.classes.dataset + "-" + this.name)
19122        }
19123        return a.extractData = function(e) {
19124            var r = t(e);
19125            return r.data(n.obj) ? {
19126                val: r.data(n.val) || "",
19127                obj: r.data(n.obj) || null
19128            } : null
19129        }
19130        ,
19131        e.mixin(a.prototype, i, {
19132            _overwrite: function(t, e) {
19133                e = e || [],
19134                e.length ? this._renderSuggestions(t, e) : this.async && this.templates.pending ? this._renderPending(t) : !this.async && this.templates.notFound ? this._renderNotFound(t) : this._empty(),
19135                this.trigger("rendered", this.name, e, !1)
19136            },
19137            _append: function(t, e) {
19138                e = e || [],
19139                e.length && this.$lastSuggestion.length ? this._appendSuggestions(t, e) : e.length ? this._renderSuggestions(t, e) : !this.$lastSuggestion.length && this.templates.notFound && this._renderNotFound(t),
19140                this.trigger("rendered", this.name, e, !0)
19141            },
19142            _renderSuggestions: function(t, e) {
19143                var n;
19144                n = this._getSuggestionsFragment(t, e),
19145                this.$lastSuggestion = n.children().last(),
19146                this.$el.html(n).prepend(this._getHeader(t, e)).append(this._getFooter(t, e))
19147            },
19148            _appendSuggestions: function(t, e) {
19149                var n, r;
19150                n = this._getSuggestionsFragment(t, e),
19151                r = n.children().last(),
19152                this.$lastSuggestion.after(n),
19153                this.$lastSuggestion = r
19154            },
19155            _renderPending: function(t) {
19156                var e = this.templates.pending;
19157                this._resetLastSuggestion(),
19158                e && this.$el.html(e({
19159                    query: t,
19160                    dataset: this.name
19161                }))
19162            },
19163            _renderNotFound: function(t) {
19164                var e = this.templates.notFound;
19165                this._resetLastSuggestion(),
19166                e && this.$el.html(e({
19167                    query: t,
19168                    dataset: this.name
19169                }))
19170            },
19171            _empty: function() {
19172                this.$el.empty(),
19173                this._resetLastSuggestion()
19174            },
19175            _getSuggestionsFragment: function(r, i) {
19176                var a, s = this;
19177                return a = document.createDocumentFragment(),
19178                e.each(i, function(e) {
19179                    var i, o;
19180                    o = s._injectQuery(r, e),
19181                    i = t(s.templates.suggestion(o)).data(n.obj, e).data(n.val, s.displayFn(e)).addClass(s.classes.suggestion + " " + s.classes.selectable),
19182                    a.appendChild(i[0])
19183                }),
19184                this.highlight && o({
19185                    className: this.classes.highlight,
19186                    node: a,
19187                    pattern: r
19188                }),
19189                t(a)
19190            },
19191            _getFooter: function(t, e) {
19192                return this.templates.footer ? this.templates.footer({
19193                    query: t,
19194                    suggestions: e,
19195                    dataset: this.name
19196                }) : null
19197            },
19198            _getHeader: function(t, e) {
19199                return this.templates.header ? this.templates.header({
19200                    query: t,
19201                    suggestions: e,
19202                    dataset: this.name
19203                }) : null
19204            },
19205            _resetLastSuggestion: function() {
19206                this.$lastSuggestion = t()
19207            },
19208            _injectQuery: function(t, n) {
19209                return e.isObject(n) ? e.mixin({
19210                    _query: t
19211                }, n) : n
19212            },
19213            update: function(e) {
19214                var n = this
19215                  , r = !1
19216                  , i = !1
19217                  , o = 0;
19218                this.cancel(),
19219                this.cancel = function() {
19220                    r = !0,
19221                    n.cancel = t.noop,
19222                    n.async && n.trigger("asyncCanceled", e)
19223                }
19224                ,
19225                this.source(e, a, s),
19226                !i && a([]);
19227                function a(t) {
19228                    i || (i = !0,
19229                    t = (t || []).slice(0, n.limit),
19230                    o = t.length,
19231                    n._overwrite(e, t),
19232                    o < n.limit && n.async && n.trigger("asyncRequested", e))
19233                }
19234                function s(i) {
19235                    i = i || [],
19236                    !r && o < n.limit && (n.cancel = t.noop,
19237                    o += i.length,
19238                    n._append(e, i.slice(0, n.limit - o)),
19239                    n.async && n.trigger("asyncReceived", e))
19240                }
19241            },
19242            cancel: t.noop,
19243            clear: function() {
19244                this._empty(),
19245                this.cancel(),
19246                this.trigger("cleared")
19247            },
19248            isEmpty: function() {
19249                return this.$el.is(":empty")
19250            },
19251            destroy: function() {
19252                this.$el = t("<div>")
19253            }
19254        }),
19255        a;
19256        function s(t) {
19257            return t = t || e.stringify,
19258            e.isFunction(t) ? t : n;
19259            function n(e) {
19260                return e[t]
19261            }
19262        }
19263        function u(n, r) {
19264            return {
19265                notFound: n.notFound && e.templatify(n.notFound),
19266                pending: n.pending && e.templatify(n.pending),
19267                header: n.header && e.templatify(n.header),
19268                footer: n.footer && e.templatify(n.footer),
19269                suggestion: n.suggestion || i
19270            };
19271            function i(e) {
19272                return t("<div>").text(r(e))
19273            }
19274        }
19275        function l(t) {
19276            return /^[_a-zA-Z0-9-]+$/.test(t)
19277        }
19278    }()
19279      , u = function() {
19280        "use strict";
19281        function n(n, r) {
19282            var i = this;
19283            n = n || {},
19284            n.node || t.error("node is required"),
19285            r.mixin(this),
19286            this.$node = t(n.node),
19287            this.query = null,
19288            this.datasets = e.map(n.datasets, o);
19289            function o(e) {
19290                var n = i.$node.find(e.node).first();
19291                return e.node = n.length ? n : t("<div>").appendTo(i.$node),
19292                new s(e,r)
19293            }
19294        }
19295        return e.mixin(n.prototype, i, {
19296            _onSelectableClick: function(e) {
19297                this.trigger("selectableClicked", t(e.currentTarget))
19298            },
19299            _onRendered: function(t, e, n, r) {
19300                this.$node.toggleClass(this.classes.empty, this._allDatasetsEmpty()),
19301                this.trigger("datasetRendered", e, n, r)
19302            },
19303            _onCleared: function() {
19304                this.$node.toggleClass(this.classes.empty, this._allDatasetsEmpty()),
19305                this.trigger("datasetCleared")
19306            },
19307            _propagate: function() {
19308                this.trigger.apply(this, arguments)
19309            },
19310            _allDatasetsEmpty: function() {
19311                return e.every(this.datasets, t);
19312                function t(t) {
19313                    return t.isEmpty()
19314                }
19315            },
19316            _getSelectables: function() {
19317                return this.$node.find(this.selectors.selectable)
19318            },
19319            _removeCursor: function() {
19320                var t = this.getActiveSelectable();
19321                t && t.removeClass(this.classes.cursor)
19322            },
19323            _ensureVisible: function(t) {
19324                var e, n, r, i;
19325                e = t.position().top,
19326                n = e + t.outerHeight(!0),
19327                r = this.$node.scrollTop(),
19328                i = this.$node.height() + parseInt(this.$node.css("paddingTop"), 10) + parseInt(this.$node.css("paddingBottom"), 10),
19329                e < 0 ? this.$node.scrollTop(r + e) : i < n && this.$node.scrollTop(r + (n - i))
19330            },
19331            bind: function() {
19332                var t, n = this;
19333                return t = e.bind(this._onSelectableClick, this),
19334                this.$node.on("click.tt", this.selectors.selectable, t),
19335                e.each(this.datasets, function(t) {
19336                    t.onSync("asyncRequested", n._propagate, n).onSync("asyncCanceled", n._propagate, n).onSync("asyncReceived", n._propagate, n).onSync("rendered", n._onRendered, n).onSync("cleared", n._onCleared, n)
19337                }),
19338                this
19339            },
19340            isOpen: function() {
19341                return this.$node.hasClass(this.classes.open)
19342            },
19343            open: function() {
19344                this.$node.addClass(this.classes.open)
19345            },
19346            close: function() {
19347                this.$node.removeClass(this.classes.open),
19348                this._removeCursor()
19349            },
19350            setLanguageDirection: function(t) {
19351                this.$node.attr("dir", t)
19352            },
19353            selectableRelativeToCursor: function(t) {
19354                var e, n, r, i;
19355                return n = this.getActiveSelectable(),
19356                e = this._getSelectables(),
19357                r = n ? e.index(n) : -1,
19358                i = r + t,
19359                i = (i + 1) % (e.length + 1) - 1,
19360                i = i < -1 ? e.length - 1 : i,
19361                -1 === i ? null : e.eq(i)
19362            },
19363            setCursor: function(t) {
19364                this._removeCursor(),
19365                (t = t && t.first()) && (t.addClass(this.classes.cursor),
19366                this._ensureVisible(t))
19367            },
19368            getSelectableData: function(t) {
19369                return t && t.length ? s.extractData(t) : null
19370            },
19371            getActiveSelectable: function() {
19372                var t = this._getSelectables().filter(this.selectors.cursor).first();
19373                return t.length ? t : null
19374            },
19375            getTopSelectable: function() {
19376                var t = this._getSelectables().first();
19377                return t.length ? t : null
19378            },
19379            update: function(t) {
19380                var n = t !== this.query;
19381                return n && (this.query = t,
19382                e.each(this.datasets, r)),
19383                n;
19384                function r(e) {
19385                    e.update(t)
19386                }
19387            },
19388            empty: function() {
19389                e.each(this.datasets, t),
19390                this.query = null,
19391                this.$node.addClass(this.classes.empty);
19392                function t(t) {
19393                    t.clear()
19394                }
19395            },
19396            destroy: function() {
19397                this.$node.off(".tt"),
19398                this.$node = t("<div>"),
19399                e.each(this.datasets, n);
19400                function n(t) {
19401                    t.destroy()
19402                }
19403            }
19404        }),
19405        n
19406    }()
19407      , l = function() {
19408        "use strict";
19409        var t = u.prototype;
19410        function n() {
19411            u.apply(this, [].slice.call(arguments, 0))
19412        }
19413        return e.mixin(n.prototype, u.prototype, {
19414            open: function() {
19415                return !this._allDatasetsEmpty() && this._show(),
19416                t.open.apply(this, [].slice.call(arguments, 0))
19417            },
19418            close: function() {
19419                return this._hide(),
19420                t.close.apply(this, [].slice.call(arguments, 0))
19421            },
19422            _onRendered: function() {
19423                return this._allDatasetsEmpty() ? this._hide() : this.isOpen() && this._show(),
19424                t._onRendered.apply(this, [].slice.call(arguments, 0))
19425            },
19426            _onCleared: function() {
19427                return this._allDatasetsEmpty() ? this._hide() : this.isOpen() && this._show(),
19428                t._onCleared.apply(this, [].slice.call(arguments, 0))
19429            },
19430            setLanguageDirection: function(e) {
vendor: 6,553 bytes, lines 19431-19568
19431                return this.$node.css("ltr" === e ? this.css.ltr : this.css.rtl),
19432                t.setLanguageDirection.apply(this, [].slice.call(arguments, 0))
19433            },
19434            _hide: function() {
19435                this.$node.hide()
19436            },
19437            _show: function() {
19438                this.$node.css("display", "block")
19439            }
19440        }),
19441        n
19442    }()
19443      , c = function() {
19444        "use strict";
19445        function n(n, i) {
19446            var o, a, s, u, l, c, h, d, f, p, g;
19447            n = n || {},
19448            n.input || t.error("missing input"),
19449            n.menu || t.error("missing menu"),
19450            n.eventBus || t.error("missing event bus"),
19451            i.mixin(this),
19452            this.eventBus = n.eventBus,
19453            this.minLength = e.isNumber(n.minLength) ? n.minLength : 1,
19454            this.input = n.input,
19455            this.menu = n.menu,
19456            this.enabled = !0,
19457            this.active = !1,
19458            this.input.hasFocus() && this.activate(),
19459            this.dir = this.input.getLangDir(),
19460            this._hacks(),
19461            this.menu.bind().onSync("selectableClicked", this._onSelectableClicked, this).onSync("asyncRequested", this._onAsyncRequested, this).onSync("asyncCanceled", this._onAsyncCanceled, this).onSync("asyncReceived", this._onAsyncReceived, this).onSync("datasetRendered", this._onDatasetRendered, this).onSync("datasetCleared", this._onDatasetCleared, this),
19462            o = r(this, "activate", "open", "_onFocused"),
19463            a = r(this, "deactivate", "_onBlurred"),
19464            s = r(this, "isActive", "isOpen", "_onEnterKeyed"),
19465            u = r(this, "isActive", "isOpen", "_onTabKeyed"),
19466            l = r(this, "isActive", "_onEscKeyed"),
19467            c = r(this, "isActive", "open", "_onUpKeyed"),
19468            h = r(this, "isActive", "open", "_onDownKeyed"),
19469            d = r(this, "isActive", "isOpen", "_onLeftKeyed"),
19470            f = r(this, "isActive", "isOpen", "_onRightKeyed"),
19471            p = r(this, "_openIfActive", "_onQueryChanged"),
19472            g = r(this, "_openIfActive", "_onWhitespaceChanged"),
19473            this.input.bind().onSync("focused", o, this).onSync("blurred", a, this).onSync("enterKeyed", s, this).onSync("tabKeyed", u, this).onSync("escKeyed", l, this).onSync("upKeyed", c, this).onSync("downKeyed", h, this).onSync("leftKeyed", d, this).onSync("rightKeyed", f, this).onSync("queryChanged", p, this).onSync("whitespaceChanged", g, this).onSync("langDirChanged", this._onLangDirChanged, this)
19474        }
19475        return e.mixin(n.prototype, {
19476            _hacks: function() {
19477                var n, r;
19478                n = this.input.$input || t("<div>"),
19479                r = this.menu.$node || t("<div>"),
19480                n.on("blur.tt", function(t) {
19481                    var i, o, a;
19482                    i = document.activeElement,
19483                    o = r.is(i),
19484                    a = r.has(i).length > 0,
19485                    e.isMsie() && (o || a) && (t.preventDefault(),
19486                    t.stopImmediatePropagation(),
19487                    e.defer(function() {
19488                        n.focus()
19489                    }))
19490                }),
19491                r.on("mousedown.tt", function(t) {
19492                    t.preventDefault()
19493                })
19494            },
19495            _onSelectableClicked: function(t, e) {
19496                this.select(e)
19497            },
19498            _onDatasetCleared: function() {
19499                this._updateHint()
19500            },
19501            _onDatasetRendered: function(t, e, n, r) {
19502                this._updateHint(),
19503                this.eventBus.trigger("render", n, r, e)
19504            },
19505            _onAsyncRequested: function(t, e, n) {
19506                this.eventBus.trigger("asyncrequest", n, e)
19507            },
19508            _onAsyncCanceled: function(t, e, n) {
19509                this.eventBus.trigger("asynccancel", n, e)
19510            },
19511            _onAsyncReceived: function(t, e, n) {
19512                this.eventBus.trigger("asyncreceive", n, e)
19513            },
19514            _onFocused: function() {
19515                this._minLengthMet() && this.menu.update(this.input.getQuery())
19516            },
19517            _onBlurred: function() {
19518                this.input.hasQueryChangedSinceLastFocus() && this.eventBus.trigger("change", this.input.getQuery())
19519            },
19520            _onEnterKeyed: function(t, e) {
19521                var n;
19522                (n = this.menu.getActiveSelectable()) && this.select(n) && e.preventDefault()
19523            },
19524            _onTabKeyed: function(t, e) {
19525                var n;
19526                (n = this.menu.getActiveSelectable()) ? this.select(n) && e.preventDefault() : (n = this.menu.getTopSelectable()) && this.autocomplete(n) && e.preventDefault()
19527            },
19528            _onEscKeyed: function() {
19529                this.close()
19530            },
19531            _onUpKeyed: function() {
19532                this.moveCursor(-1)
19533            },
19534            _onDownKeyed: function() {
19535                this.moveCursor(1)
19536            },
19537            _onLeftKeyed: function() {
19538                "rtl" === this.dir && this.input.isCursorAtEnd() && this.autocomplete(this.menu.getTopSelectable())
19539            },
19540            _onRightKeyed: function() {
19541                "ltr" === this.dir && this.input.isCursorAtEnd() && this.autocomplete(this.menu.getTopSelectable())
19542            },
19543            _onQueryChanged: function(t, e) {
19544                this._minLengthMet(e) ? this.menu.update(e) : this.menu.empty()
19545            },
19546            _onWhitespaceChanged: function() {
19547                this._updateHint()
19548            },
19549            _onLangDirChanged: function(t, e) {
19550                this.dir !== e && (this.dir = e,
19551                this.menu.setLanguageDirection(e))
19552            },
19553            _openIfActive: function() {
19554                this.isActive() && this.open()
19555            },
19556            _minLengthMet: function(t) {
19557                return t = e.isString(t) ? t : this.input.getQuery() || "",
19558                t.length >= this.minLength
19559            },
19560            _updateHint: function() {
19561                var t, n, r, i, o, s, u;
19562                t = this.menu.getTopSelectable(),
19563                n = this.menu.getSelectableData(t),
19564                r = this.input.getInputValue(),
19565                !n || e.isBlankString(r) || this.input.hasOverflow() ? this.input.clearHint() : (i = a.normalizeQuery(r),
19566                o = e.escapeRegExChars(i),
19567                s = new RegExp("^(?:" + o + ")(.+$)","i"),
19568                (u = s.exec(n.val)) && this.input.setHint(r + u[1])
19568)
19569            },
19570            isEnabled: function() {
19571                return this.enabled
19572            },
19573            enable: function() {
19574                this.enabled = !0
19575            },
19576            disable: function() {
19577                this.enabled = !1
19578            },
19579            isActive: function() {
19580                return this.active
19581            },
19582            activate: function() {
19583                return !!this.isActive() || !(!this.isEnabled() || this.eventBus.before("active")) && (this.active = !0,
19584                this.eventBus.trigger("active"),
19585                !0)
19586            },
19587            deactivate: function() {
19588                return !this.isActive() || !this.eventBus.before("idle") && (this.active = !1,
19589                this.close(),
19590                this.eventBus.trigger("idle"),
19591                !0)
19592            },
19593            isOpen: function() {
19594                return this.menu.isOpen()
19595            },
19596            open: function() {
19597                return this.isOpen() || this.eventBus.before("open") || (this.menu.open(),
19598                this._updateHint(),
19599                this.eventBus.trigger("open")),
19600                this.isOpen()
19601            },
19602            close: function() {
19603                return this.isOpen() && !this.eventBus.before("close") && (this.menu.close(),
19604                this.input.clearHint(),
19605                this.input.resetInputValue(),
19606                this.eventBus.trigger("close")),
19607                !this.isOpen()
19608            },
19609            setVal: function(t) {
19610                this.input.setQuery(e.toStr(t))
19611            },
19612            getVal: function() {
19613                return this.input.getQuery()
19614            },
19615            select: function(t) {
19616                var e = this.menu.getSelectableData(t);
19617                return !(!e || this.eventBus.before("select", e.obj)) && (this.input.setQuery(e.val, !0),
19618                this.eventBus.trigger("select", e.obj),
19619                this.close(),
19620                !0)
19621            },
19622            autocomplete: function(t) {
19623                var e, n;
19624                return e = this.input.getQuery(),
19625                n = this.menu.getSelectableData(t),
19626                !(!(n && e !== n.val) || this.eventBus.before("autocomplete", n.obj)) && (this.input.setQuery(n.val),
19627                this.eventBus.trigger("autocomplete", n.obj),
19628                !0)
19629            },
19630            moveCursor: function(t) {
19631                var e, n, r, i;
19632                return e = this.input.getQuery(),
19633                n = this.menu.selectableRelativeToCursor(t),
19634                r = this.menu.getSelectableData(n),
19635                i = r ? r.obj : null,
19636                !(this._minLengthMet() && this.menu.update(e)) && !this.eventBus.before("cursorchange", i) && (this.menu.setCursor(n),
19637                r ? this.input.setInputValue(r.val) : (this.input.resetInputValue(),
19638                this._updateHint()),
19639                this.eventBus.trigger("cursorchange", i),
19640                !0)
19641            },
19642            destroy: function() {
19643                this.input.destroy(),
19644                this.menu.destroy()
19645            }
19646        }),
19647        n;
19648        function r(t) {
19649            var n = [].slice.call(arguments, 1);
19650            return function() {
19651                var r = [].slice.call(arguments);
19652                e.each(n, function(e) {
19653                    return t[e].apply(t, r)
19654                })
19655            }
19656        }
19657    }();
19658    !function() {
19659        "use strict";
19660        var i, o, s;
19661        i = t.fn.typeahead,
19662        o = {
19663            www: "tt-www",
19664            attrs: "tt-attrs",
19665            typeahead: "tt-typeahead"
19666        },
19667        s = {
19668            initialize: function(i, s) {
19669                var h;
19670                return s = e.isArray(s) ? s : [].slice.call(arguments, 1),
19671                i = i || {},
19672                h = n(i.classNames),
19673                this.each(p);
19674                function p() {
19675                    var n, p, g, y, v, b, w, x, _, C, k;
19676                    e.each(s, function(t) {
19677                        t.highlight = !!i.highlight
19678                    }),
19679                    n = t(this),
19680                    p = t(h.html.wrapper),
19681                    g = m(i.hint),
vendor: 10,731 bytes, lines 19682-20007
19682                    y = m(i.menu),
19683                    v = !1 !== i.hint && !g,
19684                    b = !1 !== i.menu && !y,
19685                    v && (g = d(n, h)),
19686                    b && (y = t(h.html.menu).css(h.css.menu)),
19687                    g && g.val(""),
19688                    n = f(n, h),
19689                    (v || b) && (p.css(h.css.wrapper),
19690                    n.css(v ? h.css.input : h.css.inputWithNoHint),
19691                    n.wrap(p).parent().prepend(v ? g : null).append(b ? y : null)),
19692                    k = b ? l : u,
19693                    w = new r({
19694                        el: n
19695                    }),
19696                    x = new a({
19697                        hint: g,
19698                        input: n
19699                    },h),
19700                    _ = new k({
19701                        node: y,
19702                        datasets: s
19703                    },h),
19704                    C = new c({
19705                        input: x,
19706                        menu: _,
19707                        eventBus: w,
19708                        minLength: i.minLength
19709                    },h),
19710                    n.data(o.www, h),
19711                    n.data(o.typeahead, C)
19712                }
19713            },
19714            isEnabled: function() {
19715                var t;
19716                return h(this.first(), function(e) {
19717                    t = e.isEnabled()
19718                }),
19719                t
19720            },
19721            enable: function() {
19722                return h(this, function(t) {
19723                    t.enable()
19724                }),
19725                this
19726            },
19727            disable: function() {
19728                return h(this, function(t) {
19729                    t.disable()
19730                }),
19731                this
19732            },
19733            isActive: function() {
19734                var t;
19735                return h(this.first(), function(e) {
19736                    t = e.isActive()
19737                }),
19738                t
19739            },
19740            activate: function() {
19741                return h(this, function(t) {
19742                    t.activate()
19743                }),
19744                this
19745            },
19746            deactivate: function() {
19747                return h(this, function(t) {
19748                    t.deactivate()
19749                }),
19750                this
19751            },
19752            isOpen: function() {
19753                var t;
19754                return h(this.first(), function(e) {
19755                    t = e.isOpen()
19756                }),
19757                t
19758            },
19759            open: function() {
19760                return h(this, function(t) {
19761                    t.open()
19762                }),
19763                this
19764            },
19765            close: function() {
19766                return h(this, function(t) {
19767                    t.close()
19768                }),
19769                this
19770            },
19771            select: function(e) {
19772                var n = !1
19773                  , r = t(e);
19774                return h(this.first(), function(t) {
19775                    n = t.select(r)
19776                }),
19777                n
19778            },
19779            autocomplete: function(e) {
19780                var n = !1
19781                  , r = t(e);
19782                return h(this.first(), function(t) {
19783                    n = t.autocomplete(r)
19784                }),
19785                n
19786            },
19787            moveCursor: function(t) {
19788                var e = !1;
19789                return h(this.first(), function(n) {
19790                    e = n.moveCursor(t)
19791                }),
19792                e
19793            },
19794            val: function(t) {
19795                var e;
19796                return arguments.length ? (h(this, function(e) {
19797                    e.setVal(t)
19798                }),
19799                this) : (h(this.first(), function(t) {
19800                    e = t.getVal()
19801                }),
19802                e)
19803            },
19804            destroy: function() {
19805                return h(this, function(t, e) {
19806                    g(e),
19807                    t.destroy()
19808                }),
19809                this
19810            }
19811        },
19812        t.fn.typeahead = function(t) {
19813            return s[t] ? s[t].apply(this, [].slice.call(arguments, 1)) : s.initialize.apply(this, arguments)
19814        }
19815        ,
19816        t.fn.typeahead.noConflict = function() {
19817            return t.fn.typeahead = i,
19818            this
19819        }
19820        ;
19821        function h(e, n) {
19822            e.each(function() {
19823                var e, r = t(this);
19824                (e = r.data(o.typeahead)) && n(e, r)
19825            })
19826        }
19827        function d(t, e) {
19828            return t.clone().addClass(e.classes.hint).removeData().css(e.css.hint).css(p(t)).prop("readonly", !0).removeAttr("id name placeholder required").attr({
19829                autocomplete: "off",
19830                spellcheck: "false",
19831                tabindex: -1
19832            })
19833        }
19834        function f(t, e) {
19835            t.data(o.attrs, {
19836                dir: t.attr("dir"),
19837                autocomplete: t.attr("autocomplete"),
19838                spellcheck: t.attr("spellcheck"),
19839                style: t.attr("style")
19840            }),
19841            t.addClass(e.classes.input).attr({
19842                autocomplete: "off",
19843                spellcheck: !1
19844            });
19845            try {
19846                !t.attr("dir") && t.attr("dir", "auto")
19847            } catch (t) {}
19848            return t
19849        }
19850        function p(t) {
19851            return {
19852                backgroundAttachment: t.css("background-attachment"),
19853                backgroundClip: t.css("background-clip"),
19854                backgroundColor: t.css("background-color"),
19855                backgroundImage: t.css("background-image"),
19856                backgroundOrigin: t.css("background-origin"),
19857                backgroundPosition: t.css("background-position"),
19858                backgroundRepeat: t.css("background-repeat"),
19859                backgroundSize: t.css("background-size")
19860            }
19861        }
19862        function g(t) {
19863            var n, r;
19864            n = t.data(o.www),
19865            r = t.parent().filter(n.selectors.wrapper),
19866            e.each(t.data(o.attrs), function(n, r) {
19867                e.isUndefined(n) ? t.removeAttr(r) : t.attr(r, n)
19868            }),
19869            t.removeData(o.typeahead).removeData(o.www).removeData(o.attr).removeClass(n.classes.input),
19870            r.length && (t.detach().insertAfter(r),
19871            r.remove())
19872        }
19873        function m(n) {
19874            var r, i;
19875            return r = e.isJQuery(n) || e.isElement(n),
19876            i = r ? t(n).first() : [],
19877            i.length ? i : null
19878        }
19879    }()
19880}),
19881/*!
19882 * typeahead.js 0.11.1
19883 * https://github.com/twitter/typeahead.js
19884 * Copyright 2013-2015 Twitter, Inc. and other contributors; Licensed MIT
19885 */
19886function(t, e) {
19887    "function" == typeof define && define.amd ? define("typeahead.js", ["jquery"], function(t) {
19888        return e(t)
19889    }) : "object" == typeof exports ? module.exports = e(require("jquery")) : e(jQuery)
19890}(0, function(t) {
19891    var e = function() {
19892        "use strict";
19893        return {
19894            isMsie: function() {
19895                return !!/(msie|trident)/i.test(navigator.userAgent) && navigator.userAgent.match(/(msie |rv:)(\d+(.\d+)?)/i)[2]
19896            },
19897            isBlankString: function(t) {
19898                return !t || /^\s*$/.test(t)
19899            },
19900            escapeRegExChars: function(t) {
19901                return t.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&")
19902            },
19903            isString: function(t) {
19904                return "string" == typeof t
19905            },
19906            isNumber: function(t) {
19907                return "number" == typeof t
19908            },
19909            isArray: t.isArray,
19910            isFunction: t.isFunction,
19911            isObject: t.isPlainObject,
19912            isUndefined: function(t) {
19913                return void 0 === t
19914            },
19915            isElement: function(t) {
19916                return !(!t || 1 !== t.nodeType)
19917            },
19918            isJQuery: function(e) {
19919                return e instanceof t
19920            },
19921            toStr: function(t) {
19922                return e.isUndefined(t) || null === t ? "" : t + ""
19923            },
19924            bind: t.proxy,
19925            each: function(e, n) {
19926                t.each(e, r);
19927                function r(t, e) {
19928                    return n(e, t)
19929                }
19930            },
19931            map: t.map,
19932            filter: t.grep,
19933            every: function(e, n) {
19934                var r = !0;
19935                return e ? (t.each(e, function(t, i) {
19936                    if (!(r = n.call(null, i, t, e)))
19937                        return !1
19938                }),
19939                !!r) : r
19940            },
19941            some: function(e, n) {
19942                var r = !1;
19943                return e ? (t.each(e, function(t, i) {
19944                    if (r = n.call(null, i, t, e))
19945                        return !1
19946                }),
19947                !!r) : r
19948            },
19949            mixin: t.extend,
19950            identity: function(t) {
19951                return t
19952            },
19953            clone: function(e) {
19954                return t.extend(!0, {}, e)
19955            },
19956            getIdGenerator: function() {
19957                var t = 0;
19958                return function() {
19959                    return t++
19960                }
19961            },
19962            templatify: function(e) {
19963                return t.isFunction(e) ? e : n;
19964                function n() {
19965                    return String(e)
19966                }
19967            },
19968            defer: function(t) {
19969                setTimeout(t, 0)
19970            },
19971            debounce: function(t, e, n) {
19972                var r, i;
19973                return function() {
19974                    var o, a, s = this, u = arguments;
19975                    return o = function() {
19976                        r = null,
19977                        n || (i = t.apply(s, u))
19978                    }
19979                    ,
19980                    a = n && !r,
19981                    clearTimeout(r),
19982                    r = setTimeout(o, e),
19983                    a && (i = t.apply(s, u)),
19984                    i
19985                }
19986            },
19987            throttle: function(t, e) {
19988                var n, r, i, o, a, s;
19989                return a = 0,
19990                s = function() {
19991                    a = new Date,
19992                    i = null,
19993                    o = t.apply(n, r)
19994                }
19995                ,
19996                function() {
19997                    var u = new Date
19998                      , l = e - (u - a);
19999                    return n = this,
20000                    r = arguments,
20001                    l <= 0 ? (clearTimeout(i),
20002                    i = null,
20003                    a = u,
20004                    o = t.apply(n, r)) : i || (i = setTimeout(s, l)),
20005                    o
20006                }
20007            },
vendor: 17,182 bytes, lines 20008-20498
20008            stringify: function(t) {
20009                return e.isString(t) ? t : JSON.stringify(t)
20010            },
20011            noop: function() {}
20012        }
20013    }()
20014      , n = function() {
20015        "use strict";
20016        var t = {
20017            wrapper: "twitter-typeahead",
20018            input: "tt-input",
20019            hint: "tt-hint",
20020            menu: "tt-menu",
20021            dataset: "tt-dataset",
20022            suggestion: "tt-suggestion",
20023            selectable: "tt-selectable",
20024            empty: "tt-empty",
20025            open: "tt-open",
20026            cursor: "tt-cursor",
20027            highlight: "tt-highlight"
20028        };
20029        return n;
20030        function n(n) {
20031            var a, s;
20032            return s = e.mixin({}, t, n),
20033            a = {
20034                css: o(),
20035                classes: s,
20036                html: r(s),
20037                selectors: i(s)
20038            },
20039            {
20040                css: a.css,
20041                html: a.html,
20042                classes: a.classes,
20043                selectors: a.selectors,
20044                mixin: function(t) {
20045                    e.mixin(t, a)
20046                }
20047            }
20048        }
20049        function r(t) {
20050            return {
20051                wrapper: '<span class="' + t.wrapper + '"></span>',
20052                menu: '<div class="' + t.menu + '"></div>'
20053            }
20054        }
20055        function i(t) {
20056            var n = {};
20057            return e.each(t, function(t, e) {
20058                n[e] = "." + t
20059            }),
20060            n
20061        }
20062        function o() {
20063            var t = {
20064                wrapper: {
20065                    position: "relative",
20066                    display: "inline-block"
20067                },
20068                hint: {
20069                    position: "absolute",
20070                    top: "0",
20071                    left: "0",
20072                    borderColor: "transparent",
20073                    boxShadow: "none",
20074                    opacity: "1"
20075                },
20076                input: {
20077                    position: "relative",
20078                    verticalAlign: "top",
20079                    backgroundColor: "transparent"
20080                },
20081                inputWithNoHint: {
20082                    position: "relative",
20083                    verticalAlign: "top"
20084                },
20085                menu: {
20086                    position: "absolute",
20087                    top: "100%",
20088                    left: "0",
20089                    zIndex: "100",
20090                    display: "none"
20091                },
20092                ltr: {
20093                    left: "0",
20094                    right: "auto"
20095                },
20096                rtl: {
20097                    left: "auto",
20098                    right: " 0"
20099                }
20100            };
20101            return e.isMsie() && e.mixin(t.input, {
20102                backgroundImage: "url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)"
20103            }),
20104            t
20105        }
20106    }()
20107      , r = function() {
20108        "use strict";
20109        var n, r;
20110        n = "typeahead:",
20111        r = {
20112            render: "rendered",
20113            cursorchange: "cursorchanged",
20114            select: "selected",
20115            autocomplete: "autocompleted"
20116        };
20117        function i(e) {
20118            e && e.el || t.error("EventBus initialized without el"),
20119            this.$el = t(e.el)
20120        }
20121        return e.mixin(i.prototype, {
20122            _trigger: function(e, r) {
20123                var i;
20124                return i = t.Event(n + e),
20125                (r = r || []).unshift(i),
20126                this.$el.trigger.apply(this.$el, r),
20127                i
20128            },
20129            before: function(t) {
20130                var e, n;
20131                return e = [].slice.call(arguments, 1),
20132                n = this._trigger("before" + t, e),
20133                n.isDefaultPrevented()
20134            },
20135            trigger: function(t) {
20136                var e;
20137                this._trigger(t, [].slice.call(arguments, 1)),
20138                (e = r[t]) && this._trigger(e, [].slice.call(arguments, 1))
20139            }
20140        }),
20141        i
20142    }()
20143      , i = function() {
20144        "use strict";
20145        var t = /\s+/
20146          , e = function() {
20147            var t;
20148            if (window.setImmediate) {
20149                t = function t(e) {
20150                    setImmediate(function() {
20151                        e()
20152                    })
20153                }
20154            } else {
20155                t = function t(e) {
20156                    setTimeout(function() {
20157                        e()
20158                    }, 0)
20159                }
20160            }
20161            return t
20162        }();
20163        return {
20164            onSync: i,
20165            onAsync: r,
20166            off: o,
20167            trigger: a
20168        };
20169        function n(e, n, r, i) {
20170            var o;
20171            if (!r)
20172                return this;
20173            for (n = n.split(t),
20174            r = i ? u(r, i) : r,
20175            this._callbacks = this._callbacks || {}; o = n.shift(); )
20176                this._callbacks[o] = this._callbacks[o] || {
20177                    sync: [],
20178                    async: []
20179                },
20180                this._callbacks[o][e].push(r);
20181            return this
20182        }
20183        function r(t, e, r) {
20184            return n.call(this, "async", t, e, r)
20185        }
20186        function i(t, e, r) {
20187            return n.call(this, "sync", t, e, r)
20188        }
20189        function o(e) {
20190            var n;
20191            if (!this._callbacks)
20192                return this;
20193            for (e = e.split(t); n = e.shift(); )
20194                delete this._callbacks[n];
20195            return this
20196        }
20197        function a(n) {
20198            var r, i, o, a, u;
20199            if (!this._callbacks)
20200                return this;
20201            for (n = n.split(t),
20202            o = [].slice.call(arguments, 1); (r = n.shift()) && (i = this._callbacks[r]); )
20203                a = s(i.sync, this, [r].concat(o)),
20204                u = s(i.async, this, [r].concat(o)),
20205                a() && e(u);
20206            return this
20207        }
20208        function s(t, e, n) {
20209            return r;
20210            function r() {
20211                for (var r, i = 0, o = t.length; !r && i < o; i += 1)
20212                    r = !1 === t[i].apply(e, n);
20213                return !r
20214            }
20215        }
20216        function u(t, e) {
20217            return t.bind ? t.bind(e) : function() {
20218                t.apply(e, [].slice.call(arguments, 0))
20219            }
20220        }
20221    }()
20222      , o = function(t) {
20223        "use strict";
20224        var n = {
20225            node: null,
20226            pattern: null,
20227            tagName: "strong",
20228            className: null,
20229            wordsOnly: !1,
20230            caseSensitive: !1
20231        };
20232        return function(i) {
20233            var o;
20234            i = e.mixin({}, n, i);
20235            function a(e) {
20236                var n, r, a;
20237                return (n = o.exec(e.data)) && (a = t.createElement(i.tagName),
20238                i.className && (a.className = i.className),
20239                r = e.splitText(n.index),
20240                r.splitText(n[0].length),
20241                a.appendChild(r.cloneNode(!0)),
20242                e.parentNode.replaceChild(a, r)),
20243                !!n
20244            }
20245            function s(t, e) {
20246                for (var n, r = 0; r < t.childNodes.length; r++)
20247                    n = t.childNodes[r],
20248                    3 === n.nodeType ? r += e(n) ? 1 : 0 : s(n, e)
20249            }
20250            i.node && i.pattern && (i.pattern = e.isArray(i.pattern) ? i.pattern : [i.pattern],
20251            o = r(i.pattern, i.caseSensitive, i.wordsOnly),
20252            s(i.node, a))
20253        }
20254        ;
20255        function r(t, n, r) {
20256            for (var i, o = [], a = 0, s = t.length; a < s; a++)
20257                o.push(e.escapeRegExChars(t[a]));
20258            return i = r ? "\\b(" + o.join("|") + ")\\b" : "(" + o.join("|") + ")",
20259            n ? new RegExp(i) : new RegExp(i,"i")
20260        }
20261    }(window.document)
20262      , a = function() {
20263        "use strict";
20264        var n;
20265        n = {
20266            9: "tab",
20267            27: "esc",
20268            37: "left",
20269            39: "right",
20270            13: "enter",
20271            38: "up",
20272            40: "down"
20273        };
20274        function r(n, r) {
20275            n = n || {},
20276            n.input || t.error("input is missing"),
20277            r.mixin(this),
20278            this.$hint = t(n.hint),
20279            this.$input = t(n.input),
20280            this.query = this.$input.val(),
20281            this.queryWhenFocused = this.hasFocus() ? this.query : null,
20282            this.$overflowHelper = o(this.$input),
20283            this._checkLanguageDirection(),
20284            0 === this.$hint.length && (this.setHint = this.getHint = this.clearHint = this.clearHintIfInvalid = e.noop)
20285        }
20286        return r.normalizeQuery = function(t) {
20287            return e.toStr(t).replace(/^\s*/g, "").replace(/\s{2,}/g, " ")
20288        }
20289        ,
20290        e.mixin(r.prototype, i, {
20291            _onBlur: function() {
20292                this.resetInputValue(),
20293                this.trigger("blurred")
20294            },
20295            _onFocus: function() {
20296                this.queryWhenFocused = this.query,
20297                this.trigger("focused")
20298            },
20299            _onKeydown: function(t) {
20300                var e = n[t.which || t.keyCode];
20301                this._managePreventDefault(e, t),
20302                e && this._shouldTrigger(e, t) && this.trigger(e + "Keyed", t)
20303            },
20304            _onInput: function() {
20305                this._setQuery(this.getInputValue()),
20306                this.clearHintIfInvalid(),
20307                this._checkLanguageDirection()
20308            },
20309            _managePreventDefault: function(t, e) {
20310                var n;
20311                switch (t) {
20312                case "up":
20313                case "down":
20314                    n = !s(e);
20315                    break;
20316                default:
20317                    n = !1
20318                }
20319                n && e.preventDefault()
20320            },
20321            _shouldTrigger: function(t, e) {
20322                var n;
20323                switch (t) {
20324                case "tab":
20325                    n = !s(e);
20326                    break;
20327                default:
20328                    n = !0
20329                }
20330                return n
20331            },
20332            _checkLanguageDirection: function() {
20333                var t = (this.$input.css("direction") || "ltr").toLowerCase();
20334                this.dir !== t && (this.dir = t,
20335                this.$hint.attr("dir", t),
20336                this.trigger("langDirChanged", t))
20337            },
20338            _setQuery: function(t, e) {
20339                var n, r;
20340                n = a(t, this.query),
20341                r = !!n && this.query.length !== t.length,
20342                this.query = t,
20343                e || n ? !e && r && this.trigger("whitespaceChanged", this.query) : this.trigger("queryChanged", this.query)
20344            },
20345            bind: function() {
20346                var t, r, i, o, a = this;
20347                return t = e.bind(this._onBlur, this),
20348                r = e.bind(this._onFocus, this),
20349                i = e.bind(this._onKeydown, this),
20350                o = e.bind(this._onInput, this),
20351                this.$input.on("blur.tt", t).on("focus.tt", r).on("keydown.tt", i),
20352                !e.isMsie() || e.isMsie() > 9 ? this.$input.on("input.tt", o) : this.$input.on("keydown.tt keypress.tt cut.tt paste.tt", function(t) {
20353                    n[t.which || t.keyCode] || e.defer(e.bind(a._onInput, a, t))
20354                }),
20355                this
20356            },
20357            focus: function() {
20358                this.$input.focus()
20359            },
20360            blur: function() {
20361                this.$input.blur()
20362            },
20363            getLangDir: function() {
20364                return this.dir
20365            },
20366            getQuery: function() {
20367                return this.query || ""
20368            },
20369            setQuery: function(t, e) {
20370                this.setInputValue(t),
20371                this._setQuery(t, e)
20372            },
20373            hasQueryChangedSinceLastFocus: function() {
20374                return this.query !== this.queryWhenFocused
20375            },
20376            getInputValue: function() {
20377                return this.$input.val()
20378            },
20379            setInputValue: function(t) {
20380                this.$input.val(t),
20381                this.clearHintIfInvalid(),
20382                this._checkLanguageDirection()
20383            },
20384            resetInputValue: function() {
20385                this.setInputValue(this.query)
20386            },
20387            getHint: function() {
20388                return this.$hint.val()
20389            },
20390            setHint: function(t) {
20391                this.$hint.val(t)
20392            },
20393            clearHint: function() {
20394                this.setHint("")
20395            },
20396            clearHintIfInvalid: function() {
20397                var t, e, n, r;
20398                t = this.getInputValue(),
20399                e = this.getHint(),
20400                n = t !== e && 0 === e.indexOf(t),
20401                !(r = "" !== t && n && !this.hasOverflow()) && this.clearHint()
20402            },
20403            hasFocus: function() {
20404                return this.$input.is(":focus")
20405            },
20406            hasOverflow: function() {
20407                var t = this.$input.width() - 2;
20408                return this.$overflowHelper.text(this.getInputValue()),
20409                this.$overflowHelper.width() >= t
20410            },
20411            isCursorAtEnd: function() {
20412                var t, n, r;
20413                return t = this.$input.val().length,
20414                n = this.$input[0].selectionStart,
20415                e.isNumber(n) ? n === t : !document.selection || (r = document.selection.createRange(),
20416                r.moveStart("character", -t),
20417                t === r.text.length)
20418            },
20419            destroy: function() {
20420                this.$hint.off(".tt"),
20421                this.$input.off(".tt"),
20422                this.$overflowHelper.remove(),
20423                this.$hint = this.$input = this.$overflowHelper = t("<div>")
20424            }
20425        }),
20426        r;
20427        function o(e) {
20428            return t('<pre aria-hidden="true"></pre>').css({
20429                position: "absolute",
20430                visibility: "hidden",
20431                whiteSpace: "pre",
20432                fontFamily: e.css("font-family"),
20433                fontSize: e.css("font-size"),
20434                fontStyle: e.css("font-style"),
20435                fontVariant: e.css("font-variant"),
20436                fontWeight: e.css("font-weight"),
20437                wordSpacing: e.css("word-spacing"),
20438                letterSpacing: e.css("letter-spacing"),
20439                textIndent: e.css("text-indent"),
20440                textRendering: e.css("text-rendering"),
20441                textTransform: e.css("text-transform")
20442            }).insertAfter(e)
20443        }
20444        function a(t, e) {
20445            return r.normalizeQuery(t) === r.normalizeQuery(e)
20446        }
20447        function s(t) {
20448            return t.altKey || t.ctrlKey || t.metaKey || t.shiftKey
20449        }
20450    }()
20451      , s = function() {
20452        "use strict";
20453        var n, r;
20454        n = {
20455            val: "tt-selectable-display",
20456            obj: "tt-selectable-object"
20457        },
20458        r = e.getIdGenerator();
20459        function a(n, i) {
20460            n = n || {},
20461            n.templates = n.templates || {},
20462            n.templates.notFound = n.templates.notFound || n.templates.empty,
20463            n.source || t.error("missing source"),
20464            n.node || t.error("missing node"),
20465            n.name && !l(n.name) && t.error("invalid dataset name: " + n.name),
20466            i.mixin(this),
20467            this.highlight = !!n.highlight,
20468            this.name = n.name || r(),
20469            this.limit = n.limit || 5,
20470            this.displayFn = s(n.display || n.displayKey),
20471            this.templates = u(n.templates, this.displayFn),
20472            this.source = n.source.__ttAdapter ? n.source.__ttAdapter() : n.source,
20473            this.async = e.isUndefined(n.async) ? this.source.length > 2 : !!n.async,
20474            this._resetLastSuggestion(),
20475            this.$el = t(n.node).addClass(this.classes.dataset).addClass(this.classes.dataset + "-" + this.name)
20476        }
20477        return a.extractData = function(e) {
20478            var r = t(e);
20479            return r.data(n.obj) ? {
20480                val: r.data(n.val) || "",
20481                obj: r.data(n.obj) || null
20482            } : null
20483        }
20484        ,
20485        e.mixin(a.prototype, i, {
20486            _overwrite: function(t, e) {
20487                e = e || [],
20488                e.length ? this._renderSuggestions(t, e) : this.async && this.templates.pending ? this._renderPending(t) : !this.async && this.templates.notFound ? this._renderNotFound(t) : this._empty(),
20489                this.trigger("rendered", this.name, e, !1)
20490            },
20491            _append: function(t, e) {
20492                e = e || [],
20493                e.length && this.$lastSuggestion.length ? this._appendSuggestions(t, e) : e.length ? this._renderSuggestions(t, e) : !this.$lastSuggestion.length && this.templates.notFound && this._renderNotFound(t),
20494                this.trigger("rendered", this.name, e, !0)
20495            },
20496            _renderSuggestions: function(t, e) {
20497                var n;
20498                n = this._getSuggestionsFragment(t, e),
20499                this.$lastSuggestion = n.children().last(),
20500                this.$el.html(n).prepend(this._getHeader(t, e)).append(this._getFooter(t, e))
20501            },
20502            _appendSuggestions: function(t, e) {
20503                var n, r;
20504                n = this._getSuggestionsFragment(t, e),
20505                r = n.children().last(),
20506                this.$lastSuggestion.after(n),
20507                this.$lastSuggestion = r
20508            },
20509            _renderPending: function(t) {
20510                var e = this.templates.pending;
20511                this._resetLastSuggestion(),
20512                e && this.$el.html(e({
20513                    query: t,
20514                    dataset: this.name
20515                }))
20516            },
20517            _renderNotFound: function(t) {
20518                var e = this.templates.notFound;
20519                this._resetLastSuggestion(),
20520                e && this.$el.html(e({
20521                    query: t,
20522                    dataset: this.name
20523                }))
20524            },
20525            _empty: function() {
20526                this.$el.empty(),
20527                this._resetLastSuggestion()
20528            },
20529            _getSuggestionsFragment: function(r, i) {
20530                var a, s = this;
20531                return a = document.createDocumentFragment(),
20532                e.each(i, function(e) {
20533                    var i, o;
20534                    o = s._injectQuery(r, e),
20535                    i = t(s.templates.suggestion(o)).data(n.obj, e).data(n.val, s.displayFn(e)).addClass(s.classes.suggestion + " " + s.classes.selectable),
20536                    a.appendChild(i[0])
20537                }),
20538                this.highlight && o({
20539                    className: this.classes.highlight,
20540                    node: a,
20541                    pattern: r
20542                }),
20543                t(a)
20544            },
20545            _getFooter: function(t, e) {
20546                return this.templates.footer ? this.templates.footer({
20547                    query: t,
20548                    suggestions: e,
20549                    dataset: this.name
20550                }) : null
20551            },
20552            _getHeader: function(t, e) {
20553                return this.templates.header ? this.templates.header({
20554                    query: t,
20555                    suggestions: e,
20556                    dataset: this.name
20557                }) : null
20558            },
20559            _resetLastSuggestion: function() {
20560                this.$lastSuggestion = t()
20561            },
20562            _injectQuery: function(t, n) {
20563                return e.isObject(n) ? e.mixin({
20564                    _query: t
20565                }, n) : n
20566            },
20567            update: function(e) {
20568                var n = this
20569                  , r = !1
20570                  , i = !1
20571                  , o = 0;
20572                this.cancel(),
20573                this.cancel = function() {
20574                    r = !0,
20575                    n.cancel = t.noop,
20576                    n.async && n.trigger("asyncCanceled", e)
20577                }
20578                ,
20579                this.source(e, a, s),
20580                !i && a([]);
20581                function a(t) {
20582                    i || (i = !0,
20583                    t = (t || []).slice(0, n.limit),
20584                    o = t.length,
20585                    n._overwrite(e, t),
20586                    o < n.limit && n.async && n.trigger("asyncRequested", e))
20587                }
20588                function s(i) {
20589                    i = i || [],
20590                    !r && o < n.limit && (n.cancel = t.noop,
20591                    o += i.length,
20592                    n._append(e, i.slice(0, n.limit - o)),
20593                    n.async && n.trigger("asyncReceived", e))
20594                }
20595            },
20596            cancel: t.noop,
20597            clear: function() {
20598                this._empty(),
20599                this.cancel(),
20600                this.trigger("cleared")
20601            },
20602            isEmpty: function() {
20603                return this.$el.is(":empty")
20604            },
20605            destroy: function() {
20606                this.$el = t("<div>")
20607            }
20608        }),
20609        a;
20610        function s(t) {
20611            return t = t || e.stringify,
20612            e.isFunction(t) ? t : n;
20613            function n(e) {
20614                return e[t]
20615            }
20616        }
20617        function u(n, r) {
20618            return {
20619                notFound: n.notFound && e.templatify(n.notFound),
20620                pending: n.pending && e.templatify(n.pending),
20621                header: n.header && e.templatify(n.header),
20622                footer: n.footer && e.templatify(n.footer),
20623                suggestion: n.suggestion || i
20624            };
20625            function i(e) {
20626                return t("<div>").text(r(e))
20627            }
20628        }
20629        function l(t) {
20630            return /^[_a-zA-Z0-9-]+$/.test(t)
20631        }
20632    }()
20633      , u = function() {
20634        "use strict";
20635        function n(n, r) {
20636            var i = this;
20637            n = n || {},
20638            n.node || t.error("node is required"),
20639            r.mixin(this),
20640            this.$node = t(n.node),
20641            this.query = null,
20642            this.datasets = e.map(n.datasets, o);
20643            function o(e) {
20644                var n = i.$node.find(e.node).first();
20645                return e.node = n.length ? n : t("<div>").appendTo(i.$node),
20646                new s(e,r)
20647            }
20648        }
20649        return e.mixin(n.prototype, i, {
20650            _onSelectableClick: function(e) {
20651                this.trigger("selectableClicked", t(e.currentTarget))
20652            },
20653            _onRendered: function(t, e, n, r) {
20654                this.$node.toggleClass(this.classes.empty, this._allDatasetsEmpty()),
20655                this.trigger("datasetRendered", e, n, r)
20656            },
20657            _onCleared: function() {
20658                this.$node.toggleClass(this.classes.empty, this._allDatasetsEmpty()),
20659                this.trigger("datasetCleared")
20660            },
20661            _propagate: function() {
20662                this.trigger.apply(this, arguments)
20663            },
20664            _allDatasetsEmpty: function() {
20665                return e.every(this.datasets, t);
20666                function t(t) {
20667                    return t.isEmpty()
20668                }
20669            },
20670            _getSelectables: function() {
20671                return this.$node.find(this.selectors.selectable)
20672            },
20673            _removeCursor: function() {
20674                var t = this.getActiveSelectable();
20675                t && t.removeClass(this.classes.cursor)
20676            },
20677            _ensureVisible: function(t) {
20678                var e, n, r, i;
20679                e = t.position().top,
20680                n = e + t.outerHeight(!0),
20681                r = this.$node.scrollTop(),
20682                i = this.$node.height() + parseInt(this.$node.css("paddingTop"), 10) + parseInt(this.$node.css("paddingBottom"), 10),
20683                e < 0 ? this.$node.scrollTop(r + e) : i < n && this.$node.scrollTop(r + (n - i))
20684            },
20685            bind: function() {
20686                var t, n = this;
20687                return t = e.bind(this._onSelectableClick, this),
20688                this.$node.on("click.tt", this.selectors.selectable, t),
20689                e.each(this.datasets, function(t) {
20690                    t.onSync("asyncRequested", n._propagate, n).onSync("asyncCanceled", n._propagate, n).onSync("asyncReceived", n._propagate, n).onSync("rendered", n._onRendered, n).onSync("cleared", n._onCleared, n)
20691                }),
20692                this
20693            },
20694            isOpen: function() {
20695                return this.$node.hasClass(this.classes.open)
20696            },
20697            open: function() {
20698                this.$node.addClass(this.classes.open)
20699            },
20700            close: function() {
20701                this.$node.removeClass(this.classes.open),
20702                this._removeCursor()
20703            },
20704            setLanguageDirection: function(t) {
20705                this.$node.attr("dir", t)
20706            },
20707            selectableRelativeToCursor: function(t) {
20708                var e, n, r, i;
20709                return n = this.getActiveSelectable(),
20710                e = this._getSelectables(),
20711                r = n ? e.index(n) : -1,
20712                i = r + t,
20713                i = (i + 1) % (e.length + 1) - 1,
20714                i = i < -1 ? e.length - 1 : i,
20715                -1 === i ? null : e.eq(i)
20716            },
20717            setCursor: function(t) {
20718                this._removeCursor(),
20719                (t = t && t.first()) && (t.addClass(this.classes.cursor),
20720                this._ensureVisible(t))
20721            },
20722            getSelectableData: function(t) {
20723                return t && t.length ? s.extractData(t) : null
20724            },
20725            getActiveSelectable: function() {
20726                var t = this._getSelectables().filter(this.selectors.cursor).first();
20727                return t.length ? t : null
20728            },
20729            getTopSelectable: function() {
20730                var t = this._getSelectables().first();
20731                return t.length ? t : null
20732            },
20733            update: function(t) {
20734                var n = t !== this.query;
20735                return n && (this.query = t,
20736                e.each(this.datasets, r)),
20737                n;
20738                function r(e) {
20739                    e.update(t)
20740                }
20741            },
20742            empty: function() {
20743                e.each(this.datasets, t),
20744                this.query = null,
20745                this.$node.addClass(this.classes.empty);
20746                function t(t) {
20747                    t.clear()
20748                }
20749            },
20750            destroy: function() {
20751                this.$node.off(".tt"),
20752                this.$node = t("<div>"),
20753                e.each(this.datasets, n);
20754                function n(t) {
20755                    t.destroy()
20756                }
20757            }
20758        }),
20759        n
20760    }()
20761      , l = function() {
20762        "use strict";
20763        var t = u.prototype;
20764        function n() {
20765            u.apply(this, [].slice.call(arguments, 0))
20766        }
20767        return e.mixin(n.prototype, u.prototype, {
20768            open: function() {
20769                return !this._allDatasetsEmpty() && this._show(),
20770                t.open.apply(this, [].slice.call(arguments, 0))
20771            },
20772            close: function() {
20773                return this._hide(),
20774                t.close.apply(this, [].slice.call(arguments, 0))
20775            },
20776            _onRendered: function() {
20777                return this._allDatasetsEmpty() ? this._hide() : this.isOpen() && this._show(),
20778                t._onRendered.apply(this, [].slice.call(arguments, 0))
20779            },
20780            _onCleared: function() {
20781                return this._allDatasetsEmpty() ? this._hide() : this.isOpen() && this._show(),
20782                t._onCleared.apply(this, [].slice.call(arguments, 0))
20783            },
20784            setLanguageDirection: function(e) {
vendor: 6,553 bytes, lines 20785-20922
20785                return this.$node.css("ltr" === e ? this.css.ltr : this.css.rtl),
20786                t.setLanguageDirection.apply(this, [].slice.call(arguments, 0))
20787            },
20788            _hide: function() {
20789                this.$node.hide()
20790            },
20791            _show: function() {
20792                this.$node.css("display", "block")
20793            }
20794        }),
20795        n
20796    }()
20797      , c = function() {
20798        "use strict";
20799        function n(n, i) {
20800            var o, a, s, u, l, c, h, d, f, p, g;
20801            n = n || {},
20802            n.input || t.error("missing input"),
20803            n.menu || t.error("missing menu"),
20804            n.eventBus || t.error("missing event bus"),
20805            i.mixin(this),
20806            this.eventBus = n.eventBus,
20807            this.minLength = e.isNumber(n.minLength) ? n.minLength : 1,
20808            this.input = n.input,
20809            this.menu = n.menu,
20810            this.enabled = !0,
20811            this.active = !1,
20812            this.input.hasFocus() && this.activate(),
20813            this.dir = this.input.getLangDir(),
20814            this._hacks(),
20815            this.menu.bind().onSync("selectableClicked", this._onSelectableClicked, this).onSync("asyncRequested", this._onAsyncRequested, this).onSync("asyncCanceled", this._onAsyncCanceled, this).onSync("asyncReceived", this._onAsyncReceived, this).onSync("datasetRendered", this._onDatasetRendered, this).onSync("datasetCleared", this._onDatasetCleared, this),
20816            o = r(this, "activate", "open", "_onFocused"),
20817            a = r(this, "deactivate", "_onBlurred"),
20818            s = r(this, "isActive", "isOpen", "_onEnterKeyed"),
20819            u = r(this, "isActive", "isOpen", "_onTabKeyed"),
20820            l = r(this, "isActive", "_onEscKeyed"),
20821            c = r(this, "isActive", "open", "_onUpKeyed"),
20822            h = r(this, "isActive", "open", "_onDownKeyed"),
20823            d = r(this, "isActive", "isOpen", "_onLeftKeyed"),
20824            f = r(this, "isActive", "isOpen", "_onRightKeyed"),
20825            p = r(this, "_openIfActive", "_onQueryChanged"),
20826            g = r(this, "_openIfActive", "_onWhitespaceChanged"),
20827            this.input.bind().onSync("focused", o, this).onSync("blurred", a, this).onSync("enterKeyed", s, this).onSync("tabKeyed", u, this).onSync("escKeyed", l, this).onSync("upKeyed", c, this).onSync("downKeyed", h, this).onSync("leftKeyed", d, this).onSync("rightKeyed", f, this).onSync("queryChanged", p, this).onSync("whitespaceChanged", g, this).onSync("langDirChanged", this._onLangDirChanged, this)
20828        }
20829        return e.mixin(n.prototype, {
20830            _hacks: function() {
20831                var n, r;
20832                n = this.input.$input || t("<div>"),
20833                r = this.menu.$node || t("<div>"),
20834                n.on("blur.tt", function(t) {
20835                    var i, o, a;
20836                    i = document.activeElement,
20837                    o = r.is(i),
20838                    a = r.has(i).length > 0,
20839                    e.isMsie() && (o || a) && (t.preventDefault(),
20840                    t.stopImmediatePropagation(),
20841                    e.defer(function() {
20842                        n.focus()
20843                    }))
20844                }),
20845                r.on("mousedown.tt", function(t) {
20846                    t.preventDefault()
20847                })
20848            },
20849            _onSelectableClicked: function(t, e) {
20850                this.select(e)
20851            },
20852            _onDatasetCleared: function() {
20853                this._updateHint()
20854            },
20855            _onDatasetRendered: function(t, e, n, r) {
20856                this._updateHint(),
20857                this.eventBus.trigger("render", n, r, e)
20858            },
20859            _onAsyncRequested: function(t, e, n) {
20860                this.eventBus.trigger("asyncrequest", n, e)
20861            },
20862            _onAsyncCanceled: function(t, e, n) {
20863                this.eventBus.trigger("asynccancel", n, e)
20864            },
20865            _onAsyncReceived: function(t, e, n) {
20866                this.eventBus.trigger("asyncreceive", n, e)
20867            },
20868            _onFocused: function() {
20869                this._minLengthMet() && this.menu.update(this.input.getQuery())
20870            },
20871            _onBlurred: function() {
20872                this.input.hasQueryChangedSinceLastFocus() && this.eventBus.trigger("change", this.input.getQuery())
20873            },
20874            _onEnterKeyed: function(t, e) {
20875                var n;
20876                (n = this.menu.getActiveSelectable()) && this.select(n) && e.preventDefault()
20877            },
20878            _onTabKeyed: function(t, e) {
20879                var n;
20880                (n = this.menu.getActiveSelectable()) ? this.select(n) && e.preventDefault() : (n = this.menu.getTopSelectable()) && this.autocomplete(n) && e.preventDefault()
20881            },
20882            _onEscKeyed: function() {
20883                this.close()
20884            },
20885            _onUpKeyed: function() {
20886                this.moveCursor(-1)
20887            },
20888            _onDownKeyed: function() {
20889                this.moveCursor(1)
20890            },
20891            _onLeftKeyed: function() {
20892                "rtl" === this.dir && this.input.isCursorAtEnd() && this.autocomplete(this.menu.getTopSelectable())
20893            },
20894            _onRightKeyed: function() {
20895                "ltr" === this.dir && this.input.isCursorAtEnd() && this.autocomplete(this.menu.getTopSelectable())
20896            },
20897            _onQueryChanged: function(t, e) {
20898                this._minLengthMet(e) ? this.menu.update(e) : this.menu.empty()
20899            },
20900            _onWhitespaceChanged: function() {
20901                this._updateHint()
20902            },
20903            _onLangDirChanged: function(t, e) {
20904                this.dir !== e && (this.dir = e,
20905                this.menu.setLanguageDirection(e))
20906            },
20907            _openIfActive: function() {
20908                this.isActive() && this.open()
20909            },
20910            _minLengthMet: function(t) {
20911                return t = e.isString(t) ? t : this.input.getQuery() || "",
20912                t.length >= this.minLength
20913            },
20914            _updateHint: function() {
20915                var t, n, r, i, o, s, u;
20916                t = this.menu.getTopSelectable(),
20917                n = this.menu.getSelectableData(t),
20918                r = this.input.getInputValue(),
20919                !n || e.isBlankString(r) || this.input.hasOverflow() ? this.input.clearHint() : (i = a.normalizeQuery(r),
20920                o = e.escapeRegExChars(i),
20921                s = new RegExp("^(?:" + o + ")(.+$)","i"),
20922                (u = s.exec(n.val)) && this.input.setHint(r + u[1])
20922)
20923            },
20924            isEnabled: function() {
20925                return this.enabled
20926            },
20927            enable: function() {
20928                this.enabled = !0
20929            },
20930            disable: function() {
20931                this.enabled = !1
20932            },
20933            isActive: function() {
20934                return this.active
20935            },
20936            activate: function() {
20937                return !!this.isActive() || !(!this.isEnabled() || this.eventBus.before("active")) && (this.active = !0,
20938                this.eventBus.trigger("active"),
20939                !0)
20940            },
20941            deactivate: function() {
20942                return !this.isActive() || !this.eventBus.before("idle") && (this.active = !1,
20943                this.close(),
20944                this.eventBus.trigger("idle"),
20945                !0)
20946            },
20947            isOpen: function() {
20948                return this.menu.isOpen()
20949            },
20950            open: function() {
20951                return this.isOpen() || this.eventBus.before("open") || (this.menu.open(),
20952                this._updateHint(),
20953                this.eventBus.trigger("open")),
20954                this.isOpen()
20955            },
20956            close: function() {
20957                return this.isOpen() && !this.eventBus.before("close") && (this.menu.close(),
20958                this.input.clearHint(),
20959                this.input.resetInputValue(),
20960                this.eventBus.trigger("close")),
20961                !this.isOpen()
20962            },
20963            setVal: function(t) {
20964                this.input.setQuery(e.toStr(t))
20965            },
20966            getVal: function() {
20967                return this.input.getQuery()
20968            },
20969            select: function(t) {
20970                var e = this.menu.getSelectableData(t);
20971                return !(!e || this.eventBus.before("select", e.obj)) && (this.input.setQuery(e.val, !0),
20972                this.eventBus.trigger("select", e.obj),
20973                this.close(),
20974                !0)
20975            },
20976            autocomplete: function(t) {
20977                var e, n;
20978                return e = this.input.getQuery(),
20979                n = this.menu.getSelectableData(t),
20980                !(!(n && e !== n.val) || this.eventBus.before("autocomplete", n.obj)) && (this.input.setQuery(n.val),
20981                this.eventBus.trigger("autocomplete", n.obj),
20982                !0)
20983            },
20984            moveCursor: function(t) {
20985                var e, n, r, i;
20986                return e = this.input.getQuery(),
20987                n = this.menu.selectableRelativeToCursor(t),
20988                r = this.menu.getSelectableData(n),
20989                i = r ? r.obj : null,
20990                !(this._minLengthMet() && this.menu.update(e)) && !this.eventBus.before("cursorchange", i) && (this.menu.setCursor(n),
20991                r ? this.input.setInputValue(r.val) : (this.input.resetInputValue(),
20992                this._updateHint()),
20993                this.eventBus.trigger("cursorchange", i),
20994                !0)
20995            },
20996            destroy: function() {
20997                this.input.destroy(),
20998                this.menu.destroy()
20999            }
21000        }),
21001        n;
21002        function r(t) {
21003            var n = [].slice.call(arguments, 1);
21004            return function() {
21005                var r = [].slice.call(arguments);
21006                e.each(n, function(e) {
21007                    return t[e].apply(t, r)
21008                })
21009            }
21010        }
21011    }();
21012    !function() {
21013        "use strict";
21014        var i, o, s;
21015        i = t.fn.typeahead,
21016        o = {
21017            www: "tt-www",
21018            attrs: "tt-attrs",
21019            typeahead: "tt-typeahead"
21020        },
21021        s = {
21022            initialize: function(i, s) {
21023                var h;
21024                return s = e.isArray(s) ? s : [].slice.call(arguments, 1),
21025                i = i || {},
21026                h = n(i.classNames),
21027                this.each(p);
21028                function p() {
21029                    var n, p, g, y, v, b, w, x, _, C, k;
21030                    e.each(s, function(t) {
21031                        t.highlight = !!i.highlight
21032                    }),
21033                    n = t(this),
21034                    p = t(h.html.wrapper),
21035                    g = m(i.hint),
vendor: 4,613 bytes, lines 21036-21182
21036                    y = m(i.menu),
21037                    v = !1 !== i.hint && !g,
21038                    b = !1 !== i.menu && !y,
21039                    v && (g = d(n, h)),
21040                    b && (y = t(h.html.menu).css(h.css.menu)),
21041                    g && g.val(""),
21042                    n = f(n, h),
21043                    (v || b) && (p.css(h.css.wrapper),
21044                    n.css(v ? h.css.input : h.css.inputWithNoHint),
21045                    n.wrap(p).parent().prepend(v ? g : null).append(b ? y : null)),
21046                    k = b ? l : u,
21047                    w = new r({
21048                        el: n
21049                    }),
21050                    x = new a({
21051                        hint: g,
21052                        input: n
21053                    },h),
21054                    _ = new k({
21055                        node: y,
21056                        datasets: s
21057                    },h),
21058                    C = new c({
21059                        input: x,
21060                        menu: _,
21061                        eventBus: w,
21062                        minLength: i.minLength
21063                    },h),
21064                    n.data(o.www, h),
21065                    n.data(o.typeahead, C)
21066                }
21067            },
21068            isEnabled: function() {
21069                var t;
21070                return h(this.first(), function(e) {
21071                    t = e.isEnabled()
21072                }),
21073                t
21074            },
21075            enable: function() {
21076                return h(this, function(t) {
21077                    t.enable()
21078                }),
21079                this
21080            },
21081            disable: function() {
21082                return h(this, function(t) {
21083                    t.disable()
21084                }),
21085                this
21086            },
21087            isActive: function() {
21088                var t;
21089                return h(this.first(), function(e) {
21090                    t = e.isActive()
21091                }),
21092                t
21093            },
21094            activate: function() {
21095                return h(this, function(t) {
21096                    t.activate()
21097                }),
21098                this
21099            },
21100            deactivate: function() {
21101                return h(this, function(t) {
21102                    t.deactivate()
21103                }),
21104                this
21105            },
21106            isOpen: function() {
21107                var t;
21108                return h(this.first(), function(e) {
21109                    t = e.isOpen()
21110                }),
21111                t
21112            },
21113            open: function() {
21114                return h(this, function(t) {
21115                    t.open()
21116                }),
21117                this
21118            },
21119            close: function() {
21120                return h(this, function(t) {
21121                    t.close()
21122                }),
21123                this
21124            },
21125            select: function(e) {
21126                var n = !1
21127                  , r = t(e);
21128                return h(this.first(), function(t) {
21129                    n = t.select(r)
21130                }),
21131                n
21132            },
21133            autocomplete: function(e) {
21134                var n = !1
21135                  , r = t(e);
21136                return h(this.first(), function(t) {
21137                    n = t.autocomplete(r)
21138                }),
21139                n
21140            },
21141            moveCursor: function(t) {
21142                var e = !1;
21143                return h(this.first(), function(n) {
21144                    e = n.moveCursor(t)
21145                }),
21146                e
21147            },
21148            val: function(t) {
21149                var e;
21150                return arguments.length ? (h(this, function(e) {
21151                    e.setVal(t)
21152                }),
21153                this) : (h(this.first(), function(t) {
21154                    e = t.getVal()
21155                }),
21156                e)
21157            },
21158            destroy: function() {
21159                return h(this, function(t, e) {
21160                    g(e),
21161                    t.destroy()
21162                }),
21163                this
21164            }
21165        },
21166        t.fn.typeahead = function(t) {
21167            return s[t] ? s[t].apply(this, [].slice.call(arguments, 1)) : s.initialize.apply(this, arguments)
21168        }
21169        ,
21170        t.fn.typeahead.noConflict = function() {
21171            return t.fn.typeahead = i,
21172            this
21173        }
21174        ;
21175        function h(e, n) {
21176            e.each(function() {
21177                var e, r = t(this);
21178                (e = r.data(o.typeahead)) && n(e, r)
21179            })
21180        }
21181        function d(t, e) {
21182            return t.clone().addClass(e.classes.hint).removeData().css(e.css.hint).css(p(t)).prop("readonly", 
vendor: 1,915 bytes, lines 21182-21234
21182!0).removeAttr("id name placeholder required").attr({
21183                autocomplete: "off",
21184                spellcheck: "false",
21185                tabindex: -1
21186            })
21187        }
21188        function f(t, e) {
21189            t.data(o.attrs, {
21190                dir: t.attr("dir"),
21191                autocomplete: t.attr("autocomplete"),
21192                spellcheck: t.attr("spellcheck"),
21193                style: t.attr("style")
21194            }),
21195            t.addClass(e.classes.input).attr({
21196                autocomplete: "off",
21197                spellcheck: !1
21198            });
21199            try {
21200                !t.attr("dir") && t.attr("dir", "auto")
21201            } catch (t) {}
21202            return t
21203        }
21204        function p(t) {
21205            return {
21206                backgroundAttachment: t.css("background-attachment"),
21207                backgroundClip: t.css("background-clip"),
21208                backgroundColor: t.css("background-color"),
21209                backgroundImage: t.css("background-image"),
21210                backgroundOrigin: t.css("background-origin"),
21211                backgroundPosition: t.css("background-position"),
21212                backgroundRepeat: t.css("background-repeat"),
21213                backgroundSize: t.css("background-size")
21214            }
21215        }
21216        function g(t) {
21217            var n, r;
21218            n = t.data(o.www),
21219            r = t.parent().filter(n.selectors.wrapper),
21220            e.each(t.data(o.attrs), function(n, r) {
21221                e.isUndefined(n) ? t.removeAttr(r) : t.attr(r, n)
21222            }),
21223            t.removeData(o.typeahead).removeData(o.www).removeData(o.attr).removeClass(n.classes.input),
21224            r.length && (t.detach().insertAfter(r),
21225            r.remove())
21226        }
21227        function m(n) {
21228            var r, i;
21229            return r = e.isJQuery(n) || e.isElement(n),
21230            i = r ? t(n).first() : [],
21231            i.length ? i : null
21232        }
21233    }()
21234});

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.