PageSourceSearch

https://biletwise.com/assets/front/js/jq-b-n-v.js?v=5.25

js biletwise.com collected 2026-10-07 02:56:58 UTC 294,942 bytes, 6,030 lines download raw bytes

vendor: 27,742 bytes, lines 1-554
1/*
2 Copyright (C) Federico Zivolo 2017
3 Distributed under the MIT License (license terms are at http://opensource.org/licenses/MIT).
4 */(function (e, t) {
5  'object' == typeof exports && 'undefined' != typeof module ? module.exports = t() : 'function' == typeof define && define.amd ? define(t) : e.Popper = t()
6})(this, function () {
7  'use strict';
8  function e(e) {
9    return e && '[object Function]' === {}.toString.call(e)
10  }
11  function t(e, t) {
12    if (1 !== e.nodeType)
13      return [];
14    var o = window.getComputedStyle(e, null);
15    return t ? o[t] : o
16  }
17  function o(e) {
18    return 'HTML' === e.nodeName ? e : e.parentNode || e.host
19  }
20  function n(e) {
21    if (!e || -1 !== ['HTML', 'BODY', '#document'].indexOf(e.nodeName))
22      return window.document.body;
23    var i = t(e), r = i.overflow, p = i.overflowX, s = i.overflowY;
24    return /(auto|scroll)/.test(r + s + p) ? e : n(o(e))
25  }
26  function r(e) {
27    var o = e && e.offsetParent, i = o && o.nodeName;
28    return i && 'BODY' !== i && 'HTML' !== i ? -1 !== ['TD', 'TABLE'].indexOf(o.nodeName) && 'static' === t(o, 'position') ? r(o) : o : window.document.documentElement
29  }
30  function p(e) {
31    var t = e.nodeName;
32    return 'BODY' !== t && ('HTML' === t || r(e.firstElementChild) === e)
33  }
34  function s(e) {
35    return null === e.parentNode ? e : s(e.parentNode)
36  }
37  function d(e, t) {
38    if (!e || !e.nodeType || !t || !t.nodeType)
39      return window.document.documentElement;
40    var o = e.compareDocumentPosition(t) & Node.DOCUMENT_POSITION_FOLLOWING, i = o ? e : t, n = o ? t : e, a = document.createRange();
41    a.setStart(i, 0), a.setEnd(n, 0);
42    var f = a.commonAncestorContainer;
43    if (e !== f && t !== f || i.contains(n))
44      return p(f) ? f : r(f);
45    var l = s(e);
46    return l.host ? d(l.host, t) : d(e, s(t).host)
47  }
48  function a(e) {
49    var t = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : 'top', o = 'top' === t ? 'scrollTop' : 'scrollLeft', i = e.nodeName;
50    if ('BODY' === i || 'HTML' === i) {
51      var n = window.document.documentElement, r = window.document.scrollingElement || n;
52      return r[o]
53    }
54    return e[o]
55  }
56  function f(e, t) {
57    var o = 2 < arguments.length && void 0 !== arguments[2] && arguments[2], i = a(t, 'top'), n = a(t, 'left'), r = o ? -1 : 1;
58    return e.top += i * r, e.bottom += i * r, e.left += n * r, e.right += n * r, e
59  }
60  function l(e, t) {
61    var o = 'x' === t ? 'Left' : 'Top', i = 'Left' == o ? 'Right' : 'Bottom';
62    return +e['border' + o + 'Width'].split('px')[0] + +e['border' + i + 'Width'].split('px')[0]
63  }
64  function m(e, t, o, i) {
65    return _(t['offset' + e], o['client' + e], o['offset' + e], ie() ? o['offset' + e] + i['margin' + ('Height' === e ? 'Top' : 'Left')] + i['margin' + ('Height' === e ? 'Bottom' : 'Right')] : 0)
66  }
67  function h() {
68    var e = window.document.body, t = window.document.documentElement, o = ie() && window.getComputedStyle(t);
69    return { height: m('Height', e, t, o), width: m('Width', e, t, o) }
70  }
71  function c(e) {
72    return se({}, e, { right: e.left + e.width, bottom: e.top + e.height })
73  }
74  function g(e) {
75    var o = {};
76    if (ie())
77      try {
78        o = e.getBoundingClientRect();
79        var i = a(e, 'top'), n = a(e, 'left');
80        o.top += i, o.left += n, o.bottom += i, o.right += n
81      } catch (e) {
82      }
83    else
84      o = e.getBoundingClientRect();
85    var r = { left: o.left, top: o.top, width: o.right - o.left, height: o.bottom - o.top }, p = 'HTML' === e.nodeName ? h() : {}, s = p.width || e.clientWidth || r.right - r.left, d = p.height || e.clientHeight || r.bottom - r.top, f = e.offsetWidth - s, m = e.offsetHeight - d;
86    if (f || m) {
87      var g = t(e);
88      f -= l(g, 'x'), m -= l(g, 'y'), r.width -= f, r.height -= m
89    }
90    return c(r)
91  }
92  function u(e, o) {
93    var i = ie(), r = 'HTML' === o.nodeName, p = g(e), s = g(o), d = n(e), a = t(o), l = +a.borderTopWidth.split('px')[0], m = +a.borderLeftWidth.split('px')[0], h = c({ top: p.top - s.top - l, left: p.left - s.left - m, width: p.width, height: p.height });
94    if (h.marginTop = 0, h.marginLeft = 0, !i && r) {
95      var u = +a.marginTop.split('px')[0], b = +a.marginLeft.split('px')[0];
96      h.top -= l - u, h.bottom -= l - u, h.left -= m - b, h.right -= m - b, h.marginTop = u, h.marginLeft = b
97    }
98    return (i ? o.contains(d) : o === d && 'BODY' !== d.nodeName) && (h = f(h, o)), h
99  }
100  function b(e) {
101    var t = window.document.documentElement, o = u(e, t), i = _(t.clientWidth, window.innerWidth || 0), n = _(t.clientHeight, window.innerHeight || 0), r = a(t), p = a(t, 'left'), s = { top: r - o.top + o.marginTop, left: p - o.left + o.marginLeft, width: i, height: n };
102    return c(s)
103  }
104  function y(e) {
105    var i = e.nodeName;
106    return 'BODY' === i || 'HTML' === i ? !1 : 'fixed' === t(e, 'position') || y(o(e))
107  }
108  function w(e, t, i, r) {
109    var p = { top: 0, left: 0 }, s = d(e, t);
110    if ('viewport' === r)
111      p = b(s);
112    else {
113      var a;
114      'scrollParent' === r ? (a = n(o(e)), 'BODY' === a.nodeName && (a = window.document.documentElement)) : 'window' === r ? a = window.document.documentElement : a = r;
115      var f = u(a, s);
116      if ('HTML' === a.nodeName && !y(s)) {
117        var l = h(), m = l.height, c = l.width;
118        p.top += f.top - f.marginTop, p.bottom = m + f.top, p.left += f.left - f.marginLeft, p.right = c + f.left
119      } else
120        p = f
121    }
122    return p.left += i, p.top += i, p.right -= i, p.bottom -= i, p
123  }
124  function v(e) {
125    var t = e.width, o = e.height;
126    return t * o
127  }
128  function E(e, t, o, i, n) {
129    var r = 5 < arguments.length && void 0 !== arguments[5] ? arguments[5] : 0;
130    if (-1 === e.indexOf('auto'))
131      return e;
132    var p = w(o, i, r, n), s = { top: { width: p.width, height: t.top - p.top }, right: { width: p.right - t.right, height: p.height }, bottom: { width: p.width, height: p.bottom - t.bottom }, left: { width: t.left - p.left, height: p.height } }, d = Object.keys(s).map(function (e) {
133      return se({ key: e }, s[e], { area: v(s[e]) })
134    }).sort(function (e, t) {
135      return t.area - e.area
136    }), a = d.filter(function (e) {
137      var t = e.width, i = e.height;
138      return t >= o.clientWidth && i >= o.clientHeight
139    }), f = 0 < a.length ? a[0].key : d[0].key, l = e.split('-')[1];
140    return f + (l ? '-' + l : '')
141  }
142  function x(e, t, o) {
143    var i = d(t, o);
144    return u(o, i)
145  }
146  function O(e) {
147    var t = window.getComputedStyle(e), o = parseFloat(t.marginTop) + parseFloat(t.marginBottom), i = parseFloat(t.marginLeft) + parseFloat(t.marginRight), n = { width: e.offsetWidth + i, height: e.offsetHeight + o };
148    return n
149  }
150  function L(e) {
151    var t = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };
152    return e.replace(/left|right|bottom|top/g, function (e) {
153      return t[e]
154    })
155  }
156  function S(e, t, o) {
157    o = o.split('-')[0];
158    var i = O(e), n = { width: i.width, height: i.height }, r = -1 !== ['right', 'left'].indexOf(o), p = r ? 'top' : 'left', s = r ? 'left' : 'top', d = r ? 'height' : 'width', a = r ? 'width' : 'height';
159    return n[p] = t[p] + t[d] / 2 - i[d] / 2, n[s] = o === s ? t[s] - i[a] : t[L(s)], n
160  }
161  function T(e, t) {
162    return Array.prototype.find ? e.find(t) : e.filter(t)[0]
163  }
164  function C(e, t, o) {
165    if (Array.prototype.findIndex)
166      return e.findIndex(function (e) {
167        return e[t] === o
168      });
169    var i = T(e, function (e) {
170      return e[t] === o
171    });
172    return e.indexOf(i)
173  }
174  function N(t, o, i) {
175    var n = void 0 === i ? t : t.slice(0, C(t, 'name', i));
176    return n.forEach(function (t) {
177      t.function && console.warn('`modifier.function` is deprecated, use `modifier.fn`!');
178      var i = t.function || t.fn;
179      t.enabled && e(i) && (o.offsets.popper = c(o.offsets.popper), o.offsets.reference = c(o.offsets.reference), o = i(o, t))
180    }), o
181  }
182  function k() {
183    if (!this.state.isDestroyed) {
184      var e = { instance: this, styles: {}, attributes: {}, flipped: !1, offsets: {} };
185      e.offsets.reference = x(this.state, this.popper, this.reference), e.placement = E(this.options.placement, e.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding), e.originalPlacement = e.placement, e.offsets.popper = S(this.popper, e.offsets.reference, e.placement), e.offsets.popper.position = 'absolute', e = N(this.modifiers, e), this.state.isCreated ? this.options.onUpdate(e) : (this.state.isCreated = !0, this.options.onCreate(e))
186    }
187  }
188  function W(e, t) {
189    return e.some(function (e) {
190      var o = e.name, i = e.enabled;
191      return i && o === t
192    })
193  }
194  function B(e) {
195    for (var t = [!1, 'ms', 'Webkit', 'Moz', 'O'], o = e.charAt(0).toUpperCase() + e.slice(1), n = 0; n < t.length - 1; n++) {
196      var i = t[n], r = i ? '' + i + o : e;
197      if ('undefined' != typeof window.document.body.style[r])
198        return r
199    }
200    return null
201  }
202  function D() {
203    return this.state.isDestroyed = !0, W(this.modifiers, 'applyStyle') && (this.popper.removeAttribute('x-placement'), this.popper.style.left = '', this.popper.style.position = '', this.popper.style.top = '', this.popper.style[B('transform')] = ''), this.disableEventListeners(), this.options.removeOnDestroy && this.popper.parentNode.removeChild(this.popper), this
204  }
205  function H(e, t, o, i) {
206    var r = 'BODY' === e.nodeName, p = r ? window : e;
207    p.addEventListener(t, o, { passive: !0 }), r || H(n(p.parentNode), t, o, i), i.push(p)
208  }
209  function P(e, t, o, i) {
210    o.updateBound = i, window.addEventListener('resize', o.updateBound, { passive: !0 });
211    var r = n(e);
212    return H(r, 'scroll', o.updateBound, o.scrollParents), o.scrollElement = r, o.eventsEnabled = !0, o
213  }
214  function A() {
215    this.state.eventsEnabled || (this.state = P(this.reference, this.options, this.state, this.scheduleUpdate))
216  }
217  function M(e, t) {
218    return window.removeEventListener('resize', t.updateBound), t.scrollParents.forEach(function (e) {
219      e.removeEventListener('scroll', t.updateBound)
220    }), t.updateBound = null, t.scrollParents = [], t.scrollElement = null, t.eventsEnabled = !1, t
221  }
222  function I() {
223    this.state.eventsEnabled && (window.cancelAnimationFrame(this.scheduleUpdate), this.state = M(this.reference, this.state))
224  }
225  function R(e) {
226    return '' !== e && !isNaN(parseFloat(e)) && isFinite(e)
227  }
228  function U(e, t) {
229    Object.keys(t).forEach(function (o) {
230      var i = '';
231      -1 !== ['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(o) && R(t[o]) && (i = 'px'), e.style[o] = t[o] + i
232    })
233  }
234  function Y(e, t) {
235    Object.keys(t).forEach(function (o) {
236      var i = t[o];
237      !1 === i ? e.removeAttribute(o) : e.setAttribute(o, t[o])
238    })
239  }
240  function F(e, t, o) {
241    var i = T(e, function (e) {
242      var o = e.name;
243      return o === t
244    }), n = !!i && e.some(function (e) {
245      return e.name === o && e.enabled && e.order < i.order
246    });
247    if (!n) {
248      var r = '`' + t + '`';
249      console.warn('`' + o + '`' + ' modifier is required by ' + r + ' modifier in order to work, be sure to include it before ' + r + '!')
250    }
251    return n
252  }
253  function j(e) {
254    return 'end' === e ? 'start' : 'start' === e ? 'end' : e
255  }
256  function K(e) {
257    var t = 1 < arguments.length && void 0 !== arguments[1] && arguments[1], o = ae.indexOf(e), i = ae.slice(o + 1).concat(ae.slice(0, o));
258    return t ? i.reverse() : i
259  }
260  function q(e, t, o, i) {
261    var n = e.match(/((?:\-|\+)?\d*\.?\d*)(.*)/), r = +n[1], p = n[2];
262    if (!r)
263      return e;
264    if (0 === p.indexOf('%')) {
265      var s;
266      switch (p) {
267        case '%p':
268          s = o;
269          break;
270        case '%':
271        case '%r':
272        default:
273          s = i;
274      }
275      var d = c(s);
276      return d[t] / 100 * r
277    }
278    if ('vh' === p || 'vw' === p) {
279      var a;
280      return a = 'vh' === p ? _(document.documentElement.clientHeight, window.innerHeight || 0) : _(document.documentElement.clientWidth, window.innerWidth || 0), a / 100 * r
281    }
282    return r
283  }
284  function G(e, t, o, i) {
285    var n = [0, 0], r = -1 !== ['right', 'left'].indexOf(i), p = e.split(/(\+|\-)/).map(function (e) {
286      return e.trim()
287    }), s = p.indexOf(T(p, function (e) {
288      return -1 !== e.search(/,|\s/)
289    }));
290    p[s] && -1 === p[s].indexOf(',') && console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');
291    var d = /\s*,\s*|\s+/, a = -1 === s ? [p] : [p.slice(0, s).concat([p[s].split(d)[0]]), [p[s].split(d)[1]].concat(p.slice(s + 1))];
292    return a = a.map(function (e, i) {
293      var n = (1 === i ? !r : r) ? 'height' : 'width', p = !1;
294      return e.reduce(function (e, t) {
295        return '' === e[e.length - 1] && -1 !== ['+', '-'].indexOf(t) ? (e[e.length - 1] = t, p = !0, e) : p ? (e[e.length - 1] += t, p = !1, e) : e.concat(t)
296      }, []).map(function (e) {
297        return q(e, n, t, o)
298      })
299    }), a.forEach(function (e, t) {
300      e.forEach(function (o, i) {
301        R(o) && (n[t] += o * ('-' === e[i - 1] ? -1 : 1))
302      })
303    }), n
304  }
305  for (var z = Math.min, V = Math.floor, _ = Math.max, X = ['native code', '[object MutationObserverConstructor]'], Q = function (e) {
306    return X.some(function (t) {
307      return -1 < (e || '').toString().indexOf(t)
308    })
309  }, J = 'undefined' != typeof window, Z = ['Edge', 'Trident', 'Firefox'], $ = 0, ee = 0; ee < Z.length; ee += 1)
310    if (J && 0 <= navigator.userAgent.indexOf(Z[ee])) {
311      $ = 1;
312      break
313    }
314  var i, te = J && Q(window.MutationObserver), oe = te ? function (e) {
315    var t = !1, o = 0, i = document.createElement('span'), n = new MutationObserver(function () {
316      e(), t = !1
317    });
318    return n.observe(i, { attributes: !0 }), function () {
319      t || (t = !0, i.setAttribute('x-index', o), ++o)
320    }
321  } : function (e) {
322    var t = !1;
323    return function () {
324      t || (t = !0, setTimeout(function () {
325        t = !1, e()
326      }, $))
327    }
328  }, ie = function () {
329    return void 0 == i && (i = -1 !== navigator.appVersion.indexOf('MSIE 10')), i
330  }, ne = function (e, t) {
331    if (!(e instanceof t))
332      throw new TypeError('Cannot call a class as a function')
333  }, re = function () {
334    function e(e, t) {
335      for (var o, n = 0; n < t.length; n++)
336        o = t[n], o.enumerable = o.enumerable || !1, o.configurable = !0, 'value' in o && (o.writable = !0), Object.defineProperty(e, o.key, o)
337    }
338    return function (t, o, i) {
339      return o && e(t.prototype, o), i && e(t, i), t
340    }
341  }(), pe = function (e, t, o) {
342    return t in e ? Object.defineProperty(e, t, { value: o, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = o, e
343  }, se = Object.assign || function (e) {
344    for (var t, o = 1; o < arguments.length; o++)
345      for (var i in t = arguments[o], t)
346        Object.prototype.hasOwnProperty.call(t, i) && (e[i] = t[i]);
347    return e
348  }, de = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start'], ae = de.slice(3), fe = { FLIP: 'flip', CLOCKWISE: 'clockwise', COUNTERCLOCKWISE: 'counterclockwise' }, le = function () {
349    function t(o, i) {
350      var n = this, r = 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : {};
351      ne(this, t), this.scheduleUpdate = function () {
352        return requestAnimationFrame(n.update)
353      }, this.update = oe(this.update.bind(this)), this.options = se({}, t.Defaults, r), this.state = { isDestroyed: !1, isCreated: !1, scrollParents: [] }, this.reference = o.jquery ? o[0] : o, this.popper = i.jquery ? i[0] : i, this.options.modifiers = {}, Object.keys(se({}, t.Defaults.modifiers, r.modifiers)).forEach(function (e) {
354        n.options.modifiers[e] = se({}, t.Defaults.modifiers[e] || {}, r.modifiers ? r.modifiers[e] : {})
355      }), this.modifiers = Object.keys(this.options.modifiers).map(function (e) {
356        return se({ name: e }, n.options.modifiers[e])
357      }).sort(function (e, t) {
358        return e.order - t.order
359      }), this.modifiers.forEach(function (t) {
360        t.enabled && e(t.onLoad) && t.onLoad(n.reference, n.popper, n.options, t, n.state)
361      }), this.update();
362      var p = this.options.eventsEnabled;
363      p && this.enableEventListeners(), this.state.eventsEnabled = p
364    }
365    return re(t, [{
366      key: 'update', value: function () {
367        return k.call(this)
368      }
369    }, {
370      key: 'destroy', value: function () {
371        return D.call(this)
372      }
373    }, {
374      key: 'enableEventListeners', value: function () {
375        return A.call(this)
376      }
377    }, {
378      key: 'disableEventListeners', value: function () {
379        return I.call(this)
380      }
381    }]), t
382  }();
383  return le.Utils = ('undefined' == typeof window ? global : window).PopperUtils, le.placements = de, le.Defaults = {
384    placement: 'bottom', eventsEnabled: !0, removeOnDestroy: !1, onCreate: function () {
385    }, onUpdate: function () {
386    }, modifiers: {
387      shift: {
388        order: 100, enabled: !0, fn: function (e) {
389          var t = e.placement, o = t.split('-')[0], i = t.split('-')[1];
390          if (i) {
391            var n = e.offsets, r = n.reference, p = n.popper, s = -1 !== ['bottom', 'top'].indexOf(o), d = s ? 'left' : 'top', a = s ? 'width' : 'height', f = { start: pe({}, d, r[d]), end: pe({}, d, r[d] + r[a] - p[a]) };
392            e.offsets.popper = se({}, p, f[i])
393          }
394          return e
395        }
396      }, offset: {
397        order: 200, enabled: !0, fn: function (e, t) {
398          var o, i = t.offset, n = e.placement, r = e.offsets, p = r.popper, s = r.reference, d = n.split('-')[0];
399          return o = R(+i) ? [+i, 0] : G(i, p, s, d), 'left' === d ? (p.top += o[0], p.left -= o[1]) : 'right' === d ? (p.top += o[0], p.left += o[1]) : 'top' === d ? (p.left += o[0], p.top -= o[1]) : 'bottom' === d && (p.left += o[0], p.top += o[1]), e.popper = p, e
400        }, offset: 0
401      }, preventOverflow: {
402        order: 300, enabled: !0, fn: function (e, t) {
403          var o = t.boundariesElement || r(e.instance.popper);
404          e.instance.reference === o && (o = r(o));
405          var i = w(e.instance.popper, e.instance.reference, t.padding, o);
406          t.boundaries = i;
407          var n = t.priority, p = e.offsets.popper, s = {
408            primary: function (e) {
409              var o = p[e];
410              return p[e] < i[e] && !t.escapeWithReference && (o = _(p[e], i[e])), pe({}, e, o)
411            }, secondary: function (e) {
412              var o = 'right' === e ? 'left' : 'top', n = p[o];
413              return p[e] > i[e] && !t.escapeWithReference && (n = z(p[o], i[e] - ('right' === e ? p.width : p.height))), pe({}, o, n)
414            }
415          };
416          return n.forEach(function (e) {
417            var t = -1 === ['left', 'top'].indexOf(e) ? 'secondary' : 'primary';
418            p = se({}, p, s[t](e))
419          }), e.offsets.popper = p, e
420        }, priority: ['left', 'right', 'top', 'bottom'], padding: 5, boundariesElement: 'scrollParent'
421      }, keepTogether: {
422        order: 400, enabled: !0, fn: function (e) {
423          var t = e.offsets, o = t.popper, i = t.reference, n = e.placement.split('-')[0], r = V, p = -1 !== ['top', 'bottom'].indexOf(n), s = p ? 'right' : 'bottom', d = p ? 'left' : 'top', a = p ? 'width' : 'height';
424          return o[s] < r(i[d]) && (e.offsets.popper[d] = r(i[d]) - o[a]), o[d] > r(i[s]) && (e.offsets.popper[d] = r(i[s])), e
425        }
426      }, arrow: {
427        order: 500, enabled: !0, fn: function (e, t) {
428          if (!F(e.instance.modifiers, 'arrow', 'keepTogether'))
429            return e;
430          var o = t.element;
431          if ('string' == typeof o) {
432            if (o = e.instance.popper.querySelector(o), !o)
433              return e;
434          } else if (!e.instance.popper.contains(o))
435            return console.warn('WARNING: `arrow.element` must be child of its popper element!'), e;
436          var i = e.placement.split('-')[0], n = e.offsets, r = n.popper, p = n.reference, s = -1 !== ['left', 'right'].indexOf(i), d = s ? 'height' : 'width', a = s ? 'top' : 'left', f = s ? 'left' : 'top', l = s ? 'bottom' : 'right', m = O(o)[d];
437          p[l] - m < r[a] && (e.offsets.popper[a] -= r[a] - (p[l] - m)), p[a] + m > r[l] && (e.offsets.popper[a] += p[a] + m - r[l]);
438          var h = p[a] + p[d] / 2 - m / 2, g = h - c(e.offsets.popper)[a];
439          return g = _(z(r[d] - m, g), 0), e.arrowElement = o, e.offsets.arrow = {}, e.offsets.arrow[a] = Math.round(g), e.offsets.arrow[f] = '', e
440        }, element: '[x-arrow]'
441      }, flip: {
442        order: 600, enabled: !0, fn: function (e, t) {
443          if (W(e.instance.modifiers, 'inner'))
444            return e;
445          if (e.flipped && e.placement === e.originalPlacement)
446            return e;
447          var o = w(e.instance.popper, e.instance.reference, t.padding, t.boundariesElement), i = e.placement.split('-')[0], n = L(i), r = e.placement.split('-')[1] || '', p = [];
448          switch (t.behavior) {
449            case fe.FLIP:
450              p = [i, n];
451              break;
452            case fe.CLOCKWISE:
453              p = K(i);
454              break;
455            case fe.COUNTERCLOCKWISE:
456              p = K(i, !0);
457              break;
458            default:
459              p = t.behavior;
460          }
461          return p.forEach(function (s, d) {
462            if (i !== s || p.length === d + 1)
463              return e;
464            i = e.placement.split('-')[0], n = L(i);
465            var a = e.offsets.popper, f = e.offsets.reference, l = V, m = 'left' === i && l(a.right) > l(f.left) || 'right' === i && l(a.left) < l(f.right) || 'top' === i && l(a.bottom) > l(f.top) || 'bottom' === i && l(a.top) < l(f.bottom), h = l(a.left) < l(o.left), c = l(a.right) > l(o.right), g = l(a.top) < l(o.top), u = l(a.bottom) > l(o.bottom), b = 'left' === i && h || 'right' === i && c || 'top' === i && g || 'bottom' === i && u, y = -1 !== ['top', 'bottom'].indexOf(i), w = !!t.flipVariations && (y && 'start' === r && h || y && 'end' === r && c || !y && 'start' === r && g || !y && 'end' === r && u);
466            (m || b || w) && (e.flipped = !0, (m || b) && (i = p[d + 1]), w && (r = j(r)), e.placement = i + (r ? '-' + r : ''), e.offsets.popper = se({}, e.offsets.popper, S(e.instance.popper, e.offsets.reference, e.placement)), e = N(e.instance.modifiers, e, 'flip'))
467          }), e
468        }, behavior: 'flip', padding: 5, boundariesElement: 'viewport'
469      }, inner: {
470        order: 700, enabled: !1, fn: function (e) {
471          var t = e.placement, o = t.split('-')[0], i = e.offsets, n = i.popper, r = i.reference, p = -1 !== ['left', 'right'].indexOf(o), s = -1 === ['top', 'left'].indexOf(o);
472          return n[p ? 'left' : 'top'] = r[t] - (s ? n[p ? 'width' : 'height'] : 0), e.placement = L(t), e.offsets.popper = c(n), e
473        }
474      }, hide: {
475        order: 800, enabled: !0, fn: function (e) {
476          if (!F(e.instance.modifiers, 'hide', 'preventOverflow'))
477            return e;
478          var t = e.offsets.reference, o = T(e.instance.modifiers, function (e) {
479            return 'preventOverflow' === e.name
480          }).boundaries;
481          if (t.bottom < o.top || t.left > o.right || t.top > o.bottom || t.right < o.left) {
482            if (!0 === e.hide)
483              return e;
484            e.hide = !0, e.attributes['x-out-of-boundaries'] = ''
485          } else {
486            if (!1 === e.hide)
487              return e;
488            e.hide = !1, e.attributes['x-out-of-boundaries'] = !1
489          }
490          return e
491        }
492      }, computeStyle: {
493        order: 850, enabled: !0, fn: function (e, t) {
494          var o = t.x, i = t.y, n = e.offsets.popper, p = T(e.instance.modifiers, function (e) {
495            return 'applyStyle' === e.name
496          }).gpuAcceleration;
497          void 0 !== p && console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!');
498          var s, d, a = void 0 === p ? t.gpuAcceleration : p, f = r(e.instance.popper), l = g(f), m = { position: n.position }, h = { left: V(n.left), top: V(n.top), bottom: V(n.bottom), right: V(n.right) }, c = 'bottom' === o ? 'top' : 'bottom', u = 'right' === i ? 'left' : 'right', b = B('transform');
499          if (d = 'bottom' == c ? -l.height + h.bottom : h.top, s = 'right' == u ? -l.width + h.right : h.left, a && b)
500            m[b] = 'translate3d(' + s + 'px, ' + d + 'px, 0)', m[c] = 0, m[u] = 0, m.willChange = 'transform';
501          else {
502            var y = 'bottom' == c ? -1 : 1, w = 'right' == u ? -1 : 1;
503            m[c] = d * y, m[u] = s * w, m.willChange = c + ', ' + u
504          }
505          var v = { "x-placement": e.placement };
506          return e.attributes = se({}, v, e.attributes), e.styles = se({}, m, e.styles), e
507        }, gpuAcceleration: !0, x: 'bottom', y: 'right'
508      }, applyStyle: {
509        order: 900, enabled: !0, fn: function (e) {
510          return U(e.instance.popper, e.styles), Y(e.instance.popper, e.attributes), e.offsets.arrow && U(e.arrowElement, e.offsets.arrow), e
511        }, onLoad: function (e, t, o, i, n) {
512          var r = x(n, t, e), p = E(o.placement, r, t, e, o.modifiers.flip.boundariesElement, o.modifiers.flip.padding);
513          return t.setAttribute('x-placement', p), U(t, { position: 'absolute' }), o
514        }, gpuAcceleration: void 0
515      }
516    }
517  }, le
518});
519//# sourceMappingURL=popper.min.js.map
520/*! jQuery v3.3.1 | (c) JS Foundation and other contributors | jquery.org/license */
521!function (e, t) {
522  "use strict";
523  "object" == typeof module && "object" == typeof module.exports ? module.exports = e.document ? t(e, !0) : function (e) {
524    if (!e.document)
525      throw new Error("jQuery requires a window with a document");
526    return t(e)
527  } : t(e)
528}("undefined" != typeof window ? window : this, function (e, t) {
529  "use strict";
530  var n = [], r = e.document, i = Object.getPrototypeOf, o = n.slice, a = n.concat, s = n.push, u = n.indexOf, l = {}, c = l.toString, f = l.hasOwnProperty, p = f.toString, d = p.call(Object), h = {}, g = function e(t) {
531    return "function" == typeof t && "number" != typeof t.nodeType
532  }, y = function e(t) {
533    return null != t && t === t.window
534  }, v = { type: !0, src: !0, noModule: !0 };
535  function m(e, t, n) {
536    var i, o = (t = t || r).createElement("script");
537    if (o.text = e, n)
538      for (i in v)
539        n[i] && (o[i] = n[i]);
540    t.head.appendChild(o).parentNode.removeChild(o)
541  }
542  function x(e) {
543    return null == e ? e + "" : "object" == typeof e || "function" == typeof e ? l[c.call(e)] || "object" : typeof e
544  }
545  var b = "3.3.1", w = function (e, t) {
546    return new w.fn.init(e, t)
547  }, T = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;
548  w.fn = w.prototype = {
549    jquery: "3.3.1", constructor: w, length: 0, toArray: function () {
550      return o.call(this)
551    }, get: function (e) {
552      return null == e ? o.call(this) : e < 0 ? this[e + this.length] : this[e]
553    }, pushStack: function (e) {
554      var t = w.merge(this.constructor(), e);
vendor: 120,371 bytes, lines 555-3071
555      return t.prevObject = this, t
556    }, each: function (e) {
557      return w.each(this, e)
558    }, map: function (e) {
559      return this.pushStack(w.map(this, function (t, n) {
560        return e.call(t, n, t)
561      }))
562    }, slice: function () {
563      return this.pushStack(o.apply(this, arguments))
564    }, first: function () {
565      return this.eq(0)
566    }, last: function () {
567      return this.eq(-1)
568    }, eq: function (e) {
569      var t = this.length, n = +e + (e < 0 ? t : 0);
570      return this.pushStack(n >= 0 && n < t ? [this[n]] : [])
571    }, end: function () {
572      return this.prevObject || this.constructor()
573    }, push: s, sort: n.sort, splice: n.splice
574  }, w.extend = w.fn.extend = function () {
575    var e, t, n, r, i, o, a = arguments[0] || {}, s = 1, u = arguments.length, l = !1;
576    for ("boolean" == typeof a && (l = a, a = arguments[s] || {}, s++), "object" == typeof a || g(a) || (a = {}), s === u && (a = this, s--); s < u; s++)
577      if (null != (e = arguments[s]))
578        for (t in e)
579          n = a[t], a !== (r = e[t]) && (l && r && (w.isPlainObject(r) || (i = Array.isArray(r))) ? (i ? (i = !1, o = n && Array.isArray(n) ? n : []) : o = n && w.isPlainObject(n) ? n : {}, a[t] = w.extend(l, o, r)) : void 0 !== r && (a[t] = r));
580    return a
581  }, w.extend({
582    expando: "jQuery" + ("3.3.1" + Math.random()).replace(/\D/g, ""), isReady: !0, error: function (e) {
583      throw new Error(e)
584    }, noop: function () {
585    }, isPlainObject: function (e) {
586      var t, n;
587      return !(!e || "[object Object]" !== c.call(e)) && (!(t = i(e)) || "function" == typeof (n = f.call(t, "constructor") && t.constructor) && p.call(n) === d)
588    }, isEmptyObject: function (e) {
589      var t;
590      for (t in e)
591        return !1;
592      return !0
593    }, globalEval: function (e) {
594      m(e)
595    }, each: function (e, t) {
596      var n, r = 0;
597      if (C(e)) {
598        for (n = e.length; r < n; r++)
599          if (!1 === t.call(e[r], r, e[r]))
600            break
601      } else
602        for (r in e)
603          if (!1 === t.call(e[r], r, e[r]))
604            break;
605      return e
606    }, trim: function (e) {
607      return null == e ? "" : (e + "").replace(T, "")
608    }, makeArray: function (e, t) {
609      var n = t || [];
610      return null != e && (C(Object(e)) ? w.merge(n, "string" == typeof e ? [e] : e) : s.call(n, e)), n
611    }, inArray: function (e, t, n) {
612      return null == t ? -1 : u.call(t, e, n)
613    }, merge: function (e, t) {
614      for (var n = +t.length, r = 0, i = e.length; r < n; r++)
615        e[i++] = t[r];
616      return e.length = i, e
617    }, grep: function (e, t, n) {
618      for (var r, i = [], o = 0, a = e.length, s = !n; o < a; o++)
619        (r = !t(e[o], o)) !== s && i.push(e[o]);
620      return i
621    }, map: function (e, t, n) {
622      var r, i, o = 0, s = [];
623      if (C(e))
624        for (r = e.length; o < r; o++)
625          null != (i = t(e[o], o, n)) && s.push(i);
626      else
627        for (o in e)
628          null != (i = t(e[o], o, n)) && s.push(i);
629      return a.apply([], s)
630    }, guid: 1, support: h
631  }), "function" == typeof Symbol && (w.fn[Symbol.iterator] = n[Symbol.iterator]), w.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "), function (e, t) {
632    l["[object " + t + "]"] = t.toLowerCase()
633  });
634  function C(e) {
635    var t = !!e && "length" in e && e.length, n = x(e);
636    return !g(e) && !y(e) && ("array" === n || 0 === t || "number" == typeof t && t > 0 && t - 1 in e)
637  }
638  var E = function (e) {
639    var t, n, r, i, o, a, s, u, l, c, f, p, d, h, g, y, v, m, x, b = "sizzle" + 1 * new Date, w = e.document, T = 0, C = 0, E = ae(), k = ae(), S = ae(), D = function (e, t) {
640      return e === t && (f = !0), 0
641    }, N = {}.hasOwnProperty, A = [], j = A.pop, q = A.push, L = A.push, H = A.slice, O = function (e, t) {
642      for (var n = 0, r = e.length; n < r; n++)
643        if (e[n] === t)
644          return n;
645      return -1
646    }, P = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", M = "[\\x20\\t\\r\\n\\f]", R = "(?:\\\\.|[\\w-]|[^\0-\\xa0])+", I = "\\[" + M + "*(" + R + ")(?:" + M + "*([*^$|!~]?=)" + M + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + R + "))|)" + M + "*\\]", W = ":(" + R + ")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|" + I + ")*)|.*)\\)|)", $ = new RegExp(M + "+", "g"), B = new RegExp("^" + M + "+|((?:^|[^\\\\])(?:\\\\.)*)" + M + "+$", "g"), F = new RegExp("^" + M + "*," + M + "*"), _ = new RegExp("^" + M + "*([>+~]|" + M + ")" + M + "*"), z = new RegExp("=" + M + "*([^\\]'\"]*?)" + M + "*\\]", "g"), X = new RegExp(W), U = new RegExp("^" + R + "$"), V = { ID: new RegExp("^#(" + R + ")"), CLASS: new RegExp("^\\.(" + R + ")"), TAG: new RegExp("^(" + R + "|[*])"), ATTR: new RegExp("^" + I), PSEUDO: new RegExp("^" + W), CHILD: new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + M + "*(even|odd|(([+-]|)(\\d*)n|)" + M + "*(?:([+-]|)" + M + "*(\\d+)|))" + M + "*\\)|)", "i"), bool: new RegExp("^(?:" + P + ")$", "i"), needsContext: new RegExp("^" + M + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + M + "*((?:-\\d)?\\d*)" + M + "*\\)|)(?=[^-]|$)", "i") }, G = /^(?:input|select|textarea|button)$/i, Y = /^h\d$/i, Q = /^[^{]+\{\s*\[native \w/, J = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, K = /[+~]/, Z = new RegExp("\\\\([\\da-f]{1,6}" + M + "?|(" + M + ")|.)", "ig"), ee = function (e, t, n) {
647      var r = "0x" + t - 65536;
648      return r !== r || n ? t : r < 0 ? String.fromCharCode(r + 65536) : String.fromCharCode(r >> 10 | 55296, 1023 & r | 56320)
649    }, te = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g, ne = function (e, t) {
650      return t ? "\0" === e ? "\ufffd" : e.slice(0, -1) + "\\" + e.charCodeAt(e.length - 1).toString(16) + " " : "\\" + e
651    }, re = function () {
652      p()
653    }, ie = me(function (e) {
654      return !0 === e.disabled && ("form" in e || "label" in e)
655    }, { dir: "parentNode", next: "legend" });
656    try {
657      L.apply(A = H.call(w.childNodes), w.childNodes), A[w.childNodes.length].nodeType
658    } catch (e) {
659      L = {
660        apply: A.length ? function (e, t) {
661          q.apply(e, H.call(t))
662        } : function (e, t) {
663          var n = e.length, r = 0;
664          while (e[n++] = t[r++])
665            ;
666          e.length = n - 1
667        }
668      }
669    }
670    function oe(e, t, r, i) {
671      var o, s, l, c, f, h, v, m = t && t.ownerDocument, T = t ? t.nodeType : 9;
672      if (r = r || [], "string" != typeof e || !e || 1 !== T && 9 !== T && 11 !== T)
673        return r;
674      if (!i && ((t ? t.ownerDocument || t : w) !== d && p(t), t = t || d, g)) {
675        if (11 !== T && (f = J.exec(e)))
676          if (o = f[1]) {
677            if (9 === T) {
678              if (!(l = t.getElementById(o)))
679                return r;
680              if (l.id === o)
681                return r.push(l), r
682            } else if (m && (l = m.getElementById(o)) && x(t, l) && l.id === o)
683              return r.push(l), r
684          } else {
685            if (f[2])
686              return L.apply(r, t.getElementsByTagName(e)), r;
687            if ((o = f[3]) && n.getElementsByClassName && t.getElementsByClassName)
688              return L.apply(r, t.getElementsByClassName(o)), r
689          }
690        if (n.qsa && !S[e + " "] && (!y || !y.test(e))) {
691          if (1 !== T)
692            m = t, v = e;
693          else if ("object" !== t.nodeName.toLowerCase()) {
694            (c = t.getAttribute("id")) ? c = c.replace(te, ne) : t.setAttribute("id", c = b), s = (h = a(e)).length;
695            while (s--)
696              h[s] = "#" + c + " " + ve(h[s]);
697            v = h.join(","), m = K.test(e) && ge(t.parentNode) || t
698          }
699          if (v)
700            try {
701              return L.apply(r, m.querySelectorAll(v)), r
702            } catch (e) {
703            } finally {
704              c === b && t.removeAttribute("id")
705            }
706        }
707      }
708      return u(e.replace(B, "$1"), t, r, i)
709    }
710    function ae() {
711      var e = [];
712      function t(n, i) {
713        return e.push(n + " ") > r.cacheLength && delete t[e.shift()], t[n + " "] = i
714      }
715      return t
716    }
717    function se(e) {
718      return e[b] = !0, e
719    }
720    function ue(e) {
721      var t = d.createElement("fieldset");
722      try {
723        return !!e(t)
724      } catch (e) {
725        return !1
726      } finally {
727        t.parentNode && t.parentNode.removeChild(t), t = null
728      }
729    }
730    function le(e, t) {
731      var n = e.split("|"), i = n.length;
732      while (i--)
733        r.attrHandle[n[i]] = t
734    }
735    function ce(e, t) {
736      var n = t && e, r = n && 1 === e.nodeType && 1 === t.nodeType && e.sourceIndex - t.sourceIndex;
737      if (r)
738        return r;
739      if (n)
740        while (n = n.nextSibling)
741          if (n === t)
742            return -1;
743      return e ? 1 : -1
744    }
745    function fe(e) {
746      return function (t) {
747        return "input" === t.nodeName.toLowerCase() && t.type === e
748      }
749    }
750    function pe(e) {
751      return function (t) {
752        var n = t.nodeName.toLowerCase();
753        return ("input" === n || "button" === n) && t.type === e
754      }
755    }
756    function de(e) {
757      return function (t) {
758        return "form" in t ? t.parentNode && !1 === t.disabled ? "label" in t ? "label" in t.parentNode ? t.parentNode.disabled === e : t.disabled === e : t.isDisabled === e || t.isDisabled !== !e && ie(t) === e : t.disabled === e : "label" in t && t.disabled === e
759      }
760    }
761    function he(e) {
762      return se(function (t) {
763        return t = +t, se(function (n, r) {
764          var i, o = e([], n.length, t), a = o.length;
765          while (a--)
766            n[i = o[a]] && (n[i] = !(r[i] = n[i]))
767        })
768      })
769    }
770    function ge(e) {
771      return e && "undefined" != typeof e.getElementsByTagName && e
772    }
773    n = oe.support = {}, o = oe.isXML = function (e) {
774      var t = e && (e.ownerDocument || e).documentElement;
775      return !!t && "HTML" !== t.nodeName
776    }, p = oe.setDocument = function (e) {
777      var t, i, a = e ? e.ownerDocument || e : w;
778      return a !== d && 9 === a.nodeType && a.documentElement ? (d = a, h = d.documentElement, g = !o(d), w !== d && (i = d.defaultView) && i.top !== i && (i.addEventListener ? i.addEventListener("unload", re, !1) : i.attachEvent && i.attachEvent("onunload", re)), n.attributes = ue(function (e) {
779        return e.className = "i", !e.getAttribute("className")
780      }), n.getElementsByTagName = ue(function (e) {
781        return e.appendChild(d.createComment("")), !e.getElementsByTagName("*").length
782      }), n.getElementsByClassName = Q.test(d.getElementsByClassName), n.getById = ue(function (e) {
783        return h.appendChild(e).id = b, !d.getElementsByName || !d.getElementsByName(b).length
784      }), n.getById ? (r.filter.ID = function (e) {
785        var t = e.replace(Z, ee);
786        return function (e) {
787          return e.getAttribute("id") === t
788        }
789      }, r.find.ID = function (e, t) {
790        if ("undefined" != typeof t.getElementById && g) {
791          var n = t.getElementById(e);
792          return n ? [n] : []
793        }
794      }) : (r.filter.ID = function (e) {
795        var t = e.replace(Z, ee);
796        return function (e) {
797          var n = "undefined" != typeof e.getAttributeNode && e.getAttributeNode("id");
798          return n && n.value === t
799        }
800      }, r.find.ID = function (e, t) {
801        if ("undefined" != typeof t.getElementById && g) {
802          var n, r, i, o = t.getElementById(e);
803          if (o) {
804            if ((n = o.getAttributeNode("id")) && n.value === e)
805              return [o];
806            i = t.getElementsByName(e), r = 0;
807            while (o = i[r++])
808              if ((n = o.getAttributeNode("id")) && n.value === e)
809                return [o]
810          }
811          return []
812        }
813      }), r.find.TAG = n.getElementsByTagName ? function (e, t) {
814        return "undefined" != typeof t.getElementsByTagName ? t.getElementsByTagName(e) : n.qsa ? t.querySelectorAll(e) : void 0
815      } : function (e, t) {
816        var n, r = [], i = 0, o = t.getElementsByTagName(e);
817        if ("*" === e) {
818          while (n = o[i++])
819            1 === n.nodeType && r.push(n);
820          return r
821        }
822        return o
823      }, r.find.CLASS = n.getElementsByClassName && function (e, t) {
824        if ("undefined" != typeof t.getElementsByClassName && g)
825          return t.getElementsByClassName(e)
826      }, v = [], y = [], (n.qsa = Q.test(d.querySelectorAll)) && (ue(function (e) {
827        h.appendChild(e).innerHTML = "<a id='" + b + "'></a><select id='" + b + "-\r\\' msallowcapture=''><option selected=''></option></select>", e.querySelectorAll("[msallowcapture^='']").length && y.push("[*^$]=" + M + "*(?:''|\"\")"), e.querySelectorAll("[selected]").length || y.push("\\[" + M + "*(?:value|" + P + ")"), e.querySelectorAll("[id~=" + b + "-]").length || y.push("~="), e.querySelectorAll(":checked").length || y.push(":checked"), e.querySelectorAll("a#" + b + "+*").length || y.push(".#.+[+~]")
828      }), ue(function (e) {
829        e.innerHTML = "<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";
830        var t = d.createElement("input");
831        t.setAttribute("type", "hidden"), e.appendChild(t).setAttribute("name", "D"), e.querySelectorAll("[name=d]").length && y.push("name" + M + "*[*^$|!~]?="), 2 !== e.querySelectorAll(":enabled").length && y.push(":enabled", ":disabled"), h.appendChild(e).disabled = !0, 2 !== e.querySelectorAll(":disabled").length && y.push(":enabled", ":disabled"), e.querySelectorAll("*,:x"), y.push(",.*:")
832      })), (n.matchesSelector = Q.test(m = h.matches || h.webkitMatchesSelector || h.mozMatchesSelector || h.oMatchesSelector || h.msMatchesSelector)) && ue(function (e) {
833        n.disconnectedMatch = m.call(e, "*"), m.call(e, "[s!='']:x"), v.push("!=", W)
834      }), y = y.length && new RegExp(y.join("|")), v = v.length && new RegExp(v.join("|")), t = Q.test(h.compareDocumentPosition), x = t || Q.test(h.contains) ? function (e, t) {
835        var n = 9 === e.nodeType ? e.documentElement : e, r = t && t.parentNode;
836        return e === r || !(!r || 1 !== r.nodeType || !(n.contains ? n.contains(r) : e.compareDocumentPosition && 16 & e.compareDocumentPosition(r)))
837      } : function (e, t) {
838        if (t)
839          while (t = t.parentNode)
840            if (t === e)
841              return !0;
842        return !1
843      }, D = t ? function (e, t) {
844        if (e === t)
845          return f = !0, 0;
846        var r = !e.compareDocumentPosition - !t.compareDocumentPosition;
847        return r || (1 & (r = (e.ownerDocument || e) === (t.ownerDocument || t) ? e.compareDocumentPosition(t) : 1) || !n.sortDetached && t.compareDocumentPosition(e) === r ? e === d || e.ownerDocument === w && x(w, e) ? -1 : t === d || t.ownerDocument === w && x(w, t) ? 1 : c ? O(c, e) - O(c, t) : 0 : 4 & r ? -1 : 1)
848      } : function (e, t) {
849        if (e === t)
850          return f = !0, 0;
851        var n, r = 0, i = e.parentNode, o = t.parentNode, a = [e], s = [t];
852        if (!i || !o)
853          return e === d ? -1 : t === d ? 1 : i ? -1 : o ? 1 : c ? O(c, e) - O(c, t) : 0;
854        if (i === o)
855          return ce(e, t);
856        n = e;
857        while (n = n.parentNode)
858          a.unshift(n);
859        n = t;
860        while (n = n.parentNode)
861          s.unshift(n);
862        while (a[r] === s[r])
863          r++;
864        return r ? ce(a[r], s[r]) : a[r] === w ? -1 : s[r] === w ? 1 : 0
865      }, d) : d
866    }, oe.matches = function (e, t) {
867      return oe(e, null, null, t)
868    }, oe.matchesSelector = function (e, t) {
869      if ((e.ownerDocument || e) !== d && p(e), t = t.replace(z, "='$1']"), n.matchesSelector && g && !S[t + " "] && (!v || !v.test(t)) && (!y || !y.test(t)))
870        try {
871          var r = m.call(e, t);
872          if (r || n.disconnectedMatch || e.document && 11 !== e.document.nodeType)
873            return r
874        } catch (e) {
875        }
876      return oe(t, d, null, [e]).length > 0
877    }, oe.contains = function (e, t) {
878      return (e.ownerDocument || e) !== d && p(e), x(e, t)
879    }, oe.attr = function (e, t) {
880      (e.ownerDocument || e) !== d && p(e);
881      var i = r.attrHandle[t.toLowerCase()], o = i && N.call(r.attrHandle, t.toLowerCase()) ? i(e, t, !g) : void 0;
882      return void 0 !== o ? o : n.attributes || !g ? e.getAttribute(t) : (o = e.getAttributeNode(t)) && o.specified ? o.value : null
883    }, oe.escape = function (e) {
884      return (e + "").replace(te, ne)
885    }, oe.error = function (e) {
886      throw new Error("Syntax error, unrecognized expression: " + e)
887    }, oe.uniqueSort = function (e) {
888      var t, r = [], i = 0, o = 0;
889      if (f = !n.detectDuplicates, c = !n.sortStable && e.slice(0), e.sort(D), f) {
890        while (t = e[o++])
891          t === e[o] && (i = r.push(o));
892        while (i--)
893          e.splice(r[i], 1)
894      }
895      return c = null, e
896    }, i = oe.getText = function (e) {
897      var t, n = "", r = 0, o = e.nodeType;
898      if (o) {
899        if (1 === o || 9 === o || 11 === o) {
900          if ("string" == typeof e.textContent)
901            return e.textContent;
902          for (e = e.firstChild; e; e = e.nextSibling)
903            n += i(e)
904        } else if (3 === o || 4 === o)
905          return e.nodeValue
906      } else
907        while (t = e[r++])
908          n += i(t);
909      return n
910    }, (r = oe.selectors = {
911      cacheLength: 50, createPseudo: se, match: V, attrHandle: {}, find: {}, relative: { ">": { dir: "parentNode", first: !0 }, " ": { dir: "parentNode" }, "+": { dir: "previousSibling", first: !0 }, "~": { dir: "previousSibling" } }, preFilter: {
912        ATTR: function (e) {
913          return e[1] = e[1].replace(Z, ee), e[3] = (e[3] || e[4] || e[5] || "").replace(Z, ee), "~=" === e[2] && (e[3] = " " + e[3] + " "), e.slice(0, 4)
914        }, CHILD: function (e) {
915          return e[1] = e[1].toLowerCase(), "nth" === e[1].slice(0, 3) ? (e[3] || oe.error(e[0]), e[4] = +(e[4] ? e[5] + (e[6] || 1) : 2 * ("even" === e[3] || "odd" === e[3])), e[5] = +(e[7] + e[8] || "odd" === e[3])) : e[3] && oe.error(e[0]), e
916        }, PSEUDO: function (e) {
917          var t, n = !e[6] && e[2];
918          return V.CHILD.test(e[0]) ? null : (e[3] ? e[2] = e[4] || e[5] || "" : n && X.test(n) && (t = a(n, !0)) && (t = n.indexOf(")", n.length - t) - n.length) && (e[0] = e[0].slice(0, t), e[2] = n.slice(0, t)), e.slice(0, 3))
919        }
920      }, filter: {
921        TAG: function (e) {
922          var t = e.replace(Z, ee).toLowerCase();
923          return "*" === e ? function () {
924            return !0
925          } : function (e) {
926            return e.nodeName && e.nodeName.toLowerCase() === t
927          }
928        }, CLASS: function (e) {
929          var t = E[e + " "];
930          return t || (t = new RegExp("(^|" + M + ")" + e + "(" + M + "|$)")) && E(e, function (e) {
931            return t.test("string" == typeof e.className && e.className || "undefined" != typeof e.getAttribute && e.getAttribute("class") || "")
932          })
933        }, ATTR: function (e, t, n) {
934          return function (r) {
935            var i = oe.attr(r, e);
936            return null == i ? "!=" === t : !t || (i += "", "=" === t ? i === n : "!=" === t ? i !== n : "^=" === t ? n && 0 === i.indexOf(n) : "*=" === t ? n && i.indexOf(n) > -1 : "$=" === t ? n && i.slice(-n.length) === n : "~=" === t ? (" " + i.replace($, " ") + " ").indexOf(n) > -1 : "|=" === t && (i === n || i.slice(0, n.length + 1) === n + "-"))
937          }
938        }, CHILD: function (e, t, n, r, i) {
939          var o = "nth" !== e.slice(0, 3), a = "last" !== e.slice(-4), s = "of-type" === t;
940          return 1 === r && 0 === i ? function (e) {
941            return !!e.parentNode
942          } : function (t, n, u) {
943            var l, c, f, p, d, h, g = o !== a ? "nextSibling" : "previousSibling", y = t.parentNode, v = s && t.nodeName.toLowerCase(), m = !u && !s, x = !1;
944            if (y) {
945              if (o) {
946                while (g) {
947                  p = t;
948                  while (p = p[g])
949                    if (s ? p.nodeName.toLowerCase() === v : 1 === p.nodeType)
950                      return !1;
951                  h = g = "only" === e && !h && "nextSibling"
952                }
953                return !0
954              }
955              if (h = [a ? y.firstChild : y.lastChild], a && m) {
956                x = (d = (l = (c = (f = (p = y)[b] || (p[b] = {}))[p.uniqueID] || (f[p.uniqueID] = {}))[e] || [])[0] === T && l[1]) && l[2], p = d && y.childNodes[d];
957                while (p = ++d && p && p[g] || (x = d = 0) || h.pop())
958                  if (1 === p.nodeType && ++x && p === t) {
959                    c[e] = [T, d, x];
960                    break
961                  }
962              } else if (m && (x = d = (l = (c = (f = (p = t)[b] || (p[b] = {}))[p.uniqueID] || (f[p.uniqueID] = {}))[e] || [])[0] === T && l[1]), !1 === x)
963                while (p = ++d && p && p[g] || (x = d = 0) || h.pop())
964                  if ((s ? p.nodeName.toLowerCase() === v : 1 === p.nodeType) && ++x && (m && ((c = (f = p[b] || (p[b] = {}))[p.uniqueID] || (f[p.uniqueID] = {}))[e] = [T, x]), p === t))
965                    break;
966              return (x -= i) === r || x % r == 0 && x / r >= 0
967            }
968          }
969        }, PSEUDO: function (e, t) {
970          var n, i = r.pseudos[e] || r.setFilters[e.toLowerCase()] || oe.error("unsupported pseudo: " + e);
971          return i[b] ? i(t) : i.length > 1 ? (n = [e, e, "", t], r.setFilters.hasOwnProperty(e.toLowerCase()) ? se(function (e, n) {
972            var r, o = i(e, t), a = o.length;
973            while (a--)
974              e[r = O(e, o[a])] = !(n[r] = o[a])
975          }) : function (e) {
976            return i(e, 0, n)
977          }) : i
978        }
979      }, pseudos: {
980        not: se(function (e) {
981          var t = [], n = [], r = s(e.replace(B, "$1"));
982          return r[b] ? se(function (e, t, n, i) {
983            var o, a = r(e, null, i, []), s = e.length;
984            while (s--)
985              (o = a[s]) && (e[s] = !(t[s] = o))
986          }) : function (e, i, o) {
987            return t[0] = e, r(t, null, o, n), t[0] = null, !n.pop()
988          }
989        }), has: se(function (e) {
990          return function (t) {
991            return oe(e, t).length > 0
992          }
993        }), contains: se(function (e) {
994          return e = e.replace(Z, ee), function (t) {
995            return (t.textContent || t.innerText || i(t)).indexOf(e) > -1
996          }
997        }), lang: se(function (e) {
998          return U.test(e || "") || oe.error("unsupported lang: " + e), e = e.replace(Z, ee).toLowerCase(), function (t) {
999            var n;
1000            do {
1001              if (n = g ? t.lang : t.getAttribute("xml:lang") || t.getAttribute("lang"))
1002                return (n = n.toLowerCase()) === e || 0 === n.indexOf(e + "-")
1003            } while ((t = t.parentNode) && 1 === t.nodeType);
1004            return !1
1005          }
1006        }), target: function (t) {
1007          var n = e.location && e.location.hash;
1008          return n && n.slice(1) === t.id
1009        }, root: function (e) {
1010          return e === h
1011        }, focus: function (e) {
1012          return e === d.activeElement && (!d.hasFocus || d.hasFocus()) && !!(e.type || e.href || ~e.tabIndex)
1013        }, enabled: de(!1), disabled: de(!0), checked: function (e) {
1014          var t = e.nodeName.toLowerCase();
1015          return "input" === t && !!e.checked || "option" === t && !!e.selected
1016        }, selected: function (e) {
1017          return e.parentNode && e.parentNode.selectedIndex, !0 === e.selected
1018        }, empty: function (e) {
1019          for (e = e.firstChild; e; e = e.nextSibling)
1020            if (e.nodeType < 6)
1021              return !1;
1022          return !0
1023        }, parent: function (e) {
1024          return !r.pseudos.empty(e)
1025        }, header: function (e) {
1026          return Y.test(e.nodeName)
1027        }, input: function (e) {
1028          return G.test(e.nodeName)
1029        }, button: function (e) {
1030          var t = e.nodeName.toLowerCase();
1031          return "input" === t && "button" === e.type || "button" === t
1032        }, text: function (e) {
1033          var t;
1034          return "input" === e.nodeName.toLowerCase() && "text" === e.type && (null == (t = e.getAttribute("type")) || "text" === t.toLowerCase())
1035        }, first: he(function () {
1036          return [0]
1037        }), last: he(function (e, t) {
1038          return [t - 1]
1039        }), eq: he(function (e, t, n) {
1040          return [n < 0 ? n + t : n]
1041        }), even: he(function (e, t) {
1042          for (var n = 0; n < t; n += 2)
1043            e.push(n);
1044          return e
1045        }), odd: he(function (e, t) {
1046          for (var n = 1; n < t; n += 2)
1047            e.push(n);
1048          return e
1049        }), lt: he(function (e, t, n) {
1050          for (var r = n < 0 ? n + t : n; --r >= 0;)
1051            e.push(r);
1052          return e
1053        }), gt: he(function (e, t, n) {
1054          for (var r = n < 0 ? n + t : n; ++r < t;)
1055            e.push(r);
1056          return e
1057        })
1058      }
1059    }).pseudos.nth = r.pseudos.eq;
1060    for (t in { radio: !0, checkbox: !0, file: !0, password: !0, image: !0 })
1061      r.pseudos[t] = fe(t);
1062    for (t in { submit: !0, reset: !0 })
1063      r.pseudos[t] = pe(t);
1064    function ye() {
1065    }
1066    ye.prototype = r.filters = r.pseudos, r.setFilters = new ye, a = oe.tokenize = function (e, t) {
1067      var n, i, o, a, s, u, l, c = k[e + " "];
1068      if (c)
1069        return t ? 0 : c.slice(0);
1070      s = e, u = [], l = r.preFilter;
1071      while (s) {
1072        n && !(i = F.exec(s)) || (i && (s = s.slice(i[0].length) || s), u.push(o = [])), n = !1, (i = _.exec(s)) && (n = i.shift(), o.push({ value: n, type: i[0].replace(B, " ") }), s = s.slice(n.length));
1073        for (a in r.filter)
1074          !(i = V[a].exec(s)) || l[a] && !(i = l[a](i)) || (n = i.shift(), o.push({ value: n, type: a, matches: i }), s = s.slice(n.length));
1075        if (!n)
1076          break
1077      }
1078      return t ? s.length : s ? oe.error(e) : k(e, u).slice(0)
1079    };
1080    function ve(e) {
1081      for (var t = 0, n = e.length, r = ""; t < n; t++)
1082        r += e[t].value;
1083      return r
1084    }
1085    function me(e, t, n) {
1086      var r = t.dir, i = t.next, o = i || r, a = n && "parentNode" === o, s = C++;
1087      return t.first ? function (t, n, i) {
1088        while (t = t[r])
1089          if (1 === t.nodeType || a)
1090            return e(t, n, i);
1091        return !1
1092      } : function (t, n, u) {
1093        var l, c, f, p = [T, s];
1094        if (u) {
1095          while (t = t[r])
1096            if ((1 === t.nodeType || a) && e(t, n, u))
1097              return !0
1098        } else
1099          while (t = t[r])
1100            if (1 === t.nodeType || a)
1101              if (f = t[b] || (t[b] = {}), c = f[t.uniqueID] || (f[t.uniqueID] = {}), i && i === t.nodeName.toLowerCase())
1102                t = t[r] || t;
1103              else {
1104                if ((l = c[o]) && l[0] === T && l[1] === s)
1105                  return p[2] = l[2];
1106                if (c[o] = p, p[2] = e(t, n, u))
1107                  return !0
1108              }
1109        return !1
1110      }
1111    }
1112    function xe(e) {
1113      return e.length > 1 ? function (t, n, r) {
1114        var i = e.length;
1115        while (i--)
1116          if (!e[i](t, n, r))
1117            return !1;
1118        return !0
1119      } : e[0]
1120    }
1121    function be(e, t, n) {
1122      for (var r = 0, i = t.length; r < i; r++)
1123        oe(e, t[r], n);
1124      return n
1125    }
1126    function we(e, t, n, r, i) {
1127      for (var o, a = [], s = 0, u = e.length, l = null != t; s < u; s++)
1128        (o = e[s]) && (n && !n(o, r, i) || (a.push(o), l && t.push(s)));
1129      return a
1130    }
1131    function Te(e, t, n, r, i, o) {
1132      return r && !r[b] && (r = Te(r)), i && !i[b] && (i = Te(i, o)), se(function (o, a, s, u) {
1133        var l, c, f, p = [], d = [], h = a.length, g = o || be(t || "*", s.nodeType ? [s] : s, []), y = !e || !o && t ? g : we(g, p, e, s, u), v = n ? i || (o ? e : h || r) ? [] : a : y;
1134        if (n && n(y, v, s, u), r) {
1135          l = we(v, d), r(l, [], s, u), c = l.length;
1136          while (c--)
1137            (f = l[c]) && (v[d[c]] = !(y[d[c]] = f))
1138        }
1139        if (o) {
1140          if (i || e) {
1141            if (i) {
1142              l = [], c = v.length;
1143              while (c--)
1144                (f = v[c]) && l.push(y[c] = f);
1145              i(null, v = [], l, u)
1146            }
1147            c = v.length;
1148            while (c--)
1149              (f = v[c]) && (l = i ? O(o, f) : p[c]) > -1 && (o[l] = !(a[l] = f))
1150          }
1151        } else
1152          v = we(v === a ? v.splice(h, v.length) : v), i ? i(null, a, v, u) : L.apply(a, v)
1153      })
1154    }
1155    function Ce(e) {
1156      for (var t, n, i, o = e.length, a = r.relative[e[0].type], s = a || r.relative[" "], u = a ? 1 : 0, c = me(function (e) {
1157        return e === t
1158      }, s, !0), f = me(function (e) {
1159        return O(t, e) > -1
1160      }, s, !0), p = [function (e, n, r) {
1161        var i = !a && (r || n !== l) || ((t = n).nodeType ? c(e, n, r) : f(e, n, r));
1162        return t = null, i
1163      }]; u < o; u++)
1164        if (n = r.relative[e[u].type])
1165          p = [me(xe(p), n)];
1166        else {
1167          if ((n = r.filter[e[u].type].apply(null, e[u].matches))[b]) {
1168            for (i = ++u; i < o; i++)
1169              if (r.relative[e[i].type])
1170                break;
1171            return Te(u > 1 && xe(p), u > 1 && ve(e.slice(0, u - 1).concat({ value: " " === e[u - 2].type ? "*" : "" })).replace(B, "$1"), n, u < i && Ce(e.slice(u, i)), i < o && Ce(e = e.slice(i)), i < o && ve(e))
1172          }
1173          p.push(n)
1174        }
1175      return xe(p)
1176    }
1177    function Ee(e, t) {
1178      var n = t.length > 0, i = e.length > 0, o = function (o, a, s, u, c) {
1179        var f, h, y, v = 0, m = "0", x = o && [], b = [], w = l, C = o || i && r.find.TAG("*", c), E = T += null == w ? 1 : Math.random() || .1, k = C.length;
1180        for (c && (l = a === d || a || c); m !== k && null != (f = C[m]); m++) {
1181          if (i && f) {
1182            h = 0, a || f.ownerDocument === d || (p(f), s = !g);
1183            while (y = e[h++])
1184              if (y(f, a || d, s)) {
1185                u.push(f);
1186                break
1187              }
1188            c && (T = E)
1189          }
1190          n && ((f = !y && f) && v--, o && x.push(f))
1191        }
1192        if (v += m, n && m !== v) {
1193          h = 0;
1194          while (y = t[h++])
1195            y(x, b, a, s);
1196          if (o) {
1197            if (v > 0)
1198              while (m--)
1199                x[m] || b[m] || (b[m] = j.call(u));
1200            b = we(b)
1201          }
1202          L.apply(u, b), c && !o && b.length > 0 && v + t.length > 1 && oe.uniqueSort(u)
1203        }
1204        return c && (T = E, l = w), x
1205      };
1206      return n ? se(o) : o
1207    }
1208    return s = oe.compile = function (e, t) {
1209      var n, r = [], i = [], o = S[e + " "];
1210      if (!o) {
1211        t || (t = a(e)), n = t.length;
1212        while (n--)
1213          (o = Ce(t[n]))[b] ? r.push(o) : i.push(o);
1214        (o = S(e, Ee(i, r))).selector = e
1215      }
1216      return o
1217    }, u = oe.select = function (e, t, n, i) {
1218      var o, u, l, c, f, p = "function" == typeof e && e, d = !i && a(e = p.selector || e);
1219      if (n = n || [], 1 === d.length) {
1220        if ((u = d[0] = d[0].slice(0)).length > 2 && "ID" === (l = u[0]).type && 9 === t.nodeType && g && r.relative[u[1].type]) {
1221          if (!(t = (r.find.ID(l.matches[0].replace(Z, ee), t) || [])[0]))
1222            return n;
1223          p && (t = t.parentNode), e = e.slice(u.shift().value.length)
1224        }
1225        o = V.needsContext.test(e) ? 0 : u.length;
1226        while (o--) {
1227          if (l = u[o], r.relative[c = l.type])
1228            break;
1229          if ((f = r.find[c]) && (i = f(l.matches[0].replace(Z, ee), K.test(u[0].type) && ge(t.parentNode) || t))) {
1230            if (u.splice(o, 1), !(e = i.length && ve(u)))
1231              return L.apply(n, i), n;
1232            break
1233          }
1234        }
1235      }
1236      return (p || s(e, d))(i, t, !g, n, !t || K.test(e) && ge(t.parentNode) || t), n
1237    }, n.sortStable = b.split("").sort(D).join("") === b, n.detectDuplicates = !!f, p(), n.sortDetached = ue(function (e) {
1238      return 1 & e.compareDocumentPosition(d.createElement("fieldset"))
1239    }), ue(function (e) {
1240      return e.innerHTML = "<a href='#'></a>", "#" === e.firstChild.getAttribute("href")
1241    }) || le("type|href|height|width", function (e, t, n) {
1242      if (!n)
1243        return e.getAttribute(t, "type" === t.toLowerCase() ? 1 : 2)
1244    }), n.attributes && ue(function (e) {
1245      return e.innerHTML = "<input/>", e.firstChild.setAttribute("value", ""), "" === e.firstChild.getAttribute("value")
1246    }) || le("value", function (e, t, n) {
1247      if (!n && "input" === e.nodeName.toLowerCase())
1248        return e.defaultValue
1249    }), ue(function (e) {
1250      return null == e.getAttribute("disabled")
1251    }) || le(P, function (e, t, n) {
1252      var r;
1253      if (!n)
1254        return !0 === e[t] ? t.toLowerCase() : (r = e.getAttributeNode(t)) && r.specified ? r.value : null
1255    }), oe
1256  }(e);
1257  w.find = E, w.expr = E.selectors, w.expr[":"] = w.expr.pseudos, w.uniqueSort = w.unique = E.uniqueSort, w.text = E.getText, w.isXMLDoc = E.isXML, w.contains = E.contains, w.escapeSelector = E.escape;
1258  var k = function (e, t, n) {
1259    var r = [], i = void 0 !== n;
1260    while ((e = e[t]) && 9 !== e.nodeType)
1261      if (1 === e.nodeType) {
1262        if (i && w(e).is(n))
1263          break;
1264        r.push(e)
1265      }
1266    return r
1267  }, S = function (e, t) {
1268    for (var n = []; e; e = e.nextSibling)
1269      1 === e.nodeType && e !== t && n.push(e);
1270    return n
1271  }, D = w.expr.match.needsContext;
1272  function N(e, t) {
1273    return e.nodeName && e.nodeName.toLowerCase() === t.toLowerCase()
1274  }
1275  var A = /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;
1276  function j(e, t, n) {
1277    return g(t) ? w.grep(e, function (e, r) {
1278      return !!t.call(e, r, e) !== n
1279    }) : t.nodeType ? w.grep(e, function (e) {
1280      return e === t !== n
1281    }) : "string" != typeof t ? w.grep(e, function (e) {
1282      return u.call(t, e) > -1 !== n
1283    }) : w.filter(t, e, n)
1284  }
1285  w.filter = function (e, t, n) {
1286    var r = t[0];
1287    return n && (e = ":not(" + e + ")"), 1 === t.length && 1 === r.nodeType ? w.find.matchesSelector(r, e) ? [r] : [] : w.find.matches(e, w.grep(t, function (e) {
1288      return 1 === e.nodeType
1289    }))
1290  }, w.fn.extend({
1291    find: function (e) {
1292      var t, n, r = this.length, i = this;
1293      if ("string" != typeof e)
1294        return this.pushStack(w(e).filter(function () {
1295          for (t = 0; t < r; t++)
1296            if (w.contains(i[t], this))
1297              return !0
1298        }));
1299      for (n = this.pushStack([]), t = 0; t < r; t++)
1300        w.find(e, i[t], n);
1301      return r > 1 ? w.uniqueSort(n) : n
1302    }, filter: function (e) {
1303      return this.pushStack(j(this, e || [], !1))
1304    }, not: function (e) {
1305      return this.pushStack(j(this, e || [], !0))
1306    }, is: function (e) {
1307      return !!j(this, "string" == typeof e && D.test(e) ? w(e) : e || [], !1).length
1308    }
1309  });
1310  var q, L = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;
1311  (w.fn.init = function (e, t, n) {
1312    var i, o;
1313    if (!e)
1314      return this;
1315    if (n = n || q, "string" == typeof e) {
1316      if (!(i = "<" === e[0] && ">" === e[e.length - 1] && e.length >= 3 ? [null, e, null] : L.exec(e)) || !i[1] && t)
1317        return !t || t.jquery ? (t || n).find(e) : this.constructor(t).find(e);
1318      if (i[1]) {
1319        if (t = t instanceof w ? t[0] : t, w.merge(this, w.parseHTML(i[1], t && t.nodeType ? t.ownerDocument || t : r, !0)), A.test(i[1]) && w.isPlainObject(t))
1320          for (i in t)
1321            g(this[i]) ? this[i](t[i]) : this.attr(i, t[i]);
1322        return this
1323      }
1324      return (o = r.getElementById(i[2])) && (this[0] = o, this.length = 1), this
1325    }
1326    return e.nodeType ? (this[0] = e, this.length = 1, this) : g(e) ? void 0 !== n.ready ? n.ready(e) : e(w) : w.makeArray(e, this)
1327  }).prototype = w.fn, q = w(r);
1328  var H = /^(?:parents|prev(?:Until|All))/, O = { children: !0, contents: !0, next: !0, prev: !0 };
1329  w.fn.extend({
1330    has: function (e) {
1331      var t = w(e, this), n = t.length;
1332      return this.filter(function () {
1333        for (var e = 0; e < n; e++)
1334          if (w.contains(this, t[e]))
1335            return !0
1336      })
1337    }, closest: function (e, t) {
1338      var n, r = 0, i = this.length, o = [], a = "string" != typeof e && w(e);
1339      if (!D.test(e))
1340        for (; r < i; r++)
1341          for (n = this[r]; n && n !== t; n = n.parentNode)
1342            if (n.nodeType < 11 && (a ? a.index(n) > -1 : 1 === n.nodeType && w.find.matchesSelector(n, e))) {
1343              o.push(n);
1344              break
1345            }
1346      return this.pushStack(o.length > 1 ? w.uniqueSort(o) : o)
1347    }, index: function (e) {
1348      return e ? "string" == typeof e ? u.call(w(e), this[0]) : u.call(this, e.jquery ? e[0] : e) : this[0] && this[0].parentNode ? this.first().prevAll().length : -1
1349    }, add: function (e, t) {
1350      return this.pushStack(w.uniqueSort(w.merge(this.get(), w(e, t))))
1351    }, addBack: function (e) {
1352      return this.add(null == e ? this.prevObject : this.prevObject.filter(e))
1353    }
1354  });
1355  function P(e, t) {
1356    while ((e = e[t]) && 1 !== e.nodeType)
1357      ;
1358    return e
1359  }
1360  w.each({
1361    parent: function (e) {
1362      var t = e.parentNode;
1363      return t && 11 !== t.nodeType ? t : null
1364    }, parents: function (e) {
1365      return k(e, "parentNode")
1366    }, parentsUntil: function (e, t, n) {
1367      return k(e, "parentNode", n)
1368    }, next: function (e) {
1369      return P(e, "nextSibling")
1370    }, prev: function (e) {
1371      return P(e, "previousSibling")
1372    }, nextAll: function (e) {
1373      return k(e, "nextSibling")
1374    }, prevAll: function (e) {
1375      return k(e, "previousSibling")
1376    }, nextUntil: function (e, t, n) {
1377      return k(e, "nextSibling", n)
1378    }, prevUntil: function (e, t, n) {
1379      return k(e, "previousSibling", n)
1380    }, siblings: function (e) {
1381      return S((e.parentNode || {}).firstChild, e)
1382    }, children: function (e) {
1383      return S(e.firstChild)
1384    }, contents: function (e) {
1385      return N(e, "iframe") ? e.contentDocument : (N(e, "template") && (e = e.content || e), w.merge([], e.childNodes))
1386    }
1387  }, function (e, t) {
1388    w.fn[e] = function (n, r) {
1389      var i = w.map(this, t, n);
1390      return "Until" !== e.slice(-5) && (r = n), r && "string" == typeof r && (i = w.filter(r, i)), this.length > 1 && (O[e] || w.uniqueSort(i), H.test(e) && i.reverse()), this.pushStack(i)
1391    }
1392  });
1393  var M = /[^\x20\t\r\n\f]+/g;
1394  function R(e) {
1395    var t = {};
1396    return w.each(e.match(M) || [], function (e, n) {
1397      t[n] = !0
1398    }), t
1399  }
1400  w.Callbacks = function (e) {
1401    e = "string" == typeof e ? R(e) : w.extend({}, e);
1402    var t, n, r, i, o = [], a = [], s = -1, u = function () {
1403      for (i = i || e.once, r = t = !0; a.length; s = -1) {
1404        n = a.shift();
1405        while (++s < o.length)
1406          !1 === o[s].apply(n[0], n[1]) && e.stopOnFalse && (s = o.length, n = !1)
1407      }
1408      e.memory || (n = !1), t = !1, i && (o = n ? [] : "")
1409    }, l = {
1410      add: function () {
1411        return o && (n && !t && (s = o.length - 1, a.push(n)), function t(n) {
1412          w.each(n, function (n, r) {
1413            g(r) ? e.unique && l.has(r) || o.push(r) : r && r.length && "string" !== x(r) && t(r)
1414          })
1415        }(arguments), n && !t && u()), this
1416      }, remove: function () {
1417        return w.each(arguments, function (e, t) {
1418          var n;
1419          while ((n = w.inArray(t, o, n)) > - 1)
1420            o.splice(n, 1), n <= s && s--
1421        }), this
1422      }, has: function (e) {
1423        return e ? w.inArray(e, o) > -1 : o.length > 0
1424      }, empty: function () {
1425        return o && (o = []), this
1426      }, disable: function () {
1427        return i = a = [], o = n = "", this
1428      }, disabled: function () {
1429        return !o
1430      }, lock: function () {
1431        return i = a = [], n || t || (o = n = ""), this
1432      }, locked: function () {
1433        return !!i
1434      }, fireWith: function (e, n) {
1435        return i || (n = [e, (n = n || []).slice ? n.slice() : n], a.push(n), t || u()), this
1436      }, fire: function () {
1437        return l.fireWith(this, arguments), this
1438      }, fired: function () {
1439        return !!r
1440      }
1441    };
1442    return l
1443  };
1444  function I(e) {
1445    return e
1446  }
1447  function W(e) {
1448    throw e
1449  }
1450  function $(e, t, n, r) {
1451    var i;
1452    try {
1453      e && g(i = e.promise) ? i.call(e).done(t).fail(n) : e && g(i = e.then) ? i.call(e, t, n) : t.apply(void 0, [e].slice(r))
1454    } catch (e) {
1455      n.apply(void 0, [e])
1456    }
1457  }
1458  w.extend({
1459    Deferred: function (t) {
1460      var n = [["notify", "progress", w.Callbacks("memory"), w.Callbacks("memory"), 2], ["resolve", "done", w.Callbacks("once memory"), w.Callbacks("once memory"), 0, "resolved"], ["reject", "fail", w.Callbacks("once memory"), w.Callbacks("once memory"), 1, "rejected"]], r = "pending", i = {
1461        state: function () {
1462          return r
1463        }, always: function () {
1464          return o.done(arguments).fail(arguments), this
1465        }, "catch": function (e) {
1466          return i.then(null, e)
1467        }, pipe: function () {
1468          var e = arguments;
1469          return w.Deferred(function (t) {
1470            w.each(n, function (n, r) {
1471              var i = g(e[r[4]]) && e[r[4]];
1472              o[r[1]](function () {
1473                var e = i && i.apply(this, arguments);
1474                e && g(e.promise) ? e.promise().progress(t.notify).done(t.resolve).fail(t.reject) : t[r[0] + "With"](this, i ? [e] : arguments)
1475              })
1476            }), e = null
1477          }).promise()
1478        }, then: function (t, r, i) {
1479          var o = 0;
1480          function a(t, n, r, i) {
1481            return function () {
1482              var s = this, u = arguments, l = function () {
1483                var e, l;
1484                if (!(t < o)) {
1485                  if ((e = r.apply(s, u)) === n.promise())
1486                    throw new TypeError("Thenable self-resolution");
1487                  l = e && ("object" == typeof e || "function" == typeof e) && e.then, g(l) ? i ? l.call(e, a(o, n, I, i), a(o, n, W, i)) : (o++, l.call(e, a(o, n, I, i), a(o, n, W, i), a(o, n, I, n.notifyWith))) : (r !== I && (s = void 0, u = [e]), (i || n.resolveWith)(s, u))
1488                }
1489              }, c = i ? l : function () {
1490                try {
1491                  l()
1492                } catch (e) {
1493                  w.Deferred.exceptionHook && w.Deferred.exceptionHook(e, c.stackTrace), t + 1 >= o && (r !== W && (s = void 0, u = [e]), n.rejectWith(s, u))
1494                }
1495              };
1496              t ? c() : (w.Deferred.getStackHook && (c.stackTrace = w.Deferred.getStackHook()), e.setTimeout(c))
1497            }
1498          }
1499          return w.Deferred(function (e) {
1500            n[0][3].add(a(0, e, g(i) ? i : I, e.notifyWith)), n[1][3].add(a(0, e, g(t) ? t : I)), n[2][3].add(a(0, e, g(r) ? r : W))
1501          }).promise()
1502        }, promise: function (e) {
1503          return null != e ? w.extend(e, i) : i
1504        }
1505      }, o = {};
1506      return w.each(n, function (e, t) {
1507        var a = t[2], s = t[5];
1508        i[t[1]] = a.add, s && a.add(function () {
1509          r = s
1510        }, n[3 - e][2].disable, n[3 - e][3].disable, n[0][2].lock, n[0][3].lock), a.add(t[3].fire), o[t[0]] = function () {
1511          return o[t[0] + "With"](this === o ? void 0 : this, arguments), this
1512        }, o[t[0] + "With"] = a.fireWith
1513      }), i.promise(o), t && t.call(o, o), o
1514    }, when: function (e) {
1515      var t = arguments.length, n = t, r = Array(n), i = o.call(arguments), a = w.Deferred(), s = function (e) {
1516        return function (n) {
1517          r[e] = this, i[e] = arguments.length > 1 ? o.call(arguments) : n, --t || a.resolveWith(r, i)
1518        }
1519      };
1520      if (t <= 1 && ($(e, a.done(s(n)).resolve, a.reject, !t), "pending" === a.state() || g(i[n] && i[n].then)))
1521        return a.then();
1522      while (n--)
1523        $(i[n], s(n), a.reject);
1524      return a.promise()
1525    }
1526  });
1527  var B = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;
1528  w.Deferred.exceptionHook = function (t, n) {
1529    e.console && e.console.warn && t && B.test(t.name) && e.console.warn("jQuery.Deferred exception: " + t.message, t.stack, n)
1530  }, w.readyException = function (t) {
1531    e.setTimeout(function () {
1532      throw t
1533    })
1534  };
1535  var F = w.Deferred();
1536  w.fn.ready = function (e) {
1537    return F.then(e)["catch"](function (e) {
1538      w.readyException(e)
1539    }), this
1540  }, w.extend({
1541    isReady: !1, readyWait: 1, ready: function (e) {
1542      (!0 === e ? --w.readyWait : w.isReady) || (w.isReady = !0, !0 !== e && --w.readyWait > 0 || F.resolveWith(r, [w]))
1543    }
1544  }), w.ready.then = F.then;
1545  function _() {
1546    r.removeEventListener("DOMContentLoaded", _), e.removeEventListener("load", _), w.ready()
1547  }
1548  "complete" === r.readyState || "loading" !== r.readyState && !r.documentElement.doScroll ? e.setTimeout(w.ready) : (r.addEventListener("DOMContentLoaded", _), e.addEventListener("load", _));
1549  var z = function (e, t, n, r, i, o, a) {
1550    var s = 0, u = e.length, l = null == n;
1551    if ("object" === x(n)) {
1552      i = !0;
1553      for (s in n)
1554        z(e, t, s, n[s], !0, o, a)
1555    } else if (void 0 !== r && (i = !0, g(r) || (a = !0), l && (a ? (t.call(e, r), t = null) : (l = t, t = function (e, t, n) {
1556      return l.call(w(e), n)
1557    })), t))
1558      for (; s < u; s++)
1559        t(e[s], n, a ? r : r.call(e[s], s, t(e[s], n)));
1560    return i ? e : l ? t.call(e) : u ? t(e[0], n) : o
1561  }, X = /^-ms-/, U = /-([a-z])/g;
1562  function V(e, t) {
1563    return t.toUpperCase()
1564  }
1565  function G(e) {
1566    return e.replace(X, "ms-").replace(U, V)
1567  }
1568  var Y = function (e) {
1569    return 1 === e.nodeType || 9 === e.nodeType || !+e.nodeType
1570  };
1571  function Q() {
1572    this.expando = w.expando + Q.uid++
1573  }
1574  Q.uid = 1, Q.prototype = {
1575    cache: function (e) {
1576      var t = e[this.expando];
1577      return t || (t = {}, Y(e) && (e.nodeType ? e[this.expando] = t : Object.defineProperty(e, this.expando, { value: t, configurable: !0 }))), t
1578    }, set: function (e, t, n) {
1579      var r, i = this.cache(e);
1580      if ("string" == typeof t)
1581        i[G(t)] = n;
1582      else
1583        for (r in t)
1584          i[G(r)] = t[r];
1585      return i
1586    }, get: function (e, t) {
1587      return void 0 === t ? this.cache(e) : e[this.expando] && e[this.expando][G(t)]
1588    }, access: function (e, t, n) {
1589      return void 0 === t || t && "string" == typeof t && void 0 === n ? this.get(e, t) : (this.set(e, t, n), void 0 !== n ? n : t)
1590    }, remove: function (e, t) {
1591      var n, r = e[this.expando];
1592      if (void 0 !== r) {
1593        if (void 0 !== t) {
1594          n = (t = Array.isArray(t) ? t.map(G) : (t = G(t)) in r ? [t] : t.match(M) || []).length;
1595          while (n--)
1596            delete r[t[n]]
1597        }
1598        (void 0 === t || w.isEmptyObject(r)) && (e.nodeType ? e[this.expando] = void 0 : delete e[this.expando])
1599      }
1600    }, hasData: function (e) {
1601      var t = e[this.expando];
1602      return void 0 !== t && !w.isEmptyObject(t)
1603    }
1604  };
1605  var J = new Q, K = new Q, Z = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, ee = /[A-Z]/g;
1606  function te(e) {
1607    return "true" === e || "false" !== e && ("null" === e ? null : e === +e + "" ? +e : Z.test(e) ? JSON.parse(e) : e)
1608  }
1609  function ne(e, t, n) {
1610    var r;
1611    if (void 0 === n && 1 === e.nodeType)
1612      if (r = "data-" + t.replace(ee, "-$&").toLowerCase(), "string" == typeof (n = e.getAttribute(r))) {
1613        try {
1614          n = te(n)
1615        } catch (e) {
1616        }
1617        K.set(e, t, n)
1618      } else
1619        n = void 0;
1620    return n
1621  }
1622  w.extend({
1623    hasData: function (e) {
1624      return K.hasData(e) || J.hasData(e)
1625    }, data: function (e, t, n) {
1626      return K.access(e, t, n)
1627    }, removeData: function (e, t) {
1628      K.remove(e, t)
1629    }, _data: function (e, t, n) {
1630      return J.access(e, t, n)
1631    }, _removeData: function (e, t) {
1632      J.remove(e, t)
1633    }
1634  }), w.fn.extend({
1635    data: function (e, t) {
1636      var n, r, i, o = this[0], a = o && o.attributes;
1637      if (void 0 === e) {
1638        if (this.length && (i = K.get(o), 1 === o.nodeType && !J.get(o, "hasDataAttrs"))) {
1639          n = a.length;
1640          while (n--)
1641            a[n] && 0 === (r = a[n].name).indexOf("data-") && (r = G(r.slice(5)), ne(o, r, i[r]));
1642          J.set(o, "hasDataAttrs", !0)
1643        }
1644        return i
1645      }
1646      return "object" == typeof e ? this.each(function () {
1647        K.set(this, e)
1648      }) : z(this, function (t) {
1649        var n;
1650        if (o && void 0 === t) {
1651          if (void 0 !== (n = K.get(o, e)))
1652            return n;
1653          if (void 0 !== (n = ne(o, e)))
1654            return n
1655        } else
1656          this.each(function () {
1657            K.set(this, e, t)
1658          })
1659      }, null, t, arguments.length > 1, null, !0)
1660    }, removeData: function (e) {
1661      return this.each(function () {
1662        K.remove(this, e)
1663      })
1664    }
1665  }), w.extend({
1666    queue: function (e, t, n) {
1667      var r;
1668      if (e)
1669        return t = (t || "fx") + "queue", r = J.get(e, t), n && (!r || Array.isArray(n) ? r = J.access(e, t, w.makeArray(n)) : r.push(n)), r || []
1670    }, dequeue: function (e, t) {
1671      t = t || "fx";
1672      var n = w.queue(e, t), r = n.length, i = n.shift(), o = w._queueHooks(e, t), a = function () {
1673        w.dequeue(e, t)
1674      };
1675      "inprogress" === i && (i = n.shift(), r--), i && ("fx" === t && n.unshift("inprogress"), delete o.stop, i.call(e, a, o)), !r && o && o.empty.fire()
1676    }, _queueHooks: function (e, t) {
1677      var n = t + "queueHooks";
1678      return J.get(e, n) || J.access(e, n, {
1679        empty: w.Callbacks("once memory").add(function () {
1680          J.remove(e, [t + "queue", n])
1681        })
1682      })
1683    }
1684  }), w.fn.extend({
1685    queue: function (e, t) {
1686      var n = 2;
1687      return "string" != typeof e && (t = e, e = "fx", n--), arguments.length < n ? w.queue(this[0], e) : void 0 === t ? this : this.each(function () {
1688        var n = w.queue(this, e, t);
1689        w._queueHooks(this, e), "fx" === e && "inprogress" !== n[0] && w.dequeue(this, e)
1690      })
1691    }, dequeue: function (e) {
1692      return this.each(function () {
1693        w.dequeue(this, e)
1694      })
1695    }, clearQueue: function (e) {
1696      return this.queue(e || "fx", [])
1697    }, promise: function (e, t) {
1698      var n, r = 1, i = w.Deferred(), o = this, a = this.length, s = function () {
1699        --r || i.resolveWith(o, [o])
1700      };
1701      "string" != typeof e && (t = e, e = void 0), e = e || "fx";
1702      while (a--)
1703        (n = J.get(o[a], e + "queueHooks")) && n.empty && (r++, n.empty.add(s));
1704      return s(), i.promise(t)
1705    }
1706  });
1707  var re = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source, ie = new RegExp("^(?:([+-])=|)(" + re + ")([a-z%]*)$", "i"), oe = ["Top", "Right", "Bottom", "Left"], ae = function (e, t) {
1708    return "none" === (e = t || e).style.display || "" === e.style.display && w.contains(e.ownerDocument, e) && "none" === w.css(e, "display")
1709  }, se = function (e, t, n, r) {
1710    var i, o, a = {};
1711    for (o in t)
1712      a[o] = e.style[o], e.style[o] = t[o];
1713    i = n.apply(e, r || []);
1714    for (o in t)
1715      e.style[o] = a[o];
1716    return i
1717  };
1718  function ue(e, t, n, r) {
1719    var i, o, a = 20, s = r ? function () {
1720      return r.cur()
1721    } : function () {
1722      return w.css(e, t, "")
1723    }, u = s(), l = n && n[3] || (w.cssNumber[t] ? "" : "px"), c = (w.cssNumber[t] || "px" !== l && +u) && ie.exec(w.css(e, t));
1724    if (c && c[3] !== l) {
1725      u /= 2, l = l || c[3], c = +u || 1;
1726      while (a--)
1727        w.style(e, t, c + l), (1 - o) * (1 - (o = s() / u || .5)) <= 0 && (a = 0), c /= o;
1728      c *= 2, w.style(e, t, c + l), n = n || []
1729    }
1730    return n && (c = +c || +u || 0, i = n[1] ? c + (n[1] + 1) * n[2] : +n[2], r && (r.unit = l, r.start = c, r.end = i)), i
1731  }
1732  var le = {};
1733  function ce(e) {
1734    var t, n = e.ownerDocument, r = e.nodeName, i = le[r];
1735    return i || (t = n.body.appendChild(n.createElement(r)), i = w.css(t, "display"), t.parentNode.removeChild(t), "none" === i && (i = "block"), le[r] = i, i)
1736  }
1737  function fe(e, t) {
1738    for (var n, r, i = [], o = 0, a = e.length; o < a; o++)
1739      (r = e[o]).style && (n = r.style.display, t ? ("none" === n && (i[o] = J.get(r, "display") || null, i[o] || (r.style.display = "")), "" === r.style.display && ae(r) && (i[o] = ce(r))) : "none" !== n && (i[o] = "none", J.set(r, "display", n)));
1740    for (o = 0; o < a; o++)
1741      null != i[o] && (e[o].style.display = i[o]);
1742    return e
1743  }
1744  w.fn.extend({
1745    show: function () {
1746      return fe(this, !0)
1747    }, hide: function () {
1748      return fe(this)
1749    }, toggle: function (e) {
1750      return "boolean" == typeof e ? e ? this.show() : this.hide() : this.each(function () {
1751        ae(this) ? w(this).show() : w(this).hide()
1752      })
1753    }
1754  });
1755  var pe = /^(?:checkbox|radio)$/i, de = /<([a-z][^\/\0>\x20\t\r\n\f]+)/i, he = /^$|^module$|\/(?:java|ecma)script/i, ge = { option: [1, "<select multiple='multiple'>", "</select>"], thead: [1, "<table>", "</table>"], col: [2, "<table><colgroup>", "</colgroup></table>"], tr: [2, "<table><tbody>", "</tbody></table>"], td: [3, "<table><tbody><tr>", "</tr></tbody></table>"], _default: [0, "", ""] };
1756  ge.optgroup = ge.option, ge.tbody = ge.tfoot = ge.colgroup = ge.caption = ge.thead, ge.th = ge.td;
1757  function ye(e, t) {
1758    var n;
1759    return n = "undefined" != typeof e.getElementsByTagName ? e.getElementsByTagName(t || "*") : "undefined" != typeof e.querySelectorAll ? e.querySelectorAll(t || "*") : [], void 0 === t || t && N(e, t) ? w.merge([e], n) : n
1760  }
1761  function ve(e, t) {
1762    for (var n = 0, r = e.length; n < r; n++)
1763      J.set(e[n], "globalEval", !t || J.get(t[n], "globalEval"))
1764  }
1765  var me = /<|&#?\w+;/;
1766  function xe(e, t, n, r, i) {
1767    for (var o, a, s, u, l, c, f = t.createDocumentFragment(), p = [], d = 0, h = e.length; d < h; d++)
1768      if ((o = e[d]) || 0 === o)
1769        if ("object" === x(o))
1770          w.merge(p, o.nodeType ? [o] : o);
1771        else if (me.test(o)) {
1772          a = a || f.appendChild(t.createElement("div")), s = (de.exec(o) || ["", ""])[1].toLowerCase(), u = ge[s] || ge._default, a.innerHTML = u[1] + w.htmlPrefilter(o) + u[2], c = u[0];
1773          while (c--)
1774            a = a.lastChild;
1775          w.merge(p, a.childNodes), (a = f.firstChild).textContent = ""
1776        } else
1777          p.push(t.createTextNode(o));
1778    f.textContent = "", d = 0;
1779    while (o = p[d++])
1780      if (r && w.inArray(o, r) > -1)
1781        i && i.push(o);
1782      else if (l = w.contains(o.ownerDocument, o), a = ye(f.appendChild(o), "script"), l && ve(a), n) {
1783        c = 0;
1784        while (o = a[c++])
1785          he.test(o.type || "") && n.push(o)
1786      }
1787    return f
1788  }
1789  !function () {
1790    var e = r.createDocumentFragment().appendChild(r.createElement("div")), t = r.createElement("input");
1791    t.setAttribute("type", "radio"), t.setAttribute("checked", "checked"), t.setAttribute("name", "t"), e.appendChild(t), h.checkClone = e.cloneNode(!0).cloneNode(!0).lastChild.checked, e.innerHTML = "<textarea>x</textarea>", h.noCloneChecked = !!e.cloneNode(!0).lastChild.defaultValue
1792  }();
1793  var be = r.documentElement, we = /^key/, Te = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, Ce = /^([^.]*)(?:\.(.+)|)/;
1794  function Ee() {
1795    return !0
1796  }
1797  function ke() {
1798    return !1
1799  }
1800  function Se() {
1801    try {
1802      return r.activeElement
1803    } catch (e) {
1804    }
1805  }
1806  function De(e, t, n, r, i, o) {
1807    var a, s;
1808    if ("object" == typeof t) {
1809      "string" != typeof n && (r = r || n, n = void 0);
1810      for (s in t)
1811        De(e, s, n, r, t[s], o);
1812      return e
1813    }
1814    if (null == r && null == i ? (i = n, r = n = void 0) : null == i && ("string" == typeof n ? (i = r, r = void 0) : (i = r, r = n, n = void 0)), !1 === i)
1815      i = ke;
1816    else if (!i)
1817      return e;
1818    return 1 === o && (a = i, (i = function (e) {
1819      return w().off(e), a.apply(this, arguments)
1820    }).guid = a.guid || (a.guid = w.guid++)), e.each(function () {
1821      w.event.add(this, t, i, r, n)
1822    })
1823  }
1824  w.event = {
1825    global: {}, add: function (e, t, n, r, i) {
1826      var o, a, s, u, l, c, f, p, d, h, g, y = J.get(e);
1827      if (y) {
1828        n.handler && (n = (o = n).handler, i = o.selector), i && w.find.matchesSelector(be, i), n.guid || (n.guid = w.guid++), (u = y.events) || (u = y.events = {}), (a = y.handle) || (a = y.handle = function (t) {
1829          return "undefined" != typeof w && w.event.triggered !== t.type ? w.event.dispatch.apply(e, arguments) : void 0
1830        }), l = (t = (t || "").match(M) || [""]).length;
1831        while (l--)
1832          d = g = (s = Ce.exec(t[l]) || [])[1], h = (s[2] || "").split(".").sort(), d && (f = w.event.special[d] || {}, d = (i ? f.delegateType : f.bindType) || d, f = w.event.special[d] || {}, c = w.extend({ type: d, origType: g, data: r, handler: n, guid: n.guid, selector: i, needsContext: i && w.expr.match.needsContext.test(i), namespace: h.join(".") }, o), (p = u[d]) || ((p = u[d] = []).delegateCount = 0, f.setup && !1 !== f.setup.call(e, r, h, a) || e.addEventListener && e.addEventListener(d, a)), f.add && (f.add.call(e, c), c.handler.guid || (c.handler.guid = n.guid)), i ? p.splice(p.delegateCount++, 0, c) : p.push(c), w.event.global[d] = !0)
1833      }
1834    }, remove: function (e, t, n, r, i) {
1835      var o, a, s, u, l, c, f, p, d, h, g, y = J.hasData(e) && J.get(e);
1836      if (y && (u = y.events)) {
1837        l = (t = (t || "").match(M) || [""]).length;
1838        while (l--)
1839          if (s = Ce.exec(t[l]) || [], d = g = s[1], h = (s[2] || "").split(".").sort(), d) {
1840            f = w.event.special[d] || {}, p = u[d = (r ? f.delegateType : f.bindType) || d] || [], s = s[2] && new RegExp("(^|\\.)" + h.join("\\.(?:.*\\.|)") + "(\\.|$)"), a = o = p.length;
1841            while (o--)
1842              c = p[o], !i && g !== c.origType || n && n.guid !== c.guid || s && !s.test(c.namespace) || r && r !== c.selector && ("**" !== r || !c.selector) || (p.splice(o, 1), c.selector && p.delegateCount--, f.remove && f.remove.call(e, c));
1843            a && !p.length && (f.teardown && !1 !== f.teardown.call(e, h, y.handle) || w.removeEvent(e, d, y.handle), delete u[d])
1844          } else
1845            for (d in u)
1846              w.event.remove(e, d + t[l], n, r, !0);
1847        w.isEmptyObject(u) && J.remove(e, "handle events")
1848      }
1849    }, dispatch: function (e) {
1850      var t = w.event.fix(e), n, r, i, o, a, s, u = new Array(arguments.length), l = (J.get(this, "events") || {})[t.type] || [], c = w.event.special[t.type] || {};
1851      for (u[0] = t, n = 1; n < arguments.length; n++)
1852        u[n] = arguments[n];
1853      if (t.delegateTarget = this, !c.preDispatch || !1 !== c.preDispatch.call(this, t)) {
1854        s = w.event.handlers.call(this, t, l), n = 0;
1855        while ((o = s[n++]) && !t.isPropagationStopped()) {
1856          t.currentTarget = o.elem, r = 0;
1857          while ((a = o.handlers[r++]) && !t.isImmediatePropagationStopped())
1858            t.rnamespace && !t.rnamespace.test(a.namespace) || (t.handleObj = a, t.data = a.data, void 0 !== (i = ((w.event.special[a.origType] || {}).handle || a.handler).apply(o.elem, u)) && !1 === (t.result = i) && (t.preventDefault(), t.stopPropagation()))
1859        }
1860        return c.postDispatch && c.postDispatch.call(this, t), t.result
1861      }
1862    }, handlers: function (e, t) {
1863      var n, r, i, o, a, s = [], u = t.delegateCount, l = e.target;
1864      if (u && l.nodeType && !("click" === e.type && e.button >= 1))
1865        for (; l !== this; l = l.parentNode || this)
1866          if (1 === l.nodeType && ("click" !== e.type || !0 !== l.disabled)) {
1867            for (o = [], a = {}, n = 0; n < u; n++)
1868              void 0 === a[i = (r = t[n]).selector + " "] && (a[i] = r.needsContext ? w(i, this).index(l) > -1 : w.find(i, this, null, [l]).length), a[i] && o.push(r);
1869            o.length && s.push({ elem: l, handlers: o })
1870          }
1871      return l = this, u < t.length && s.push({ elem: l, handlers: t.slice(u) }), s
1872    }, addProp: function (e, t) {
1873      Object.defineProperty(w.Event.prototype, e, {
1874        enumerable: !0, configurable: !0, get: g(t) ? function () {
1875          if (this.originalEvent)
1876            return t(this.originalEvent)
1877        } : function () {
1878          if (this.originalEvent)
1879            return this.originalEvent[e]
1880        }, set: function (t) {
1881          Object.defineProperty(this, e, { enumerable: !0, configurable: !0, writable: !0, value: t })
1882        }
1883      })
1884    }, fix: function (e) {
1885      return e[w.expando] ? e : new w.Event(e)
1886    }, special: {
1887      load: { noBubble: !0 }, focus: {
1888        trigger: function () {
1889          if (this !== Se() && this.focus)
1890            return this.focus(), !1
1891        }, delegateType: "focusin"
1892      }, blur: {
1893        trigger: function () {
1894          if (this === Se() && this.blur)
1895            return this.blur(), !1
1896        }, delegateType: "focusout"
1897      }, click: {
1898        trigger: function () {
1899          if ("checkbox" === this.type && this.click && N(this, "input"))
1900            return this.click(), !1
1901        }, _default: function (e) {
1902          return N(e.target, "a")
1903        }
1904      }, beforeunload: {
1905        postDispatch: function (e) {
1906          void 0 !== e.result && e.originalEvent && (e.originalEvent.returnValue = e.result)
1907        }
1908      }
1909    }
1910  }, w.removeEvent = function (e, t, n) {
1911    e.removeEventListener && e.removeEventListener(t, n)
1912  }, w.Event = function (e, t) {
1913    if (!(this instanceof w.Event))
1914      return new w.Event(e, t);
1915    e && e.type ? (this.originalEvent = e, this.type = e.type, this.isDefaultPrevented = e.defaultPrevented || void 0 === e.defaultPrevented && !1 === e.returnValue ? Ee : ke, this.target = e.target && 3 === e.target.nodeType ? e.target.parentNode : e.target, this.currentTarget = e.currentTarget, this.relatedTarget = e.relatedTarget) : this.type = e, t && w.extend(this, t), this.timeStamp = e && e.timeStamp || Date.now(), this[w.expando] = !0
1916  }, w.Event.prototype = {
1917    constructor: w.Event, isDefaultPrevented: ke, isPropagationStopped: ke, isImmediatePropagationStopped: ke, isSimulated: !1, preventDefault: function () {
1918      var e = this.originalEvent;
1919      this.isDefaultPrevented = Ee, e && !this.isSimulated && e.preventDefault()
1920    }, stopPropagation: function () {
1921      var e = this.originalEvent;
1922      this.isPropagationStopped = Ee, e && !this.isSimulated && e.stopPropagation()
1923    }, stopImmediatePropagation: function () {
1924      var e = this.originalEvent;
1925      this.isImmediatePropagationStopped = Ee, e && !this.isSimulated && e.stopImmediatePropagation(), this.stopPropagation()
1926    }
1927  }, w.each({
1928    altKey: !0, bubbles: !0, cancelable: !0, changedTouches: !0, ctrlKey: !0, detail: !0, eventPhase: !0, metaKey: !0, pageX: !0, pageY: !0, shiftKey: !0, view: !0, "char": !0, charCode: !0, key: !0, keyCode: !0, button: !0, buttons: !0, clientX: !0, clientY: !0, offsetX: !0, offsetY: !0, pointerId: !0, pointerType: !0, screenX: !0, screenY: !0, targetTouches: !0, toElement: !0, touches: !0, which: function (e) {
1929      var t = e.button;
1930      return null == e.which && we.test(e.type) ? null != e.charCode ? e.charCode : e.keyCode : !e.which && void 0 !== t && Te.test(e.type) ? 1 & t ? 1 : 2 & t ? 3 : 4 & t ? 2 : 0 : e.which
1931    }
1932  }, w.event.addProp), w.each({ mouseenter: "mouseover", mouseleave: "mouseout", pointerenter: "pointerover", pointerleave: "pointerout" }, function (e, t) {
1933    w.event.special[e] = {
1934      delegateType: t, bindType: t, handle: function (e) {
1935        var n, r = this, i = e.relatedTarget, o = e.handleObj;
1936        return i && (i === r || w.contains(r, i)) || (e.type = o.origType, n = o.handler.apply(this, arguments), e.type = t), n
1937      }
1938    }
1939  }), w.fn.extend({
1940    on: function (e, t, n, r) {
1941      return De(this, e, t, n, r)
1942    }, one: function (e, t, n, r) {
1943      return De(this, e, t, n, r, 1)
1944    }, off: function (e, t, n) {
1945      var r, i;
1946      if (e && e.preventDefault && e.handleObj)
1947        return r = e.handleObj, w(e.delegateTarget).off(r.namespace ? r.origType + "." + r.namespace : r.origType, r.selector, r.handler), this;
1948      if ("object" == typeof e) {
1949        for (i in e)
1950          this.off(i, t, e[i]);
1951        return this
1952      }
1953      return !1 !== t && "function" != typeof t || (n = t, t = void 0), !1 === n && (n = ke), this.each(function () {
1954        w.event.remove(this, e, n, t)
1955      })
1956    }
1957  });
1958  var Ne = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi, Ae = /<script|<style|<link/i, je = /checked\s*(?:[^=]|=\s*.checked.)/i, qe = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;
1959  function Le(e, t) {
1960    return N(e, "table") && N(11 !== t.nodeType ? t : t.firstChild, "tr") ? w(e).children("tbody")[0] || e : e
1961  }
1962  function He(e) {
1963    return e.type = (null !== e.getAttribute("type")) + "/" + e.type, e
1964  }
1965  function Oe(e) {
1966    return "true/" === (e.type || "").slice(0, 5) ? e.type = e.type.slice(5) : e.removeAttribute("type"), e
1967  }
1968  function Pe(e, t) {
1969    var n, r, i, o, a, s, u, l;
1970    if (1 === t.nodeType) {
1971      if (J.hasData(e) && (o = J.access(e), a = J.set(t, o), l = o.events)) {
1972        delete a.handle, a.events = {};
1973        for (i in l)
1974          for (n = 0, r = l[i].length; n < r; n++)
1975            w.event.add(t, i, l[i][n])
1976      }
1977      K.hasData(e) && (s = K.access(e), u = w.extend({}, s), K.set(t, u))
1978    }
1979  }
1980  function Me(e, t) {
1981    var n = t.nodeName.toLowerCase();
1982    "input" === n && pe.test(e.type) ? t.checked = e.checked : "input" !== n && "textarea" !== n || (t.defaultValue = e.defaultValue)
1983  }
1984  function Re(e, t, n, r) {
1985    t = a.apply([], t);
1986    var i, o, s, u, l, c, f = 0, p = e.length, d = p - 1, y = t[0], v = g(y);
1987    if (v || p > 1 && "string" == typeof y && !h.checkClone && je.test(y))
1988      return e.each(function (i) {
1989        var o = e.eq(i);
1990        v && (t[0] = y.call(this, i, o.html())), Re(o, t, n, r)
1991      });
1992    if (p && (i = xe(t, e[0].ownerDocument, !1, e, r), o = i.firstChild, 1 === i.childNodes.length && (i = o), o || r)) {
1993      for (u = (s = w.map(ye(i, "script"), He)).length; f < p; f++)
1994        l = i, f !== d && (l = w.clone(l, !0, !0), u && w.merge(s, ye(l, "script"))), n.call(e[f], l, f);
1995      if (u)
1996        for (c = s[s.length - 1].ownerDocument, w.map(s, Oe), f = 0; f < u; f++)
1997          l = s[f], he.test(l.type || "") && !J.access(l, "globalEval") && w.contains(c, l) && (l.src && "module" !== (l.type || "").toLowerCase() ? w._evalUrl && w._evalUrl(l.src) : m(l.textContent.replace(qe, ""), c, l))
1998    }
1999    return e
2000  }
2001  function Ie(e, t, n) {
2002    for (var r, i = t ? w.filter(t, e) : e, o = 0; null != (r = i[o]); o++)
2003      n || 1 !== r.nodeType || w.cleanData(ye(r)), r.parentNode && (n && w.contains(r.ownerDocument, r) && ve(ye(r, "script")), r.parentNode.removeChild(r));
2004    return e
2005  }
2006  w.extend({
2007    htmlPrefilter: function (e) {
2008      return e.replace(Ne, "<$1></$2>")
2009    }, clone: function (e, t, n) {
2010      var r, i, o, a, s = e.cloneNode(!0), u = w.contains(e.ownerDocument, e);
2011      if (!(h.noCloneChecked || 1 !== e.nodeType && 11 !== e.nodeType || w.isXMLDoc(e)))
2012        for (a = ye(s), r = 0, i = (o = ye(e)).length; r < i; r++)
2013          Me(o[r], a[r]);
2014      if (t)
2015        if (n)
2016          for (o = o || ye(e), a = a || ye(s), r = 0, i = o.length; r < i; r++)
2017            Pe(o[r], a[r]);
2018        else
2019          Pe(e, s);
2020      return (a = ye(s, "script")).length > 0 && ve(a, !u && ye(e, "script")), s
2021    }, cleanData: function (e) {
2022      for (var t, n, r, i = w.event.special, o = 0; void 0 !== (n = e[o]); o++)
2023        if (Y(n)) {
2024          if (t = n[J.expando]) {
2025            if (t.events)
2026              for (r in t.events)
2027                i[r] ? w.event.remove(n, r) : w.removeEvent(n, r, t.handle);
2028            n[J.expando] = void 0
2029          }
2030          n[K.expando] && (n[K.expando] = void 0)
2031        }
2032    }
2033  }), w.fn.extend({
2034    detach: function (e) {
2035      return Ie(this, e, !0)
2036    }, remove: function (e) {
2037      return Ie(this, e)
2038    }, text: function (e) {
2039      return z(this, function (e) {
2040        return void 0 === e ? w.text(this) : this.empty().each(function () {
2041          1 !== this.nodeType && 11 !== this.nodeType && 9 !== this.nodeType || (this.textContent = e)
2042        })
2043      }, null, e, arguments.length)
2044    }, append: function () {
2045      return Re(this, arguments, function (e) {
2046        1 !== this.nodeType && 11 !== this.nodeType && 9 !== this.nodeType || Le(this, e).appendChild(e)
2047      })
2048    }, prepend: function () {
2049      return Re(this, arguments, function (e) {
2050        if (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) {
2051          var t = Le(this, e);
2052          t.insertBefore(e, t.firstChild)
2053        }
2054      })
2055    }, before: function () {
2056      return Re(this, arguments, function (e) {
2057        this.parentNode && this.parentNode.insertBefore(e, this)
2058      })
2059    }, after: function () {
2060      return Re(this, arguments, function (e) {
2061        this.parentNode && this.parentNode.insertBefore(e, this.nextSibling)
2062      })
2063    }, empty: function () {
2064      for (var e, t = 0; null != (e = this[t]); t++)
2065        1 === e.nodeType && (w.cleanData(ye(e, !1)), e.textContent = "");
2066      return this
2067    }, clone: function (e, t) {
2068      return e = null != e && e, t = null == t ? e : t, this.map(function () {
2069        return w.clone(this, e, t)
2070      })
2071    }, html: function (e) {
2072      return z(this, function (e) {
2073        var t = this[0] || {}, n = 0, r = this.length;
2074        if (void 0 === e && 1 === t.nodeType)
2075          return t.innerHTML;
2076        if ("string" == typeof e && !Ae.test(e) && !ge[(de.exec(e) || ["", ""])[1].toLowerCase()]) {
2077          e = w.htmlPrefilter(e);
2078          try {
2079            for (; n < r; n++)
2080              1 === (t = this[n] || {}).nodeType && (w.cleanData(ye(t, !1)), t.innerHTML = e);
2081            t = 0
2082          } catch (e) {
2083          }
2084        }
2085        t && this.empty().append(e)
2086      }, null, e, arguments.length)
2087    }, replaceWith: function () {
2088      var e = [];
2089      return Re(this, arguments, function (t) {
2090        var n = this.parentNode;
2091        w.inArray(this, e) < 0 && (w.cleanData(ye(this)), n && n.replaceChild(t, this))
2092      }, e)
2093    }
2094  }), w.each({ appendTo: "append", prependTo: "prepend", insertBefore: "before", insertAfter: "after", replaceAll: "replaceWith" }, function (e, t) {
2095    w.fn[e] = function (e) {
2096      for (var n, r = [], i = w(e), o = i.length - 1, a = 0; a <= o; a++)
2097        n = a === o ? this : this.clone(!0), w(i[a])[t](n), s.apply(r, n.get());
2098      return this.pushStack(r)
2099    }
2100  });
2101  var We = new RegExp("^(" + re + ")(?!px)[a-z%]+$", "i"), $e = function (t) {
2102    var n = t.ownerDocument.defaultView;
2103    return n && n.opener || (n = e), n.getComputedStyle(t)
2104  }, Be = new RegExp(oe.join("|"), "i");
2105  !function () {
2106    function t() {
2107      if (c) {
2108        l.style.cssText = "position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0", c.style.cssText = "position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%", be.appendChild(l).appendChild(c);
2109        var t = e.getComputedStyle(c);
2110        i = "1%" !== t.top, u = 12 === n(t.marginLeft), c.style.right = "60%", s = 36 === n(t.right), o = 36 === n(t.width), c.style.position = "absolute", a = 36 === c.offsetWidth || "absolute", be.removeChild(l), c = null
2111      }
2112    }
2113    function n(e) {
2114      return Math.round(parseFloat(e))
2115    }
2116    var i, o, a, s, u, l = r.createElement("div"), c = r.createElement("div");
2117    c.style && (c.style.backgroundClip = "content-box", c.cloneNode(!0).style.backgroundClip = "", h.clearCloneStyle = "content-box" === c.style.backgroundClip, w.extend(h, {
2118      boxSizingReliable: function () {
2119        return t(), o
2120      }, pixelBoxStyles: function () {
2121        return t(), s
2122      }, pixelPosition: function () {
2123        return t(), i
2124      }, reliableMarginLeft: function () {
2125        return t(), u
2126      }, scrollboxSize: function () {
2127        return t(), a
2128      }
2129    }))
2130  }();
2131  function Fe(e, t, n) {
2132    var r, i, o, a, s = e.style;
2133    return (n = n || $e(e)) && ("" !== (a = n.getPropertyValue(t) || n[t]) || w.contains(e.ownerDocument, e) || (a = w.style(e, t)), !h.pixelBoxStyles() && We.test(a) && Be.test(t) && (r = s.width, i = s.minWidth, o = s.maxWidth, s.minWidth = s.maxWidth = s.width = a, a = n.width, s.width = r, s.minWidth = i, s.maxWidth = o)), void 0 !== a ? a + "" : a
2134  }
2135  function _e(e, t) {
2136    return {
2137      get: function () {
2138        if (!e())
2139          return (this.get = t).apply(this, arguments);
2140        delete this.get
2141      }
2142    }
2143  }
2144  var ze = /^(none|table(?!-c[ea]).+)/, Xe = /^--/, Ue = { position: "absolute", visibility: "hidden", display: "block" }, Ve = { letterSpacing: "0", fontWeight: "400" }, Ge = ["Webkit", "Moz", "ms"], Ye = r.createElement("div").style;
2145  function Qe(e) {
2146    if (e in Ye)
2147      return e;
2148    var t = e[0].toUpperCase() + e.slice(1), n = Ge.length;
2149    while (n--)
2150      if ((e = Ge[n] + t) in Ye)
2151        return e
2152  }
2153  function Je(e) {
2154    var t = w.cssProps[e];
2155    return t || (t = w.cssProps[e] = Qe(e) || e), t
2156  }
2157  function Ke(e, t, n) {
2158    var r = ie.exec(t);
2159    return r ? Math.max(0, r[2] - (n || 0)) + (r[3] || "px") : t
2160  }
2161  function Ze(e, t, n, r, i, o) {
2162    var a = "width" === t ? 1 : 0, s = 0, u = 0;
2163    if (n === (r ? "border" : "content"))
2164      return 0;
2165    for (; a < 4; a += 2)
2166      "margin" === n && (u += w.css(e, n + oe[a], !0, i)), r ? ("content" === n && (u -= w.css(e, "padding" + oe[a], !0, i)), "margin" !== n && (u -= w.css(e, "border" + oe[a] + "Width", !0, i))) : (u += w.css(e, "padding" + oe[a], !0, i), "padding" !== n ? u += w.css(e, "border" + oe[a] + "Width", !0, i) : s += w.css(e, "border" + oe[a] + "Width", !0, i));
2167    return !r && o >= 0 && (u += Math.max(0, Math.ceil(e["offset" + t[0].toUpperCase() + t.slice(1)] - o - u - s - .5))), u
2168  }
2169  function et(e, t, n) {
2170    var r = $e(e), i = Fe(e, t, r), o = "border-box" === w.css(e, "boxSizing", !1, r), a = o;
2171    if (We.test(i)) {
2172      if (!n)
2173        return i;
2174      i = "auto"
2175    }
2176    return a = a && (h.boxSizingReliable() || i === e.style[t]), ("auto" === i || !parseFloat(i) && "inline" === w.css(e, "display", !1, r)) && (i = e["offset" + t[0].toUpperCase() + t.slice(1)], a = !0), (i = parseFloat(i) || 0) + Ze(e, t, n || (o ? "border" : "content"), a, r, i) + "px"
2177  }
2178  w.extend({
2179    cssHooks: {
2180      opacity: {
2181        get: function (e, t) {
2182          if (t) {
2183            var n = Fe(e, "opacity");
2184            return "" === n ? "1" : n
2185          }
2186        }
2187      }
2188    }, cssNumber: { animationIterationCount: !0, columnCount: !0, fillOpacity: !0, flexGrow: !0, flexShrink: !0, fontWeight: !0, lineHeight: !0, opacity: !0, order: !0, orphans: !0, widows: !0, zIndex: !0, zoom: !0 }, cssProps: {}, style: function (e, t, n, r) {
2189      if (e && 3 !== e.nodeType && 8 !== e.nodeType && e.style) {
2190        var i, o, a, s = G(t), u = Xe.test(t), l = e.style;
2191        if (u || (t = Je(s)), a = w.cssHooks[t] || w.cssHooks[s], void 0 === n)
2192          return a && "get" in a && void 0 !== (i = a.get(e, !1, r)) ? i : l[t];
2193        "string" == (o = typeof n) && (i = ie.exec(n)) && i[1] && (n = ue(e, t, i), o = "number"), null != n && n === n && ("number" === o && (n += i && i[3] || (w.cssNumber[s] ? "" : "px")), h.clearCloneStyle || "" !== n || 0 !== t.indexOf("background") || (l[t] = "inherit"), a && "set" in a && void 0 === (n = a.set(e, n, r)) || (u ? l.setProperty(t, n) : l[t] = n))
2194      }
2195    }, css: function (e, t, n, r) {
2196      var i, o, a, s = G(t);
2197      return Xe.test(t) || (t = Je(s)), (a = w.cssHooks[t] || w.cssHooks[s]) && "get" in a && (i = a.get(e, !0, n)), void 0 === i && (i = Fe(e, t, r)), "normal" === i && t in Ve && (i = Ve[t]), "" === n || n ? (o = parseFloat(i), !0 === n || isFinite(o) ? o || 0 : i) : i
2198    }
2199  }), w.each(["height", "width"], function (e, t) {
2200    w.cssHooks[t] = {
2201      get: function (e, n, r) {
2202        if (n)
2203          return !ze.test(w.css(e, "display")) || e.getClientRects().length && e.getBoundingClientRect().width ? et(e, t, r) : se(e, Ue, function () {
2204            return et(e, t, r)
2205          })
2206      }, set: function (e, n, r) {
2207        var i, o = $e(e), a = "border-box" === w.css(e, "boxSizing", !1, o), s = r && Ze(e, t, r, a, o);
2208        return a && h.scrollboxSize() === o.position && (s -= Math.ceil(e["offset" + t[0].toUpperCase() + t.slice(1)] - parseFloat(o[t]) - Ze(e, t, "border", !1, o) - .5)), s && (i = ie.exec(n)) && "px" !== (i[3] || "px") && (e.style[t] = n, n = w.css(e, t)), Ke(e, n, s)
2209      }
2210    }
2211  }), w.cssHooks.marginLeft = _e(h.reliableMarginLeft, function (e, t) {
2212    if (t)
2213      return (parseFloat(Fe(e, "marginLeft")) || e.getBoundingClientRect().left - se(e, { marginLeft: 0 }, function () {
2214        return e.getBoundingClientRect().left
2215      })) + "px"
2216  }), w.each({ margin: "", padding: "", border: "Width" }, function (e, t) {
2217    w.cssHooks[e + t] = {
2218      expand: function (n) {
2219        for (var r = 0, i = {}, o = "string" == typeof n ? n.split(" ") : [n]; r < 4; r++)
2220          i[e + oe[r] + t] = o[r] || o[r - 2] || o[0];
2221        return i
2222      }
2223    }, "margin" !== e && (w.cssHooks[e + t].set = Ke)
2224  }), w.fn.extend({
2225    css: function (e, t) {
2226      return z(this, function (e, t, n) {
2227        var r, i, o = {}, a = 0;
2228        if (Array.isArray(t)) {
2229          for (r = $e(e), i = t.length; a < i; a++)
2230            o[t[a]] = w.css(e, t[a], !1, r);
2231          return o
2232        }
2233        return void 0 !== n ? w.style(e, t, n) : w.css(e, t)
2234      }, e, t, arguments.length > 1)
2235    }
2236  });
2237  function tt(e, t, n, r, i) {
2238    return new tt.prototype.init(e, t, n, r, i)
2239  }
2240  w.Tween = tt, tt.prototype = {
2241    constructor: tt, init: function (e, t, n, r, i, o) {
2242      this.elem = e, this.prop = n, this.easing = i || w.easing._default, this.options = t, this.start = this.now = this.cur(), this.end = r, this.unit = o || (w.cssNumber[n] ? "" : "px")
2243    }, cur: function () {
2244      var e = tt.propHooks[this.prop];
2245      return e && e.get ? e.get(this) : tt.propHooks._default.get(this)
2246    }, run: function (e) {
2247      var t, n = tt.propHooks[this.prop];
2248      return this.options.duration ? this.pos = t = w.easing[this.easing](e, this.options.duration * e, 0, 1, this.options.duration) : this.pos = t = e, this.now = (this.end - this.start) * t + this.start, this.options.step && this.options.step.call(this.elem, this.now, this), n && n.set ? n.set(this) : tt.propHooks._default.set(this), this
2249    }
2250  }, tt.prototype.init.prototype = tt.prototype, tt.propHooks = {
2251    _default: {
2252      get: function (e) {
2253        var t;
2254        return 1 !== e.elem.nodeType || null != e.elem[e.prop] && null == e.elem.style[e.prop] ? e.elem[e.prop] : (t = w.css(e.elem, e.prop, "")) && "auto" !== t ? t : 0
2255      }, set: function (e) {
2256        w.fx.step[e.prop] ? w.fx.step[e.prop](e) : 1 !== e.elem.nodeType || null == e.elem.style[w.cssProps[e.prop]] && !w.cssHooks[e.prop] ? e.elem[e.prop] = e.now : w.style(e.elem, e.prop, e.now + e.unit)
2257      }
2258    }
2259  }, tt.propHooks.scrollTop = tt.propHooks.scrollLeft = {
2260    set: function (e) {
2261      e.elem.nodeType && e.elem.parentNode && (e.elem[e.prop] = e.now)
2262    }
2263  }, w.easing = {
2264    linear: function (e) {
2265      return e
2266    }, swing: function (e) {
2267      return .5 - Math.cos(e * Math.PI) / 2
2268    }, _default: "swing"
2269  }, w.fx = tt.prototype.init, w.fx.step = {};
2270  var nt, rt, it = /^(?:toggle|show|hide)$/, ot = /queueHooks$/;
2271  function at() {
2272    rt && (!1 === r.hidden && e.requestAnimationFrame ? e.requestAnimationFrame(at) : e.setTimeout(at, w.fx.interval), w.fx.tick())
2273  }
2274  function st() {
2275    return e.setTimeout(function () {
2276      nt = void 0
2277    }), nt = Date.now()
2278  }
2279  function ut(e, t) {
2280    var n, r = 0, i = { height: e };
2281    for (t = t ? 1 : 0; r < 4; r += 2 - t)
2282      i["margin" + (n = oe[r])] = i["padding" + n] = e;
2283    return t && (i.opacity = i.width = e), i
2284  }
2285  function lt(e, t, n) {
2286    for (var r, i = (pt.tweeners[t] || []).concat(pt.tweeners["*"]), o = 0, a = i.length; o < a; o++)
2287      if (r = i[o].call(n, t, e))
2288        return r
2289  }
2290  function ct(e, t, n) {
2291    var r, i, o, a, s, u, l, c, f = "width" in t || "height" in t, p = this, d = {}, h = e.style, g = e.nodeType && ae(e), y = J.get(e, "fxshow");
2292    n.queue || (null == (a = w._queueHooks(e, "fx")).unqueued && (a.unqueued = 0, s = a.empty.fire, a.empty.fire = function () {
2293      a.unqueued || s()
2294    }), a.unqueued++, p.always(function () {
2295      p.always(function () {
2296        a.unqueued--, w.queue(e, "fx").length || a.empty.fire()
2297      })
2298    }));
2299    for (r in t)
2300      if (i = t[r], it.test(i)) {
2301        if (delete t[r], o = o || "toggle" === i, i === (g ? "hide" : "show")) {
2302          if ("show" !== i || !y || void 0 === y[r])
2303            continue;
2304          g = !0
2305        }
2306        d[r] = y && y[r] || w.style(e, r)
2307      }
2308    if ((u = !w.isEmptyObject(t)) || !w.isEmptyObject(d)) {
2309      f && 1 === e.nodeType && (n.overflow = [h.overflow, h.overflowX, h.overflowY], null == (l = y && y.display) && (l = J.get(e, "display")), "none" === (c = w.css(e, "display")) && (l ? c = l : (fe([e], !0), l = e.style.display || l, c = w.css(e, "display"), fe([e]))), ("inline" === c || "inline-block" === c && null != l) && "none" === w.css(e, "float") && (u || (p.done(function () {
2310        h.display = l
2311      }), null == l && (c = h.display, l = "none" === c ? "" : c)), h.display = "inline-block")), n.overflow && (h.overflow = "hidden", p.always(function () {
2312        h.overflow = n.overflow[0], h.overflowX = n.overflow[1], h.overflowY = n.overflow[2]
2313      })), u = !1;
2314      for (r in d)
2315        u || (y ? "hidden" in y && (g = y.hidden) : y = J.access(e, "fxshow", { display: l }), o && (y.hidden = !g), g && fe([e], !0), p.done(function () {
2316          g || fe([e]), J.remove(e, "fxshow");
2317          for (r in d)
2318            w.style(e, r, d[r])
2319        })), u = lt(g ? y[r] : 0, r, p), r in y || (y[r] = u.start, g && (u.end = u.start, u.start = 0))
2320    }
2321  }
2322  function ft(e, t) {
2323    var n, r, i, o, a;
2324    for (n in e)
2325      if (r = G(n), i = t[r], o = e[n], Array.isArray(o) && (i = o[1], o = e[n] = o[0]), n !== r && (e[r] = o, delete e[n]), (a = w.cssHooks[r]) && "expand" in a) {
2326        o = a.expand(o), delete e[r];
2327        for (n in o)
2328          n in e || (e[n] = o[n], t[n] = i)
2329      } else
2330        t[r] = i
2331  }
2332  function pt(e, t, n) {
2333    var r, i, o = 0, a = pt.prefilters.length, s = w.Deferred().always(function () {
2334      delete u.elem
2335    }), u = function () {
2336      if (i)
2337        return !1;
2338      for (var t = nt || st(), n = Math.max(0, l.startTime + l.duration - t), r = 1 - (n / l.duration || 0), o = 0, a = l.tweens.length; o < a; o++)
2339        l.tweens[o].run(r);
2340      return s.notifyWith(e, [l, r, n]), r < 1 && a ? n : (a || s.notifyWith(e, [l, 1, 0]), s.resolveWith(e, [l]), !1)
2341    }, l = s.promise({
2342      elem: e, props: w.extend({}, t), opts: w.extend(!0, { specialEasing: {}, easing: w.easing._default }, n), originalProperties: t, originalOptions: n, startTime: nt || st(), duration: n.duration, tweens: [], createTween: function (t, n) {
2343        var r = w.Tween(e, l.opts, t, n, l.opts.specialEasing[t] || l.opts.easing);
2344        return l.tweens.push(r), r
2345      }, stop: function (t) {
2346        var n = 0, r = t ? l.tweens.length : 0;
2347        if (i)
2348          return this;
2349        for (i = !0; n < r; n++)
2350          l.tweens[n].run(1);
2351        return t ? (s.notifyWith(e, [l, 1, 0]), s.resolveWith(e, [l, t])) : s.rejectWith(e, [l, t]), this
2352      }
2353    }), c = l.props;
2354    for (ft(c, l.opts.specialEasing); o < a; o++)
2355      if (r = pt.prefilters[o].call(l, e, c, l.opts))
2356        return g(r.stop) && (w._queueHooks(l.elem, l.opts.queue).stop = r.stop.bind(r)), r;
2357    return w.map(c, lt, l), g(l.opts.start) && l.opts.start.call(e, l), l.progress(l.opts.progress).done(l.opts.done, l.opts.complete).fail(l.opts.fail).always(l.opts.always), w.fx.timer(w.extend(u, { elem: e, anim: l, queue: l.opts.queue })), l
2358  }
2359  w.Animation = w.extend(pt, {
2360    tweeners: {
2361      "*": [function (e, t) {
2362        var n = this.createTween(e, t);
2363        return ue(n.elem, e, ie.exec(t), n), n
2364      }]
2365    }, tweener: function (e, t) {
2366      g(e) ? (t = e, e = ["*"]) : e = e.match(M);
2367      for (var n, r = 0, i = e.length; r < i; r++)
2368        n = e[r], pt.tweeners[n] = pt.tweeners[n] || [], pt.tweeners[n].unshift(t)
2369    }, prefilters: [ct], prefilter: function (e, t) {
2370      t ? pt.prefilters.unshift(e) : pt.prefilters.push(e)
2371    }
2372  }), w.speed = function (e, t, n) {
2373    var r = e && "object" == typeof e ? w.extend({}, e) : { complete: n || !n && t || g(e) && e, duration: e, easing: n && t || t && !g(t) && t };
2374    return w.fx.off ? r.duration = 0 : "number" != typeof r.duration && (r.duration in w.fx.speeds ? r.duration = w.fx.speeds[r.duration] : r.duration = w.fx.speeds._default), null != r.queue && !0 !== r.queue || (r.queue = "fx"), r.old = r.complete, r.complete = function () {
2375      g(r.old) && r.old.call(this), r.queue && w.dequeue(this, r.queue)
2376    }, r
2377  }, w.fn.extend({
2378    fadeTo: function (e, t, n, r) {
2379      return this.filter(ae).css("opacity", 0).show().end().animate({ opacity: t }, e, n, r)
2380    }, animate: function (e, t, n, r) {
2381      var i = w.isEmptyObject(e), o = w.speed(t, n, r), a = function () {
2382        var t = pt(this, w.extend({}, e), o);
2383        (i || J.get(this, "finish")) && t.stop(!0)
2384      };
2385      return a.finish = a, i || !1 === o.queue ? this.each(a) : this.queue(o.queue, a)
2386    }, stop: function (e, t, n) {
2387      var r = function (e) {
2388        var t = e.stop;
2389        delete e.stop, t(n)
2390      };
2391      return "string" != typeof e && (n = t, t = e, e = void 0), t && !1 !== e && this.queue(e || "fx", []), this.each(function () {
2392        var t = !0, i = null != e && e + "queueHooks", o = w.timers, a = J.get(this);
2393        if (i)
2394          a[i] && a[i].stop && r(a[i]);
2395        else
2396          for (i in a)
2397            a[i] && a[i].stop && ot.test(i) && r(a[i]);
2398        for (i = o.length; i--;)
2399          o[i].elem !== this || null != e && o[i].queue !== e || (o[i].anim.stop(n), t = !1, o.splice(i, 1));
2400        !t && n || w.dequeue(this, e)
2401      })
2402    }, finish: function (e) {
2403      return !1 !== e && (e = e || "fx"), this.each(function () {
2404        var t, n = J.get(this), r = n[e + "queue"], i = n[e + "queueHooks"], o = w.timers, a = r ? r.length : 0;
2405        for (n.finish = !0, w.queue(this, e, []), i && i.stop && i.stop.call(this, !0), t = o.length; t--;)
2406          o[t].elem === this && o[t].queue === e && (o[t].anim.stop(!0), o.splice(t, 1));
2407        for (t = 0; t < a; t++)
2408          r[t] && r[t].finish && r[t].finish.call(this);
2409        delete n.finish
2410      })
2411    }
2412  }), w.each(["toggle", "show", "hide"], function (e, t) {
2413    var n = w.fn[t];
2414    w.fn[t] = function (e, r, i) {
2415      return null == e || "boolean" == typeof e ? n.apply(this, arguments) : this.animate(ut(t, !0), e, r, i)
2416    }
2417  }), w.each({ slideDown: ut("show"), slideUp: ut("hide"), slideToggle: ut("toggle"), fadeIn: { opacity: "show" }, fadeOut: { opacity: "hide" }, fadeToggle: { opacity: "toggle" } }, function (e, t) {
2418    w.fn[e] = function (e, n, r) {
2419      return this.animate(t, e, n, r)
2420    }
2421  }), w.timers = [], w.fx.tick = function () {
2422    var e, t = 0, n = w.timers;
2423    for (nt = Date.now(); t < n.length; t++)
2424      (e = n[t])() || n[t] !== e || n.splice(t--, 1);
2425    n.length || w.fx.stop(), nt = void 0
2426  }, w.fx.timer = function (e) {
2427    w.timers.push(e), w.fx.start()
2428  }, w.fx.interval = 13, w.fx.start = function () {
2429    rt || (rt = !0, at())
2430  }, w.fx.stop = function () {
2431    rt = null
2432  }, w.fx.speeds = { slow: 600, fast: 200, _default: 400 }, w.fn.delay = function (t, n) {
2433    return t = w.fx ? w.fx.speeds[t] || t : t, n = n || "fx", this.queue(n, function (n, r) {
2434      var i = e.setTimeout(n, t);
2435      r.stop = function () {
2436        e.clearTimeout(i)
2437      }
2438    })
2439  }, function () {
2440    var e = r.createElement("input"), t = r.createElement("select").appendChild(r.createElement("option"));
2441    e.type = "checkbox", h.checkOn = "" !== e.value, h.optSelected = t.selected, (e = r.createElement("input")).value = "t", e.type = "radio", h.radioValue = "t" === e.value
2442  }();
2443  var dt, ht = w.expr.attrHandle;
2444  w.fn.extend({
2445    attr: function (e, t) {
2446      return z(this, w.attr, e, t, arguments.length > 1)
2447    }, removeAttr: function (e) {
2448      return this.each(function () {
2449        w.removeAttr(this, e)
2450      })
2451    }
2452  }), w.extend({
2453    attr: function (e, t, n) {
2454      var r, i, o = e.nodeType;
2455      if (3 !== o && 8 !== o && 2 !== o)
2456        return "undefined" == typeof e.getAttribute ? w.prop(e, t, n) : (1 === o && w.isXMLDoc(e) || (i = w.attrHooks[t.toLowerCase()] || (w.expr.match.bool.test(t) ? dt : void 0)), void 0 !== n ? null === n ? void w.removeAttr(e, t) : i && "set" in i && void 0 !== (r = i.set(e, n, t)) ? r : (e.setAttribute(t, n + ""), n) : i && "get" in i && null !== (r = i.get(e, t)) ? r : null == (r = w.find.attr(e, t)) ? void 0 : r)
2457    }, attrHooks: {
2458      type: {
2459        set: function (e, t) {
2460          if (!h.radioValue && "radio" === t && N(e, "input")) {
2461            var n = e.value;
2462            return e.setAttribute("type", t), n && (e.value = n), t
2463          }
2464        }
2465      }
2466    }, removeAttr: function (e, t) {
2467      var n, r = 0, i = t && t.match(M);
2468      if (i && 1 === e.nodeType)
2469        while (n = i[r++])
2470          e.removeAttribute(n)
2471    }
2472  }), dt = {
2473    set: function (e, t, n) {
2474      return !1 === t ? w.removeAttr(e, n) : e.setAttribute(n, n), n
2475    }
2476  }, w.each(w.expr.match.bool.source.match(/\w+/g), function (e, t) {
2477    var n = ht[t] || w.find.attr;
2478    ht[t] = function (e, t, r) {
2479      var i, o, a = t.toLowerCase();
2480      return r || (o = ht[a], ht[a] = i, i = null != n(e, t, r) ? a : null, ht[a] = o), i
2481    }
2482  });
2483  var gt = /^(?:input|select|textarea|button)$/i, yt = /^(?:a|area)$/i;
2484  w.fn.extend({
2485    prop: function (e, t) {
2486      return z(this, w.prop, e, t, arguments.length > 1)
2487    }, removeProp: function (e) {
2488      return this.each(function () {
2489        delete this[w.propFix[e] || e]
2490      })
2491    }
2492  }), w.extend({
2493    prop: function (e, t, n) {
2494      var r, i, o = e.nodeType;
2495      if (3 !== o && 8 !== o && 2 !== o)
2496        return 1 === o && w.isXMLDoc(e) || (t = w.propFix[t] || t, i = w.propHooks[t]), void 0 !== n ? i && "set" in i && void 0 !== (r = i.set(e, n, t)) ? r : e[t] = n : i && "get" in i && null !== (r = i.get(e, t)) ? r : e[t]
2497    }, propHooks: {
2498      tabIndex: {
2499        get: function (e) {
2500          var t = w.find.attr(e, "tabindex");
2501          return t ? parseInt(t, 10) : gt.test(e.nodeName) || yt.test(e.nodeName) && e.href ? 0 : -1
2502        }
2503      }
2504    }, propFix: { "for": "htmlFor", "class": "className" }
2505  }), h.optSelected || (w.propHooks.selected = {
2506    get: function (e) {
2507      var t = e.parentNode;
2508      return t && t.parentNode && t.parentNode.selectedIndex, null
2509    }, set: function (e) {
2510      var t = e.parentNode;
2511      t && (t.selectedIndex, t.parentNode && t.parentNode.selectedIndex)
2512    }
2513  }), w.each(["tabIndex", "readOnly", "maxLength", "cellSpacing", "cellPadding", "rowSpan", "colSpan", "useMap", "frameBorder", "contentEditable"], function () {
2514    w.propFix[this.toLowerCase()] = this
2515  });
2516  function vt(e) {
2517    return (e.match(M) || []).join(" ")
2518  }
2519  function mt(e) {
2520    return e.getAttribute && e.getAttribute("class") || ""
2521  }
2522  function xt(e) {
2523    return Array.isArray(e) ? e : "string" == typeof e ? e.match(M) || [] : []
2524  }
2525  w.fn.extend({
2526    addClass: function (e) {
2527      var t, n, r, i, o, a, s, u = 0;
2528      if (g(e))
2529        return this.each(function (t) {
2530          w(this).addClass(e.call(this, t, mt(this)))
2531        });
2532      if ((t = xt(e)).length)
2533        while (n = this[u++])
2534          if (i = mt(n), r = 1 === n.nodeType && " " + vt(i) + " ") {
2535            a = 0;
2536            while (o = t[a++])
2537              r.indexOf(" " + o + " ") < 0 && (r += o + " ");
2538            i !== (s = vt(r)) && n.setAttribute("class", s)
2539          }
2540      return this
2541    }, removeClass: function (e) {
2542      var t, n, r, i, o, a, s, u = 0;
2543      if (g(e))
2544        return this.each(function (t) {
2545          w(this).removeClass(e.call(this, t, mt(this)))
2546        });
2547      if (!arguments.length)
2548        return this.attr("class", "");
2549      if ((t = xt(e)).length)
2550        while (n = this[u++])
2551          if (i = mt(n), r = 1 === n.nodeType && " " + vt(i) + " ") {
2552            a = 0;
2553            while (o = t[a++])
2554              while (r.indexOf(" " + o + " ") > - 1)
2555                r = r.replace(" " + o + " ", " ");
2556            i !== (s = vt(r)) && n.setAttribute("class", s)
2557          }
2558      return this
2559    }, toggleClass: function (e, t) {
2560      var n = typeof e, r = "string" === n || Array.isArray(e);
2561      return "boolean" == typeof t && r ? t ? this.addClass(e) : this.removeClass(e) : g(e) ? this.each(function (n) {
2562        w(this).toggleClass(e.call(this, n, mt(this), t), t)
2563      }) : this.each(function () {
2564        var t, i, o, a;
2565        if (r) {
2566          i = 0, o = w(this), a = xt(e);
2567          while (t = a[i++])
2568            o.hasClass(t) ? o.removeClass(t) : o.addClass(t)
2569        } else
2570          void 0 !== e && "boolean" !== n || ((t = mt(this)) && J.set(this, "__className__", t), this.setAttribute && this.setAttribute("class", t || !1 === e ? "" : J.get(this, "__className__") || ""))
2571      })
2572    }, hasClass: function (e) {
2573      var t, n, r = 0;
2574      t = " " + e + " ";
2575      while (n = this[r++])
2576        if (1 === n.nodeType && (" " + vt(mt(n)) + " ").indexOf(t) > -1)
2577          return !0;
2578      return !1
2579    }
2580  });
2581  var bt = /\r/g;
2582  w.fn.extend({
2583    val: function (e) {
2584      var t, n, r, i = this[0];
2585      {
2586        if (arguments.length)
2587          return r = g(e), this.each(function (n) {
2588            var i;
2589            1 === this.nodeType && (null == (i = r ? e.call(this, n, w(this).val()) : e) ? i = "" : "number" == typeof i ? i += "" : Array.isArray(i) && (i = w.map(i, function (e) {
2590              return null == e ? "" : e + ""
2591            })), (t = w.valHooks[this.type] || w.valHooks[this.nodeName.toLowerCase()]) && "set" in t && void 0 !== t.set(this, i, "value") || (this.value = i))
2592          });
2593        if (i)
2594          return (t = w.valHooks[i.type] || w.valHooks[i.nodeName.toLowerCase()]) && "get" in t && void 0 !== (n = t.get(i, "value")) ? n : "string" == typeof (n = i.value) ? n.replace(bt, "") : null == n ? "" : n
2595      }
2596    }
2597  }), w.extend({
2598    valHooks: {
2599      option: {
2600        get: function (e) {
2601          var t = w.find.attr(e, "value");
2602          return null != t ? t : vt(w.text(e))
2603        }
2604      }, select: {
2605        get: function (e) {
2606          var t, n, r, i = e.options, o = e.selectedIndex, a = "select-one" === e.type, s = a ? null : [], u = a ? o + 1 : i.length;
2607          for (r = o < 0 ? u : a ? o : 0; r < u; r++)
2608            if (((n = i[r]).selected || r === o) && !n.disabled && (!n.parentNode.disabled || !N(n.parentNode, "optgroup"))) {
2609              if (t = w(n).val(), a)
2610                return t;
2611              s.push(t)
2612            }
2613          return s
2614        }, set: function (e, t) {
2615          var n, r, i = e.options, o = w.makeArray(t), a = i.length;
2616          while (a--)
2617            ((r = i[a]).selected = w.inArray(w.valHooks.option.get(r), o) > -1) && (n = !0);
2618          return n || (e.selectedIndex = -1), o
2619        }
2620      }
2621    }
2622  }), w.each(["radio", "checkbox"], function () {
2623    w.valHooks[this] = {
2624      set: function (e, t) {
2625        if (Array.isArray(t))
2626          return e.checked = w.inArray(w(e).val(), t) > -1
2627      }
2628    }, h.checkOn || (w.valHooks[this].get = function (e) {
2629      return null === e.getAttribute("value") ? "on" : e.value
2630    })
2631  }), h.focusin = "onfocusin" in e;
2632  var wt = /^(?:focusinfocus|focusoutblur)$/, Tt = function (e) {
2633    e.stopPropagation()
2634  };
2635  w.extend(w.event, {
2636    trigger: function (t, n, i, o) {
2637      var a, s, u, l, c, p, d, h, v = [i || r], m = f.call(t, "type") ? t.type : t, x = f.call(t, "namespace") ? t.namespace.split(".") : [];
2638      if (s = h = u = i = i || r, 3 !== i.nodeType && 8 !== i.nodeType && !wt.test(m + w.event.triggered) && (m.indexOf(".") > -1 && (m = (x = m.split(".")).shift(), x.sort()), c = m.indexOf(":") < 0 && "on" + m, t = t[w.expando] ? t : new w.Event(m, "object" == typeof t && t), t.isTrigger = o ? 2 : 3, t.namespace = x.join("."), t.rnamespace = t.namespace ? new RegExp("(^|\\.)" + x.join("\\.(?:.*\\.|)") + "(\\.|$)") : null, t.result = void 0, t.target || (t.target = i), n = null == n ? [t] : w.makeArray(n, [t]), d = w.event.special[m] || {}, o || !d.trigger || !1 !== d.trigger.apply(i, n))) {
2639        if (!o && !d.noBubble && !y(i)) {
2640          for (l = d.delegateType || m, wt.test(l + m) || (s = s.parentNode); s; s = s.parentNode)
2641            v.push(s), u = s;
2642          u === (i.ownerDocument || r) && v.push(u.defaultView || u.parentWindow || e)
2643        }
2644        a = 0;
2645        while ((s = v[a++]) && !t.isPropagationStopped())
2646          h = s, t.type = a > 1 ? l : d.bindType || m, (p = (J.get(s, "events") || {})[t.type] && J.get(s, "handle")) && p.apply(s, n), (p = c && s[c]) && p.apply && Y(s) && (t.result = p.apply(s, n), !1 === t.result && t.preventDefault());
2647        return t.type = m, o || t.isDefaultPrevented() || d._default && !1 !== d._default.apply(v.pop(), n) || !Y(i) || c && g(i[m]) && !y(i) && ((u = i[c]) && (i[c] = null), w.event.triggered = m, t.isPropagationStopped() && h.addEventListener(m, Tt), i[m](), t.isPropagationStopped() && h.removeEventListener(m, Tt), w.event.triggered = void 0, u && (i[c] = u)), t.result
2648      }
2649    }, simulate: function (e, t, n) {
2650      var r = w.extend(new w.Event, n, { type: e, isSimulated: !0 });
2651      w.event.trigger(r, null, t)
2652    }
2653  }), w.fn.extend({
2654    trigger: function (e, t) {
2655      return this.each(function () {
2656        w.event.trigger(e, t, this)
2657      })
2658    }, triggerHandler: function (e, t) {
2659      var n = this[0];
2660      if (n)
2661        return w.event.trigger(e, t, n, !0)
2662    }
2663  }), h.focusin || w.each({ focus: "focusin", blur: "focusout" }, function (e, t) {
2664    var n = function (e) {
2665      w.event.simulate(t, e.target, w.event.fix(e))
2666    };
2667    w.event.special[t] = {
2668      setup: function () {
2669        var r = this.ownerDocument || this, i = J.access(r, t);
2670        i || r.addEventListener(e, n, !0), J.access(r, t, (i || 0) + 1)
2671      }, teardown: function () {
2672        var r = this.ownerDocument || this, i = J.access(r, t) - 1;
2673        i ? J.access(r, t, i) : (r.removeEventListener(e, n, !0), J.remove(r, t))
2674      }
2675    }
2676  });
2677  var Ct = e.location, Et = Date.now(), kt = /\?/;
2678  w.parseXML = function (t) {
2679    var n;
2680    if (!t || "string" != typeof t)
2681      return null;
2682    try {
2683      n = (new e.DOMParser).parseFromString(t, "text/xml")
2684    } catch (e) {
2685      n = void 0
2686    }
2687    return n && !n.getElementsByTagName("parsererror").length || w.error("Invalid XML: " + t), n
2688  };
2689  var St = /\[\]$/, Dt = /\r?\n/g, Nt = /^(?:submit|button|image|reset|file)$/i, At = /^(?:input|select|textarea|keygen)/i;
2690  function jt(e, t, n, r) {
2691    var i;
2692    if (Array.isArray(t))
2693      w.each(t, function (t, i) {
2694        n || St.test(e) ? r(e, i) : jt(e + "[" + ("object" == typeof i && null != i ? t : "") + "]", i, n, r)
2695      });
2696    else if (n || "object" !== x(t))
2697      r(e, t);
2698    else
2699      for (i in t)
2700        jt(e + "[" + i + "]", t[i], n, r)
2701  }
2702  w.param = function (e, t) {
2703    var n, r = [], i = function (e, t) {
2704      var n = g(t) ? t() : t;
2705      r[r.length] = encodeURIComponent(e) + "=" + encodeURIComponent(null == n ? "" : n)
2706    };
2707    if (Array.isArray(e) || e.jquery && !w.isPlainObject(e))
2708      w.each(e, function () {
2709        i(this.name, this.value)
2710      });
2711    else
2712      for (n in e)
2713        jt(n, e[n], t, i);
2714    return r.join("&")
2715  }, w.fn.extend({
2716    serialize: function () {
2717      return w.param(this.serializeArray())
2718    }, serializeArray: function () {
2719      return this.map(function () {
2720        var e = w.prop(this, "elements");
2721        return e ? w.makeArray(e) : this
2722      }).filter(function () {
2723        var e = this.type;
2724        return this.name && !w(this).is(":disabled") && At.test(this.nodeName) && !Nt.test(e) && (this.checked || !pe.test(e))
2725      }).map(function (e, t) {
2726        var n = w(this).val();
2727        return null == n ? null : Array.isArray(n) ? w.map(n, function (e) {
2728          return { name: t.name, value: e.replace(Dt, "\r\n") }
2729        }) : { name: t.name, value: n.replace(Dt, "\r\n") }
2730      }).get()
2731    }
2732  });
2733  var qt = /%20/g, Lt = /#.*$/, Ht = /([?&])_=[^&]*/, Ot = /^(.*?):[ \t]*([^\r\n]*)$/gm, Pt = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, Mt = /^(?:GET|HEAD)$/, Rt = /^\/\//, It = {}, Wt = {}, $t = "*/".concat("*"), Bt = r.createElement("a");
2734  Bt.href = Ct.href;
2735  function Ft(e) {
2736    return function (t, n) {
2737      "string" != typeof t && (n = t, t = "*");
2738      var r, i = 0, o = t.toLowerCase().match(M) || [];
2739      if (g(n))
2740        while (r = o[i++])
2741          "+" === r[0] ? (r = r.slice(1) || "*", (e[r] = e[r] || []).unshift(n)) : (e[r] = e[r] || []).push(n)
2742    }
2743  }
2744  function _t(e, t, n, r) {
2745    var i = {}, o = e === Wt;
2746    function a(s) {
2747      var u;
2748      return i[s] = !0, w.each(e[s] || [], function (e, s) {
2749        var l = s(t, n, r);
2750        return "string" != typeof l || o || i[l] ? o ? !(u = l) : void 0 : (t.dataTypes.unshift(l), a(l), !1)
2751      }), u
2752    }
2753    return a(t.dataTypes[0]) || !i["*"] && a("*")
2754  }
2755  function zt(e, t) {
2756    var n, r, i = w.ajaxSettings.flatOptions || {};
2757    for (n in t)
2758      void 0 !== t[n] && ((i[n] ? e : r || (r = {}))[n] = t[n]);
2759    return r && w.extend(!0, e, r), e
2760  }
2761  function Xt(e, t, n) {
2762    var r, i, o, a, s = e.contents, u = e.dataTypes;
2763    while ("*" === u[0])
2764      u.shift(), void 0 === r && (r = e.mimeType || t.getResponseHeader("Content-Type"));
2765    if (r)
2766      for (i in s)
2767        if (s[i] && s[i].test(r)) {
2768          u.unshift(i);
2769          break
2770        }
2771    if (u[0] in n)
2772      o = u[0];
2773    else {
2774      for (i in n) {
2775        if (!u[0] || e.converters[i + " " + u[0]]) {
2776          o = i;
2777          break
2778        }
2779        a || (a = i)
2780      }
2781      o = o || a
2782    }
2783    if (o)
2784      return o !== u[0] && u.unshift(o), n[o]
2785  }
2786  function Ut(e, t, n, r) {
2787    var i, o, a, s, u, l = {}, c = e.dataTypes.slice();
2788    if (c[1])
2789      for (a in e.converters)
2790        l[a.toLowerCase()] = e.converters[a];
2791    o = c.shift();
2792    while (o)
2793      if (e.responseFields[o] && (n[e.responseFields[o]] = t), !u && r && e.dataFilter && (t = e.dataFilter(t, e.dataType)), u = o, o = c.shift())
2794        if ("*" === o)
2795          o = u;
2796        else if ("*" !== u && u !== o) {
2797          if (!(a = l[u + " " + o] || l["* " + o]))
2798            for (i in l)
2799              if ((s = i.split(" "))[1] === o && (a = l[u + " " + s[0]] || l["* " + s[0]])) {
2800                !0 === a ? a = l[i] : !0 !== l[i] && (o = s[0], c.unshift(s[1]));
2801                break
2802              }
2803          if (!0 !== a)
2804            if (a && e["throws"])
2805              t = a(t);
2806            else
2807              try {
2808                t = a(t)
2809              } catch (e) {
2810                return { state: "parsererror", error: a ? e : "No conversion from " + u + " to " + o }
2811              }
2812        }
2813    return { state: "success", data: t }
2814  }
2815  w.extend({
2816    active: 0, lastModified: {}, etag: {}, ajaxSettings: { url: Ct.href, type: "GET", isLocal: Pt.test(Ct.protocol), global: !0, processData: !0, async: !0, contentType: "application/x-www-form-urlencoded; charset=UTF-8", accepts: { "*": $t, text: "text/plain", html: "text/html", xml: "application/xml, text/xml", json: "application/json, text/javascript" }, contents: { xml: /\bxml\b/, html: /\bhtml/, json: /\bjson\b/ }, responseFields: { xml: "responseXML", text: "responseText", json: "responseJSON" }, converters: { "* text": String, "text html": !0, "text json": JSON.parse, "text xml": w.parseXML }, flatOptions: { url: !0, context: !0 } }, ajaxSetup: function (e, t) {
2817      return t ? zt(zt(e, w.ajaxSettings), t) : zt(w.ajaxSettings, e)
2818    }, ajaxPrefilter: Ft(It), ajaxTransport: Ft(Wt), ajax: function (t, n) {
2819      "object" == typeof t && (n = t, t = void 0), n = n || {};
2820      var i, o, a, s, u, l, c, f, p, d, h = w.ajaxSetup({}, n), g = h.context || h, y = h.context && (g.nodeType || g.jquery) ? w(g) : w.event, v = w.Deferred(), m = w.Callbacks("once memory"), x = h.statusCode || {}, b = {}, T = {}, C = "canceled", E = {
2821        readyState: 0, getResponseHeader: function (e) {
2822          var t;
2823          if (c) {
2824            if (!s) {
2825              s = {};
2826              while (t = Ot.exec(a))
2827                s[t[1].toLowerCase()] = t[2]
2828            }
2829            t = s[e.toLowerCase()]
2830          }
2831          return null == t ? null : t
2832        }, getAllResponseHeaders: function () {
2833          return c ? a : null
2834        }, setRequestHeader: function (e, t) {
2835          return null == c && (e = T[e.toLowerCase()] = T[e.toLowerCase()] || e, b[e] = t), this
2836        }, overrideMimeType: function (e) {
2837          return null == c && (h.mimeType = e), this
2838        }, statusCode: function (e) {
2839          var t;
2840          if (e)
2841            if (c)
2842              E.always(e[E.status]);
2843            else
2844              for (t in e)
2845                x[t] = [x[t], e[t]];
2846          return this
2847        }, abort: function (e) {
2848          var t = e || C;
2849          return i && i.abort(t), k(0, t), this
2850        }
2851      };
2852      if (v.promise(E), h.url = ((t || h.url || Ct.href) + "").replace(Rt, Ct.protocol + "//"), h.type = n.method || n.type || h.method || h.type, h.dataTypes = (h.dataType || "*").toLowerCase().match(M) || [""], null == h.crossDomain) {
2853        l = r.createElement("a");
2854        try {
2855          l.href = h.url, l.href = l.href, h.crossDomain = Bt.protocol + "//" + Bt.host != l.protocol + "//" + l.host
2856        } catch (e) {
2857          h.crossDomain = !0
2858        }
2859      }
2860      if (h.data && h.processData && "string" != typeof h.data && (h.data = w.param(h.data, h.traditional)), _t(It, h, n, E), c)
2861        return E;
2862      (f = w.event && h.global) && 0 == w.active++ && w.event.trigger("ajaxStart"), h.type = h.type.toUpperCase(), h.hasContent = !Mt.test(h.type), o = h.url.replace(Lt, ""), h.hasContent ? h.data && h.processData && 0 === (h.contentType || "").indexOf("application/x-www-form-urlencoded") && (h.data = h.data.replace(qt, "+")) : (d = h.url.slice(o.length), h.data && (h.processData || "string" == typeof h.data) && (o += (kt.test(o) ? "&" : "?") + h.data, delete h.data), !1 === h.cache && (o = o.replace(Ht, "$1"), d = (kt.test(o) ? "&" : "?") + "_=" + Et++ + d), h.url = o + d), h.ifModified && (w.lastModified[o] && E.setRequestHeader("If-Modified-Since", w.lastModified[o]), w.etag[o] && E.setRequestHeader("If-None-Match", w.etag[o])), (h.data && h.hasContent && !1 !== h.contentType || n.contentType) && E.setRequestHeader("Content-Type", h.contentType), E.setRequestHeader("Accept", h.dataTypes[0] && h.accepts[h.dataTypes[0]] ? h.accepts[h.dataTypes[0]] + ("*" !== h.dataTypes[0] ? ", " + $t + "; q=0.01" : "") : h.accepts["*"]);
2863      for (p in h.headers)
2864        E.setRequestHeader(p, h.headers[p]);
2865      if (h.beforeSend && (!1 === h.beforeSend.call(g, E, h) || c))
2866        return E.abort();
2867      if (C = "abort", m.add(h.complete), E.done(h.success), E.fail(h.error), i = _t(Wt, h, n, E)) {
2868        if (E.readyState = 1, f && y.trigger("ajaxSend", [E, h]), c)
2869          return E;
2870        h.async && h.timeout > 0 && (u = e.setTimeout(function () {
2871          E.abort("timeout")
2872        }, h.timeout));
2873        try {
2874          c = !1, i.send(b, k)
2875        } catch (e) {
2876          if (c)
2877            throw e;
2878          k(-1, e)
2879        }
2880      } else
2881        k(-1, "No Transport");
2882      function k(t, n, r, s) {
2883        var l, p, d, b, T, C = n;
2884        c || (c = !0, u && e.clearTimeout(u), i = void 0, a = s || "", E.readyState = t > 0 ? 4 : 0, l = t >= 200 && t < 300 || 304 === t, r && (b = Xt(h, E, r)), b = Ut(h, b, E, l), l ? (h.ifModified && ((T = E.getResponseHeader("Last-Modified")) && (w.lastModified[o] = T), (T = E.getResponseHeader("etag")) && (w.etag[o] = T)), 204 === t || "HEAD" === h.type ? C = "nocontent" : 304 === t ? C = "notmodified" : (C = b.state, p = b.data, l = !(d = b.error))) : (d = C, !t && C || (C = "error", t < 0 && (t = 0))), E.status = t, E.statusText = (n || C) + "", l ? v.resolveWith(g, [p, C, E]) : v.rejectWith(g, [E, C, d]), E.statusCode(x), x = void 0, f && y.trigger(l ? "ajaxSuccess" : "ajaxError", [E, h, l ? p : d]), m.fireWith(g, [E, C]), f && (y.trigger("ajaxComplete", [E, h]), --w.active || w.event.trigger("ajaxStop")))
2885      }
2886      return E
2887    }, getJSON: function (e, t, n) {
2888      return w.get(e, t, n, "json")
2889    }, getScript: function (e, t) {
2890      return w.get(e, void 0, t, "script")
2891    }
2892  }), w.each(["get", "post"], function (e, t) {
2893    w[t] = function (e, n, r, i) {
2894      return g(n) && (i = i || r, r = n, n = void 0), w.ajax(w.extend({ url: e, type: t, dataType: i, data: n, success: r }, w.isPlainObject(e) && e))
2895    }
2896  }), w._evalUrl = function (e) {
2897    return w.ajax({ url: e, type: "GET", dataType: "script", cache: !0, async: !1, global: !1, "throws": !0 })
2898  }, w.fn.extend({
2899    wrapAll: function (e) {
2900      var t;
2901      return this[0] && (g(e) && (e = e.call(this[0])), t = w(e, this[0].ownerDocument).eq(0).clone(!0), this[0].parentNode && t.insertBefore(this[0]), t.map(function () {
2902        var e = this;
2903        while (e.firstElementChild)
2904          e = e.firstElementChild;
2905        return e
2906      }).append(this)), this
2907    }, wrapInner: function (e) {
2908      return g(e) ? this.each(function (t) {
2909        w(this).wrapInner(e.call(this, t))
2910      }) : this.each(function () {
2911        var t = w(this), n = t.contents();
2912        n.length ? n.wrapAll(e) : t.append(e)
2913      })
2914    }, wrap: function (e) {
2915      var t = g(e);
2916      return this.each(function (n) {
2917        w(this).wrapAll(t ? e.call(this, n) : e)
2918      })
2919    }, unwrap: function (e) {
2920      return this.parent(e).not("body").each(function () {
2921        w(this).replaceWith(this.childNodes)
2922      }), this
2923    }
2924  }), w.expr.pseudos.hidden = function (e) {
2925    return !w.expr.pseudos.visible(e)
2926  }, w.expr.pseudos.visible = function (e) {
2927    return !!(e.offsetWidth || e.offsetHeight || e.getClientRects().length)
2928  }, w.ajaxSettings.xhr = function () {
2929    try {
2930      return new e.XMLHttpRequest
2931    } catch (e) {
2932    }
2933  };
2934  var Vt = { 0: 200, 1223: 204 }, Gt = w.ajaxSettings.xhr();
2935  h.cors = !!Gt && "withCredentials" in Gt, h.ajax = Gt = !!Gt, w.ajaxTransport(function (t) {
2936    var n, r;
2937    if (h.cors || Gt && !t.crossDomain)
2938      return {
2939        send: function (i, o) {
2940          var a, s = t.xhr();
2941          if (s.open(t.type, t.url, t.async, t.username, t.password), t.xhrFields)
2942            for (a in t.xhrFields)
2943              s[a] = t.xhrFields[a];
2944          t.mimeType && s.overrideMimeType && s.overrideMimeType(t.mimeType), t.crossDomain || i["X-Requested-With"] || (i["X-Requested-With"] = "XMLHttpRequest");
2945          for (a in i)
2946            s.setRequestHeader(a, i[a]);
2947          n = function (e) {
2948            return function () {
2949              n && (n = r = s.onload = s.onerror = s.onabort = s.ontimeout = s.onreadystatechange = null, "abort" === e ? s.abort() : "error" === e ? "number" != typeof s.status ? o(0, "error") : o(s.status, s.statusText) : o(Vt[s.status] || s.status, s.statusText, "text" !== (s.responseType || "text") || "string" != typeof s.responseText ? { binary: s.response } : { text: s.responseText }, s.getAllResponseHeaders()))
2950            }
2951          }, s.onload = n(), r = s.onerror = s.ontimeout = n("error"), void 0 !== s.onabort ? s.onabort = r : s.onreadystatechange = function () {
2952            4 === s.readyState && e.setTimeout(function () {
2953              n && r()
2954            })
2955          }, n = n("abort");
2956          try {
2957            s.send(t.hasContent && t.data || null)
2958          } catch (e) {
2959            if (n)
2960              throw e
2961          }
2962        }, abort: function () {
2963          n && n()
2964        }
2965      }
2966  }), w.ajaxPrefilter(function (e) {
2967    e.crossDomain && (e.contents.script = !1)
2968  }), w.ajaxSetup({
2969    accepts: { script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript" }, contents: { script: /\b(?:java|ecma)script\b/ }, converters: {
2970      "text script": function (e) {
2971        return w.globalEval(e), e
2972      }
2973    }
2974  }), w.ajaxPrefilter("script", function (e) {
2975    void 0 === e.cache && (e.cache = !1), e.crossDomain && (e.type = "GET")
2976  }), w.ajaxTransport("script", function (e) {
2977    if (e.crossDomain) {
2978      var t, n;
2979      return {
2980        send: function (i, o) {
2981          t = w("<script>").prop({ charset: e.scriptCharset, src: e.url }).on("load error", n = function (e) {
2982            t.remove(), n = null, e && o("error" === e.type ? 404 : 200, e.type)
2983          }), r.head.appendChild(t[0])
2984        }, abort: function () {
2985          n && n()
2986        }
2987      }
2988    }
2989  });
2990  var Yt = [], Qt = /(=)\?(?=&|$)|\?\?/;
2991  w.ajaxSetup({
2992    jsonp: "callback", jsonpCallback: function () {
2993      var e = Yt.pop() || w.expando + "_" + Et++;
2994      return this[e] = !0, e
2995    }
2996  }), w.ajaxPrefilter("json jsonp", function (t, n, r) {
2997    var i, o, a, s = !1 !== t.jsonp && (Qt.test(t.url) ? "url" : "string" == typeof t.data && 0 === (t.contentType || "").indexOf("application/x-www-form-urlencoded") && Qt.test(t.data) && "data");
2998    if (s || "jsonp" === t.dataTypes[0])
2999      return i = t.jsonpCallback = g(t.jsonpCallback) ? t.jsonpCallback() : t.jsonpCallback, s ? t[s] = t[s].replace(Qt, "$1" + i) : !1 !== t.jsonp && (t.url += (kt.test(t.url) ? "&" : "?") + t.jsonp + "=" + i), t.converters["script json"] = function () {
3000        return a || w.error(i + " was not called"), a[0]
3001      }, t.dataTypes[0] = "json", o = e[i], e[i] = function () {
3002        a = arguments
3003      }, r.always(function () {
3004        void 0 === o ? w(e).removeProp(i) : e[i] = o, t[i] && (t.jsonpCallback = n.jsonpCallback, Yt.push(i)), a && g(o) && o(a[0]), a = o = void 0
3005      }), "script"
3006  }), h.createHTMLDocument = function () {
3007    var e = r.implementation.createHTMLDocument("").body;
3008    return e.innerHTML = "<form></form><form></form>", 2 === e.childNodes.length
3009  }(), w.parseHTML = function (e, t, n) {
3010    if ("string" != typeof e)
3011      return [];
3012    "boolean" == typeof t && (n = t, t = !1);
3013    var i, o, a;
3014    return t || (h.createHTMLDocument ? ((i = (t = r.implementation.createHTMLDocument("")).createElement("base")).href = r.location.href, t.head.appendChild(i)) : t = r), o = A.exec(e), a = !n && [], o ? [t.createElement(o[1])] : (o = xe([e], t, a), a && a.length && w(a).remove(), w.merge([], o.childNodes))
3015  }, w.fn.load = function (e, t, n) {
3016    var r, i, o, a = this, s = e.indexOf(" ");
3017    return s > -1 && (r = vt(e.slice(s)), e = e.slice(0, s)), g(t) ? (n = t, t = void 0) : t && "object" == typeof t && (i = "POST"), a.length > 0 && w.ajax({ url: e, type: i || "GET", dataType: "html", data: t }).done(function (e) {
3018      o = arguments, a.html(r ? w("<div>").append(w.parseHTML(e)).find(r) : e)
3019    }).always(n && function (e, t) {
3020      a.each(function () {
3021        n.apply(this, o || [e.responseText, t, e])
3022      })
3023    }), this
3024  }, w.each(["ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend"], function (e, t) {
3025    w.fn[t] = function (e) {
3026      return this.on(t, e)
3027    }
3028  }), w.expr.pseudos.animated = function (e) {
3029    return w.grep(w.timers, function (t) {
3030      return e === t.elem
3031    }).length
3032  }, w.offset = {
3033    setOffset: function (e, t, n) {
3034      var r, i, o, a, s, u, l, c = w.css(e, "position"), f = w(e), p = {};
3035      "static" === c && (e.style.position = "relative"), s = f.offset(), o = w.css(e, "top"), u = w.css(e, "left"), (l = ("absolute" === c || "fixed" === c) && (o + u).indexOf("auto") > -1) ? (a = (r = f.position()).top, i = r.left) : (a = parseFloat(o) || 0, i = parseFloat(u) || 0), g(t) && (t = t.call(e, n, w.extend({}, s))), null != t.top && (p.top = t.top - s.top + a), null != t.left && (p.left = t.left - s.left + i), "using" in t ? t.using.call(e, p) : f.css(p)
3036    }
3037  }, w.fn.extend({
3038    offset: function (e) {
3039      if (arguments.length)
3040        return void 0 === e ? this : this.each(function (t) {
3041          w.offset.setOffset(this, e, t)
3042        });
3043      var t, n, r = this[0];
3044      if (r)
3045        return r.getClientRects().length ? (t = r.getBoundingClientRect(), n = r.ownerDocument.defaultView, { top: t.top + n.pageYOffset, left: t.left + n.pageXOffset }) : { top: 0, left: 0 }
3046    }, position: function () {
3047      if (this[0]) {
3048        var e, t, n, r = this[0], i = { top: 0, left: 0 };
3049        if ("fixed" === w.css(r, "position"))
3050          t = r.getBoundingClientRect();
3051        else {
3052          t = this.offset(), n = r.ownerDocument, e = r.offsetParent || n.documentElement;
3053          while (e && (e === n.body || e === n.documentElement) && "static" === w.css(e, "position"))
3054            e = e.parentNode;
3055          e && e !== r && 1 === e.nodeType && ((i = w(e).offset()).top += w.css(e, "borderTopWidth", !0), i.left += w.css(e, "borderLeftWidth", !0))
3056        }
3057        return { top: t.top - i.top - w.css(r, "marginTop", !0), left: t.left - i.left - w.css(r, "marginLeft", !0) }
3058      }
3059    }, offsetParent: function () {
3060      return this.map(function () {
3061        var e = this.offsetParent;
3062        while (e && "static" === w.css(e, "position"))
3063          e = e.offsetParent;
3064        return e || be
3065      })
3066    }
3067  }), w.each({ scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function (e, t) {
3068    var n = "pageYOffset" === t;
3069    w.fn[e] = function (r) {
3070      return z(this, function (e, r, i) {
3071        var o;
3072        if (y(e) ? o = e : 9 === e.nodeType && (o = e.defaultView), void 0 === i)
3073          return o ? o[t] : e[r];
3074        o ? o.scrollTo(n ? o.pageXOffset : i, n ? i : o.pageYOffset) : e[r] = i
3075      }, e, r, arguments.length)
3076    }
3077  }), w.each(["top", "left"], function (e, t) {
3078    w.cssHooks[t] = _e(h.pixelPosition, function (e, n) {
3079      if (n)
3080        return n = Fe(e, t), We.test(n) ? w(e).position()[t] + "px" : n
3081    })
3082  }), w.each({ Height: "height", Width: "width" }, function (e, t) {
3083    w.each({ padding: "inner" + e, content: t, "": "outer" + e }, function (n, r) {
3084      w.fn[r] = function (i, o) {
3085        var a = arguments.length && (n || "boolean" != typeof i), s = n || (!0 === i || !0 === o ? "margin" : "border");
3086        return z(this, function (t, n, i) {
3087          var o;
3088          return y(t) ? 0 === r.indexOf("outer") ? t["inner" + e] : t.document.documentElement["client" + e] : 9 === t.nodeType ? (o = t.documentElement, Math.max(t.body["scroll" + e], o["scroll" + e], t.body["offset" + e], o["offset" + e], o["client" + e])) : void 0 === i ? w.css(t, n, s) : w.style(t, n, i, s)
3089        }, t, a ? i : void 0, a)
3090      }
3091    })
3092  }), w.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "), function (e, t) {
3093    w.fn[t] = function (e, n) {
3094      return arguments.length > 0 ? this.on(t, null, e, n) : this.trigger(t)
3095    }
3096  }), w.fn.extend({
3097    hover: function (e, t) {
3098      return this.mouseenter(e).mouseleave(t || e)
3099    }
3100  }), w.fn.extend({
3101    bind: function (e, t, n) {
3102      return this.on(e, null, t, n)
3103    }, unbind: function (e, t) {
3104      return this.off(e, null, t)
3105    }, delegate: function (e, t, n, r) {
3106      return this.on(t, e, n, r)
3107    }, undelegate: function (e, t, n) {
3108      return 1 === arguments.length ? this.off(e, "**") : this.off(t, e || "**", n)
3109    }
3110  }), w.proxy = function (e, t) {
3111    var n, r, i;
3112    if ("string" == typeof t && (n = e[t], t = e, e = n), g(e))
3113      return r = o.call(arguments, 2), i = function () {
3114        return e.apply(t || this, r.concat(o.call(arguments)))
3115      }, i.guid = e.guid = e.guid || w.guid++, i
3116  }, w.holdReady = function (e) {
3117    e ? w.readyWait++ : w.ready(!0)
3118  }, w.isArray = Array.isArray, w.parseJSON = JSON.parse, w.nodeName = N, w.isFunction = g, w.isWindow = y, w.camelCase = G, w.type = x, w.now = Date.now, w.isNumeric = function (e) {
3119    var t = w.type(e);
3120    return ("number" === t || "string" === t) && !isNaN(e - parseFloat(e))
3121  }, "function" == typeof define && define.amd && define("jquery", [], function () {
3122    return w
3123  });
3124  var Jt = e.jQuery, Kt = e.$;
3125  return w.noConflict = function (t) {
3126    return e.$ === w && (e.$ = Kt), t && e.jQuery === w && (e.jQuery = Jt), w
3127  }, t || (e.jQuery = e.$ = w), w
3128});
3129/*!
3130 * Bootstrap v4.3.1 (https://getbootstrap.com/)
3131 * Copyright 2011-2019 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
3132 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
3133 */
3134!function (t, e) {
3135  "object" == typeof exports && "undefined" != typeof module ? e(exports, require("jquery"), require("popper.js")) : "function" == typeof define && define.amd ? define(["exports", "jquery", "popper.js"], e) : e((t = t || self).bootstrap = {}, t.jQuery, t.Popper)
3136}(this, function (t, g, u) {
3137  "use strict";
3138  function i(t, e) {
3139    for (var n = 0; n < e.length; n++) {
3140      var i = e[n];
3141      i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(t, i.key, i)
3142    }
3143  }
3144  function s(t, e, n) {
3145    return e && i(t.prototype, e), n && i(t, n), t
3146  }
3147  function l(o) {
3148    for (var t = 1; t < arguments.length; t++) {
3149      var r = null != arguments[t] ? arguments[t] : {}, e = Object.keys(r);
3150      "function" == typeof Object.getOwnPropertySymbols && (e = e.concat(Object.getOwnPropertySymbols(r).filter(function (t) {
3151        return Object.getOwnPropertyDescriptor(r, t).enumerable
3152      }))), e.forEach(function (t) {
3153        var e, n, i;
3154        e = o, i = r[n = t], n in e ? Object.defineProperty(e, n, { value: i, enumerable: !0, configurable: !0, writable: !0 }) : e[n] = i
3155      })
3156    }
3157    return o
3158  }
3159  g = g && g.hasOwnProperty("default") ? g.default : g, u = u && u.hasOwnProperty("default") ? u.default : u;
3160  var e = "transitionend";
3161  function n(t) {
3162    var e = this, n = !1;
3163    return g(this).one(_.TRANSITION_END, function () {
3164      n = !0
3165    }), setTimeout(function () {
3166      n || _.triggerTransitionEnd(e)
3167    }, t), this
3168  }
3169  var _ = {
3170    TRANSITION_END: "bsTransitionEnd", getUID: function (t) {
3171      for (; t += ~~(1e6 * Math.random()), document.getElementById(t);)
3172        ;
3173      return t
3174    }, getSelectorFromElement: function (t) {
3175      var e = t.getAttribute("data-target");
3176      if (!e || "#" === e) {
3177        var n = t.getAttribute("href");
3178        e = n && "#" !== n ? n.trim() : ""
3179      }
3180      try {
3181        return document.querySelector(e) ? e : null
3182      } catch (t) {
3183        return null
3184      }
3185    }, getTransitionDurationFromElement: function (t) {
3186      if (!t)
3187        return 0;
3188      var e = g(t).css("transition-duration"), n = g(t).css("transition-delay"), i = parseFloat(e), o = parseFloat(n);
3189      return i || o ? (e = e.split(",")[0], n = n.split(",")[0], 1e3 * (parseFloat(e) + parseFloat(n))) : 0
3190    }, reflow: function (t) {
3191      return t.offsetHeight
3192    }, triggerTransitionEnd: function (t) {
3193      g(t).trigger(e)
3194    }, supportsTransitionEnd: function () {
3195      return Boolean(e)
3196    }, isElement: function (t) {
3197      return (t[0] || t).nodeType
3198    }, typeCheckConfig: function (t, e, n) {
3199      for (var i in n)
3200        if (Object.prototype.hasOwnProperty.call(n, i)) {
3201          var o = n[i], r = e[i], s = r && _.isElement(r) ? "element" : (a = r, {}.toString.call(a).match(/\s([a-z]+)/i)[1].toLowerCase());
3202          if (!new RegExp(o).test(s))
3203            throw new Error(t.toUpperCase() + ': Option "' + i + '" provided type "' + s + '" but expected type "' + o + '".')
3204        }
3205      var a
3206    }, findShadowRoot: function (t) {
3207      if (!document.documentElement.attachShadow)
3208        return null;
3209      if ("function" != typeof t.getRootNode)
3210        return t instanceof ShadowRoot ? t : t.parentNode ? _.findShadowRoot(t.parentNode) : null;
3211      var e = t.getRootNode();
3212      return e instanceof ShadowRoot ? e : null
3213    }
3214  };
3215  g.fn.emulateTransitionEnd = n, g.event.special[_.TRANSITION_END] = {
3216    bindType: e, delegateType: e, handle: function (t) {
3217      if (g(t.target).is(this))
3218        return t.handleObj.handler.apply(this, arguments)
3219    }
3220  };
3221  var o = "alert", r = "bs.alert", a = "." + r, c = g.fn[o], h = { CLOSE: "close" + a, CLOSED: "closed" + a, CLICK_DATA_API: "click" + a + ".data-api" }, f = "alert", d = "fade", m = "show", p = function () {
3222    function i(t) {
3223      this._element = t
3224    }
3225    var t = i.prototype;
3226    return t.close = function (t) {
3227      var e = this._element;
3228      t && (e = this._getRootElement(t)), this._triggerCloseEvent(e).isDefaultPrevented() || this._removeElement(e)
3229    }, t.dispose = function () {
3230      g.removeData(this._element, r), this._element = null
3231    }, t._getRootElement = function (t) {
3232      var e = _.getSelectorFromElement(t), n = !1;
3233      return e && (n = document.querySelector(e)), n || (n = g(t).closest("." + f)[0]), n
3234    }, t._triggerCloseEvent = function (t) {
3235      var e = g.Event(h.CLOSE);
3236      return g(t).trigger(e), e
3237    }, t._removeElement = function (e) {
3238      var n = this;
3239      if (g(e).removeClass(m), g(e).hasClass(d)) {
3240        var t = _.getTransitionDurationFromElement(e);
3241        g(e).one(_.TRANSITION_END, function (t) {
3242          return n._destroyElement(e, t)
3243        }).emulateTransitionEnd(t)
3244      } else
3245        this._destroyElement(e)
3246    }, t._destroyElement = function (t) {
3247      g(t).detach().trigger(h.CLOSED).remove()
3248    }, i._jQueryInterface = function (n) {
3249      return this.each(function () {
3250        var t = g(this), e = t.data(r);
3251        e || (e = new i(this), t.data(r, e)), "close" === n && e[n](this)
3252      })
3253    }, i._handleDismiss = function (e) {
3254      return function (t) {
3255        t && t.preventDefault(), e.close(this)
3256      }
3257    }, s(i, null, [{
3258      key: "VERSION", get: function () {
3259        return "4.3.1"
3260      }
3261    }]), i
3262  }();
3263  g(document).on(h.CLICK_DATA_API, '[data-dismiss="alert"]', p._handleDismiss(new p)), g.fn[o] = p._jQueryInterface, g.fn[o].Constructor = p, g.fn[o].noConflict = function () {
3264    return g.fn[o] = c, p._jQueryInterface
3265  };
3266  var v = "button", y = "bs.button", E = "." + y, C = ".data-api", T = g.fn[v], S = "active", b = "btn", I = "focus", D = '[data-toggle^="button"]', w = '[data-toggle="buttons"]', A = 'input:not([type="hidden"])', N = ".active", O = ".btn", k = { CLICK_DATA_API: "click" + E + C, FOCUS_BLUR_DATA_API: "focus" + E + C + " blur" + E + C }, P = function () {
3267    function n(t) {
3268      this._element = t
3269    }
3270    var t = n.prototype;
3271    return t.toggle = function () {
3272      var t = !0, e = !0, n = g(this._element).closest(w)[0];
3273      if (n) {
3274        var i = this._element.querySelector(A);
3275        if (i) {
3276          if ("radio" === i.type)
3277            if (i.checked && this._element.classList.contains(S))
3278              t = !1;
3279            else {
3280              var o = n.querySelector(N);
3281              o && g(o).removeClass(S)
3282            }
3283          if (t) {
3284            if (i.hasAttribute("disabled") || n.hasAttribute("disabled") || i.classList.contains("disabled") || n.classList.contains("disabled"))
3285              return;
3286            i.checked = !this._element.classList.contains(S), g(i).trigger("change")
3287          }
3288          i.focus(), e = !1
3289        }
3290      }
3291      e && this._element.setAttribute("aria-pressed", !this._element.classList.contains(S)), t && g(this._element).toggleClass(S)
3292    }
3292, t.dispose = function () {
3293      g.removeData(this._element, y), this._element = null
3294    }, n._jQueryInterface = function (e) {
3295      return this.each(function () {
3296        var t = g(this).data(y);
3297        t || (t = new n(this), g(this).data(y, t)), "toggle" === e && t[e]()
3298      })
3299    }, s(n, null, [{
3300      key: "VERSION", get: function () {
3301        return "4.3.1"
3302      }
3303    }]), n
3304  }();
3305  g(document).on(k.CLICK_DATA_API, D, function (t) {
3306    t.preventDefault();
3307    var e = t.target;
3308    g(e).hasClass(b) || (e = g(e).closest(O)), P._jQueryInterface.call(g(e), "toggle")
3309  }).on(k.FOCUS_BLUR_DATA_API, D, function (t) {
3310    var e = g(t.target).closest(O)[0];
3311    g(e).toggleClass(I, /^focus(in)?$/.test(t.type))
3312  }), g.fn[v] = P._jQueryInterface, g.fn[v].Constructor = P, g.fn[v].noConflict = function () {
3313    return g.fn[v] = T, P._jQueryInterface
3314  };
3315  var L = "carousel", j = "bs.carousel", H = "." + j, R = ".data-api", x = g.fn[L], F = { interval: 5e3, keyboard: !0, slide: !1, pause: "hover", wrap: !0, touch: !0 }, U = { interval: "(number|boolean)", keyboard: "boolean", slide: "(boolean|string)", pause: "(string|boolean)", wrap: "boolean", touch: "boolean" }, W = "next", q = "prev", M = "left", K = "right", Q = { SLIDE: "slide" + H, SLID: "slid" + H, KEYDOWN: "keydown" + H, MOUSEENTER: "mouseenter" + H, MOUSELEAVE: "mouseleave" + H, TOUCHSTART: "touchstart" + H, TOUCHMOVE: "touchmove" + H, TOUCHEND: "touchend" + H, POINTERDOWN: "pointerdown" + H, POINTERUP: "pointerup" + H, DRAG_START: "dragstart" + H, LOAD_DATA_API: "load" + H + R, CLICK_DATA_API: "click" + H + R }, B = "carousel", V = "active", Y = "slide", z = "carousel-item-right", X = "carousel-item-left", $ = "carousel-item-next", G = "carousel-item-prev", J = "pointer-event", Z = ".active", tt = ".active.carousel-item", et = ".carousel-item", nt = ".carousel-item img", it = ".carousel-item-next, .carousel-item-prev", ot = ".carousel-indicators", rt = "[data-slide], [data-slide-to]", st = '[data-ride="carousel"]', at = { TOUCH: "touch", PEN: "pen" }, lt = function () {
3316    function r(t, e) {
3317      this._items = null, this._interval = null, this._activeElement = null, this._isPaused = !1, this._isSliding = !1, this.touchTimeout = null, this.touchStartX = 0, this.touchDeltaX = 0, this._config = this._getConfig(e), this._element = t, this._indicatorsElement = this._element.querySelector(ot), this._touchSupported = "ontouchstart" in document.documentElement || 0 < navigator.maxTouchPoints, this._pointerEvent = Boolean(window.PointerEvent || window.MSPointerEvent), this._addEventListeners()
3318    }
3319    var t = r.prototype;
3320    return t.next = function () {
3321      this._isSliding || this._slide(W)
3322    }, t.nextWhenVisible = function () {
3323      !document.hidden && g(this._element).is(":visible") && "hidden" !== g(this._element).css("visibility") && this.next()
3324    }, t.prev = function () {
3325      this._isSliding || this._slide(q)
3326    }, t.pause = function (t) {
3327      t || (this._isPaused = !0), this._element.querySelector(it) && (_.triggerTransitionEnd(this._element), this.cycle(!0)), clearInterval(this._interval), this._interval = null
3328    }, t.cycle = function (t) {
3329      t || (this._isPaused = !1), this._interval && (clearInterval(this._interval), this._interval = null), this._config.interval && !this._isPaused && (this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval))
3330    }, t.to = function (t) {
3331      var e = this;
3332      this._activeElement = this._element.querySelector(tt);
3333      var n = this._getItemIndex(this._activeElement);
3334      if (!(t > this._items.length - 1 || t < 0))
3335        if (this._isSliding)
3336          g(this._element).one(Q.SLID, function () {
3337            return e.to(t)
3338          });
3339        else {
3340          if (n === t)
3341            return this.pause(), void this.cycle();
3342          var i = n < t ? W : q;
3343          this._slide(i, this._items[t])
3344        }
3345    }, t.dispose = function () {
3346      g(this._element).off(H), g.removeData(this._element, j), this._items = null, this._config = null, this._element = null, this._interval = null, this._isPaused = null, this._isSliding = null, this._activeElement = null, this._indicatorsElement = null
3347    }, t._getConfig = function (t) {
3348      return t = l({}, F, t), _.typeCheckConfig(L, t, U), t
3349    }, t._handleSwipe = function () {
3350      var t = Math.abs(this.touchDeltaX);
3351      if (!(t <= 40)) {
3352        var e = t / this.touchDeltaX;
3353        0 < e && this.prev(), e < 0 && this.next()
3354      }
3355    }, t._addEventListeners = function () {
3356      var e = this;
3357      this._config.keyboard && g(this._element).on(Q.KEYDOWN, function (t) {
3358        return e._keydown(t)
3359      }), "hover" === this._config.pause && g(this._element).on(Q.MOUSEENTER, function (t) {
3360        return e.pause(t)
3361      }).on(Q.MOUSELEAVE, function (t) {
3362        return e.cycle(t)
3363      }), this._config.touch && this._addTouchEventListeners()
3364    }, t._addTouchEventListeners = function () {
3365      var n = this;
3366      if (this._touchSupported) {
3367        var e = function (t) {
3368          n._pointerEvent && at[t.originalEvent.pointerType.toUpperCase()] ? n.touchStartX = t.originalEvent.clientX : n._pointerEvent || (n.touchStartX = t.originalEvent.touches[0].clientX)
3369        }, i = function (t) {
3370          n._pointerEvent && at[t.originalEvent.pointerType.toUpperCase()] && (n.touchDeltaX = t.originalEvent.clientX - n.touchStartX), n._handleSwipe(), "hover" === n._config.pause && (n.pause(), n.touchTimeout && clearTimeout(n.touchTimeout), n.touchTimeout = setTimeout(function (t) {
3371            return n.cycle(t)
3372          }, 500 + n._config.interval))
3373        };
3374        g(this._element.querySelectorAll(nt)).on(Q.DRAG_START, function (t) {
3375          return t.preventDefault()
3376        }), this._pointerEvent ? (g(this._element).on(Q.POINTERDOWN, function (t) {
3377          return e(t)
3378        }), g(this._element).on(Q.POINTERUP, function (t) {
3379          return i(t)
3380        }), this._element.classList.add(J)) : (g(this._element).on(Q.TOUCHSTART, function (t) {
3381          return e(t)
3382        }), g(this._element).on(Q.TOUCHMOVE, function (t) {
3383          var e;
3384          (e = t).originalEvent.touches && 1 < e.originalEvent.touches.length ? n.touchDeltaX = 0 : n.touchDeltaX = e.originalEvent.touches[0].clientX - n.touchStartX
3385        }), g(this._element).on(Q.TOUCHEND, function (t) {
3386          return i(t)
3387        }))
3388      }
3389    }, t._keydown = function (t) {
3390      if (!/input|textarea/i.test(t.target.tagName))
3391        switch (t.which) {
3392          case 37:
3393            t.preventDefault(), this.prev();
3394            break;
3395          case 39:
3396            t.preventDefault(), this.next()
3397        }
3398    }, t._getItemIndex = function (t) {
3399      return this._items = t && t.parentNode ? [].slice.call(t.parentNode.querySelectorAll(et)) : [], this._items.indexOf(t)
3400    }, t._getItemByDirection = function (t, e) {
3401      var n = t === W, i = t === q, o = this._getItemIndex(e), r = this._items.length - 1;
3402      if ((i && 0 === o || n && o === r) && !this._config.wrap)
3403        return e;
3404      var s = (o + (t === q ? -1 : 1)) % this._items.length;
3405      return -1 === s ? this._items[this._items.length - 1] : this._items[s]
3406    }, t._triggerSlideEvent = function (t, e) {
3407      var n = this._getItemIndex(t), i = this._getItemIndex(this._element.querySelector(tt)), o = g.Event(Q.SLIDE, { relatedTarget: t, direction: e, from: i, to: n });
3408      return g(this._element).trigger(o), o
3409    }, t._setActiveIndicatorElement = function (t) {
3410      if (this._indicatorsElement) {
3411        var e = [].slice.call(this._indicatorsElement.querySelectorAll(Z));
3412        g(e).removeClass(V);
3413        var n = this._indicatorsElement.children[this._getItemIndex(t)];
3414        n && g(n).addClass(V)
3415      }
3416    }, t._slide = function (t, e) {
3417      var n, i, o, r = this, s = this._element.querySelector(tt), a = this._getItemIndex(s), l = e || s && this._getItemByDirection(t, s), c = this._getItemIndex(l), h = Boolean(this._interval);
3418      if (o = t === W ? (n = X, i = $, M) : (n = z, i = G, K), l && g(l).hasClass(V))
3419        this._isSliding = !1;
3420      else if (!this._triggerSlideEvent(l, o).isDefaultPrevented() && s && l) {
3421        this._isSliding = !0, h && this.pause(), this._setActiveIndicatorElement(l);
3422        var u = g.Event(Q.SLID, { relatedTarget: l, direction: o, from: a, to: c });
3423        if (g(this._element).hasClass(Y)) {
3424          g(l).addClass(i), _.reflow(l), g(s).addClass(n), g(l).addClass(n);
3425          var f = parseInt(l.getAttribute("data-interval"), 10);
3426          this._config.interval = f ? (this._config.defaultInterval = this._config.defaultInterval || this._config.interval, f) : this._config.defaultInterval || this._config.interval;
3427          var d = _.getTransitionDurationFromElement(s);
3428          g(s).one(_.TRANSITION_END, function () {
3429            g(l).removeClass(n + " " + i).addClass(V), g(s).removeClass(V + " " + i + " " + n
3429), r._isSliding = !1, setTimeout(function () {
3430              return g(r._element).trigger(u)
3431            }, 0)
3432          }).emulateTransitionEnd(d)
3433        } else
3434          g(s).removeClass(V), g(l).addClass(V), this._isSliding = !1, g(this._element).trigger(u);
3435        h && this.cycle()
3436      }
3437    }, r._jQueryInterface = function (i) {
3438      return this.each(function () {
3439        var t = g(this).data(j), e = l({}, F, g(this).data());
3440        "object" == typeof i && (e = l({}, e, i));
3441        var n = "string" == typeof i ? i : e.slide;
3442        if (t || (t = new r(this, e), g(this).data(j, t)), "number" == typeof i)
3443          t.to(i);
3444        else if ("string" == typeof n) {
3445          if ("undefined" == typeof t[n])
3446            throw new TypeError('No method named "' + n + '"');
3447          t[n]()
3448        } else
3449          e.interval && e.ride && (t.pause(), t.cycle())
3450      })
3451    }, r._dataApiClickHandler = function (t) {
3452      var e = _.getSelectorFromElement(this);
3453      if (e) {
3454        var n = g(e)[0];
3455        if (n && g(n).hasClass(B)) {
3456          var i = l({}, g(n).data(), g(this).data()), o = this.getAttribute("data-slide-to");
3457          o && (i.interval = !1), r._jQueryInterface.call(g(n), i), o && g(n).data(j).to(o), t.preventDefault()
3458        }
3459      }
3460    }, s(r, null, [{
3461      key: "VERSION", get: function () {
3462        return "4.3.1"
3463      }
3464    }, {
3465      key: "Default", get: function () {
3466        return F
3467      }
3468    }]), r
3469  }();
3470  g(document).on(Q.CLICK_DATA_API, rt, lt._dataApiClickHandler), g(window).on(Q.LOAD_DATA_API, function () {
3471    for (var t = [].slice.call(document.querySelectorAll(st)), e = 0, n = t.length; e < n; e++) {
3472      var i = g(t[e]);
3473      lt._jQueryInterface.call(i, i.data())
3474    }
3475  }), g.fn[L] = lt._jQueryInterface, g.fn[L].Constructor = lt, g.fn[L].noConflict = function () {
3476    return g.fn[L] = x, lt._jQueryInterface
3477  };
3478  var ct = "collapse", ht = "bs.collapse", ut = "." + ht, ft = g.fn[ct], dt = { toggle: !0, parent: "" }, gt = { toggle: "boolean", parent: "(string|element)" }, _t = { SHOW: "show" + ut, SHOWN: "shown" + ut, HIDE: "hide" + ut, HIDDEN: "hidden" + ut, CLICK_DATA_API: "click" + ut + ".data-api" }, mt = "show", pt = "collapse", vt = "collapsing", yt = "collapsed", Et = "width", Ct = "height", Tt = ".show, .collapsing", St = '[data-toggle="collapse"]', bt = function () {
3479    function a(e, t) {
3480      this._isTransitioning = !1, this._element = e, this._config = this._getConfig(t), this._triggerArray = [].slice.call(document.querySelectorAll('[data-toggle="collapse"][href="#' + e.id + '"],[data-toggle="collapse"][data-target="#' + e.id + '"]'));
3481      for (var n = [].slice.call(document.querySelectorAll(St)), i = 0, o = n.length; i < o; i++) {
3482        var r = n[i], s = _.getSelectorFromElement(r), a = [].slice.call(document.querySelectorAll(s)).filter(function (t) {
3483          return t === e
3484        });
3485        null !== s && 0 < a.length && (this._selector = s, this._triggerArray.push(r))
3486      }
3487      this._parent = this._config.parent ? this._getParent() : null, this._config.parent || this._addAriaAndCollapsedClass(this._element, this._triggerArray), this._config.toggle && this.toggle()
3488    }
3489    var t = a.prototype;
3490    return t.toggle = function () {
3491      g(this._element).hasClass(mt) ? this.hide() : this.show()
3492    }, t.show = function () {
3493      var t, e, n = this;
3494      if (!this._isTransitioning && !g(this._element).hasClass(mt) && (this._parent && 0 === (t = [].slice.call(this._parent.querySelectorAll(Tt)).filter(function (t) {
3495        return "string" == typeof n._config.parent ? t.getAttribute("data-parent") === n._config.parent : t.classList.contains(pt)
3496      })).length && (t = null), !(t && (e = g(t).not(this._selector).data(ht)) && e._isTransitioning))) {
3497        var i = g.Event(_t.SHOW);
3498        if (g(this._element).trigger(i), !i.isDefaultPrevented()) {
3499          t && (a._jQueryInterface.call(g(t).not(this._selector), "hide"), e || g(t).data(ht, null));
3500          var o = this._getDimension();
3501          g(this._element).removeClass(pt).addClass(vt), this._element.style[o] = 0, this._triggerArray.length && g(this._triggerArray).removeClass(yt).attr("aria-expanded", !0), this.setTransitioning(!0);
3502          var r = "scroll" + (o[0].toUpperCase() + o.slice(1)), s = _.getTransitionDurationFromElement(this._element);
3503          g(this._element).one(_.TRANSITION_END, function () {
3504            g(n._element).removeClass(vt).addClass(pt).addClass(mt), n._element.style[o] = "", n.setTransitioning(!1), g(n._element).trigger(_t.SHOWN)
3505          }).emulateTransitionEnd(s), this._element.style[o] = this._element[r] + "px"
3506        }
3507      }
3508    }, t.hide = function () {
3509      var t = this;
3510      if (!this._isTransitioning && g(this._element).hasClass(mt)) {
3511        var e = g.Event(_t.HIDE);
3512        if (g(this._element).trigger(e), !e.isDefaultPrevented()) {
3513          var n = this._getDimension();
3514          this._element.style[n] = this._element.getBoundingClientRect()[n] + "px", _.reflow(this._element), g(this._element).addClass(vt).removeClass(pt).removeClass(mt);
3515          var i = this._triggerArray.length;
3516          if (0 < i)
3517            for (var o = 0; o < i; o++) {
3518              var r = this._triggerArray[o], s = _.getSelectorFromElement(r);
3519              if (null !== s)
3520                g([].slice.call(document.querySelectorAll(s))).hasClass(mt) || g(r).addClass(yt).attr("aria-expanded", !1)
3521            }
3522          this.setTransitioning(!0);
3523          this._element.style[n] = "";
3524          var a = _.getTransitionDurationFromElement(this._element);
3525          g(this._element).one(_.TRANSITION_END, function () {
3526            t.setTransitioning(!1), g(t._element).removeClass(vt).addClass(pt).trigger(_t.HIDDEN)
3527          }).emulateTransitionEnd(a)
3528        }
3529      }
3530    }, t.setTransitioning = function (t) {
3531      this._isTransitioning = t
3532    }
3532, t.dispose = function () {
3533      g.removeData(this._element, ht), this._config = null, this._parent = null, this._element = null, this._triggerArray = null, this._isTransitioning = null
3534    }, t._getConfig = function (t) {
3535      return (t = l({}, dt, t)).toggle = Boolean(t.toggle), _.typeCheckConfig(ct, t, gt), t
3536    }, t._getDimension = function () {
3537      return g(this._element).hasClass(Et) ? Et : Ct
3538    }, t._getParent = function () {
3539      var t, n = this;
3540      _.isElement(this._config.parent) ? (t = this._config.parent, "undefined" != typeof this._config.parent.jquery && (t = this._config.parent[0])) : t = document.querySelector(this._config.parent);
3541      var e = '[data-toggle="collapse"][data-parent="' + this._config.parent + '"]', i = [].slice.call(t.querySelectorAll(e));
3542      return g(i).each(function (t, e) {
3543        n._addAriaAndCollapsedClass(a._getTargetFromElement(e), [e])
3544      }), t
3545    }, t._addAriaAndCollapsedClass = function (t, e) {
3546      var n = g(t).hasClass(mt);
3547      e.length && g(e).toggleClass(yt, !n).attr("aria-expanded", n)
3548    }, a._getTargetFromElement = function (t) {
3549      var e = _.getSelectorFromElement(t);
3550      return e ? document.querySelector(e) : null
3551    }, a._jQueryInterface = function (i) {
3552      return this.each(function () {
3553        var t = g(this), e = t.data(ht), n = l({}, dt, t.data(), "object" == typeof i && i ? i : {});
3554        if (!e && n.toggle && /show|hide/.test(i) && (n.toggle = !1), e || (e = new a(this, n), t.data(ht, e)), "string" == typeof i) {
3555          if ("undefined" == typeof e[i])
3556            throw new TypeError('No method named "' + i + '"');
3557          e[i]()
3558        }
3559      })
3560    }, s(a, null, [{
3561      key: "VERSION", get: function () {
3562        return "4.3.1"
3563      }
3564    }, {
3565      key: "Default", get: function () {
3566        return dt
3567      }
3568    }]), a
3569  }();
3570  g(document).on(_t.CLICK_DATA_API, St, function (t) {
3571    "A" === t.currentTarget.tagName && t.preventDefault();
3572    var n = g(this), e = _.getSelectorFromElement(this), i = [].slice.call(document.querySelectorAll(e));
3573    g(i).each(function () {
3574      var t = g(this), e = t.data(ht) ? "toggle" : n.data();
3575      bt._jQueryInterface.call(t, e)
3576    })
3577  }), g.fn[ct] = bt._jQueryInterface, g.fn[ct].Constructor = bt, g.fn[ct].noConflict = function () {
3578    return g.fn[ct] = ft, bt._jQueryInterface
3579  };
3580  var It = "dropdown", Dt = "bs.dropdown", wt = "." + Dt, At = ".data-api", Nt = g.fn[It], Ot = new RegExp("38|40|27"), kt = { HIDE: "hide" + wt, HIDDEN: "hidden" + wt, SHOW: "show" + wt, SHOWN: "shown" + wt, CLICK: "click" + wt, CLICK_DATA_API: "click" + wt + At, KEYDOWN_DATA_API: "keydown" + wt + At, KEYUP_DATA_API: "keyup" + wt + At }, Pt = "disabled", Lt = "show", jt = "dropup", Ht = "dropright", Rt = "dropleft", xt = "dropdown-menu-right", Ft = "position-static", Ut = '[data-toggle="dropdown"]', Wt = ".dropdown form", qt = ".dropdown-menu", Mt = ".navbar-nav", Kt = ".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)", Qt = "top-start", Bt = "top-end", Vt = "bottom-start", Yt = "bottom-end", zt = "right-start", Xt = "left-start", $t = { offset: 0, flip: !0, boundary: "scrollParent", reference: "toggle", display: "dynamic" }, Gt = { offset: "(number|string|function)", flip: "boolean", boundary: "(string|element)", reference: "(string|element)", display: "string" }, Jt = function () {
3581    function c(t, e) {
3582      this._element = t, this._popper = null, this._config = this._getConfig(e), this._menu = this._getMenuElement(), this._inNavbar = this._detectNavbar(), this._addEventListeners()
3583    }
3584    var t = c.prototype;
3585    return t.toggle = function () {
3586      if (!this._element.disabled && !g(this._element).hasClass(Pt)) {
3587        var t = c._getParentFromElement(this._element), e = g(this._menu).hasClass(Lt);
3588        if (c._clearMenus(), !e) {
3589          var n = { relatedTarget: this._element }, i = g.Event(kt.SHOW, n);
3590          if (g(t).trigger(i), !i.isDefaultPrevented()) {
3591            if (!this._inNavbar) {
3592              if ("undefined" == typeof u)
3593                throw new TypeError("Bootstrap's dropdowns require Popper.js (https://popper.js.org/)");
3594              var o = this._element;
3595              "parent" === this._config.reference ? o = t : _.isElement(this._config.reference) && (o = this._config.reference, "undefined" != typeof this._config.reference.jquery && (o = this._config.reference[0])), "scrollParent" !== this._config.boun
3595dary && g(t).addClass(Ft), this._popper = new u(o, this._menu, this._getPopperConfig())
3596            }
3597            "ontouchstart" in document.documentElement && 0 === g(t).closest(Mt).length && g(document.body).children().on("mouseover", null, g.noop), this._element.focus(), this._element.setAttribute("aria-expanded", !0), g(this._menu).toggleClass(Lt), g(t).toggleClass(Lt).trigger(g.Event(kt.SHOWN, n))
3598          }
3599        }
3600      }
3601    }, t.show = function () {
3602      if (!(this._element.disabled || g(this._element).hasClass(Pt) || g(this._menu).hasClass(Lt))) {
3603        var t = { relatedTarget: this._element }, e = g.Event(kt.SHOW, t), n = c._getParentFromElement(this._element);
3604        g(n).trigger(e), e.isDefaultPrevented() || (g(this._menu).toggleClass(Lt), g(n).toggleClass(Lt).trigger(g.Event(kt.SHOWN, t)))
3605      }
3606    }, t.hide = function () {
3607      if (!this._element.disabled && !g(this._element).hasClass(Pt) && g(this._menu).hasClass(Lt)) {
3608        var t = { relatedTarget: this._element }, e = g.Event(kt.HIDE, t), n = c._getParentFromElement(this._element);
3609        g(n).trigger(e), e.isDefaultPrevented() || (g(this._menu).toggleClass(Lt), g(n).toggleClass(Lt).trigger(g.Event(kt.HIDDEN, t)))
3610      }
3611    }, t.dispose = function () {
3612      g.removeData(this._element, Dt), g(this._element).off(wt), this._element = null, (this._menu = null) !== this._popper && (this._popper.destroy(), this._popper = null)
3613    }, t.update = function () {
3614      this._inNavbar = this._detectNavbar(), null !== this._popper && this._popper.scheduleUpdate()
3615    }, t._addEventListeners = function () {
3616      var e = this;
3617      g(this._element).on(kt.CLICK, function (t) {
3618        t.preventDefault(), t.stopPropagation(), e.toggle()
3619      })
3620    }, t._getConfig = function (t) {
3621      return t = l({}, this.constructor.Default, g(this._element).data(), t), _.typeCheckConfig(It, t, this.constructor.DefaultType), t
3622    }, t._getMenuElement = function () {
3623      if (!this._menu) {
3624        var t = c._getParentFromElement(this._element);
3625        t && (this._menu = t.querySelector(qt))
3626      }
3627      return this._menu
3628    }, t._getPlacement = function () {
3629      var t = g(this._element.parentNode), e = Vt;
3630      return t.hasClass(jt) ? (e = Qt, g(this._menu).hasClass(xt) && (e = Bt)) : t.hasClass(Ht) ? e = zt : t.hasClass(Rt) ? e = Xt : g(this._menu).hasClass(xt) && (e = Yt), e
3631    }, t._detectNavbar = function () {
3632      return 0 < g(this._element).closest(".navbar").length
3633    }, t._getOffset = function () {
3634      var e = this, t = {};
3635      return "function" == typeof this._config.offset ? t.fn = function (t) {
3636        return t.offsets = l({}, t.offsets, e._config.offset(t.offsets, e._element) || {}), t
3637      } : t.offset = this._config.offset, t
3638    }, t._getPopperConfig = function () {
3639      var t = { placement: this._getPlacement(), modifiers: { offset: this._getOffset(), flip: { enabled: this._config.flip }, preventOverflow: { boundariesElement: this._config.boundary } } };
3640      return "static" === this._config.display && (t.modifiers.applyStyle = { enabled: !1 }), t
3641    }, c._jQueryInterface = function (e) {
3642      return this.each(function () {
3643        var t = g(this).data(Dt);
3644        if (t || (t = new c(this, "object" == typeof e ? e : null), g(this).data(Dt, t)), "string" == typeof e) {
3645          if ("undefined" == typeof t[e])
3646            throw new TypeError('No method named "' + e + '"');
3647          t[e]()
3648        }
3649      })
3650    }, c._clearMenus = function (t) {
3651      if (!t || 3 !== t.which && ("keyup" !== t.type || 9 === t.which))
3652        for (var e = [].slice.call(document.querySelectorAll(Ut)), n = 0, i = e.length; n < i; n++) {
3653          var o = c._getParentFromElement(e[n]), r = g(e[n]).data(Dt), s = { relatedTarget: e[n] };
3654          if (t && "click" === t.type && (s.clickEvent = t), r) {
3655            var a = r._menu;
3656            if (g(o).hasClass(Lt) && !(t && ("click" === t.type && /input|textarea/i.test(t.target.tagName) || "keyup" === t.type && 9 === t.which) && g.contains(o, t.target))) {
3657              var l = g.Event(kt.HIDE, s);
3658              g(o).trigger(l), l.isDefaultPrevented() || ("ontouchstart" in document.documentElement && g(document.body).children().off("mouseover", null, g.noop), e[n].setAttribute("aria-expanded", "false"), g(a).removeClass(Lt), g(o).removeClass(Lt).trigger(g.Event(kt.HIDDEN, s)))
3659            }
3660          }
3661        }
3662    }, c._getParentFromElement = function (t) {
3663      var e, n = _.getSelectorFromElement(t);
3664      return n && (e = document.querySelector(n)), e || t.parentNode
3665    }, c._dataApiKeydownHandler = function (t) {
3666      if ((/input|textarea/i.test(t.target.tagName) ? !(32 === t.which || 27 !== t.which && (40 !== t.which && 38 !== t.which || g(t.target).closest(qt).length)) : Ot.test(t.which)) && (t.preventDefault(), t.stopPropagation(), !this.disabled && !g(this).hasClass(Pt))) {
3667        var e = c._getParentFromElement(this), n = g(e).hasClass(Lt);
3668        if (n && (!n || 27 !== t.which && 32 !== t.which)) {
3669          var i = [].slice.call(e.querySelectorAll(Kt));
3670          if (0 !== i.length) {
3671            var o = i.indexOf(t.target);
3672            38 === t.which && 0 < o && o--, 40 === t.which && o < i.length - 1 && o++, o < 0 && (o = 0), i[o].focus()
3673          }
3674        } else {
3675          if (27 === t.which) {
3676            var r = e.querySelector(Ut);
3677            g(r).trigger("focus")
3678          }
3679          g(this).trigger("click")
3680        }
3681      }
3682    }, s(c, null, [{
3683      key: "VERSION", get: function () {
3684        return "4.3.1"
3685      }
3686    }, {
3687      key: "Default", get: function () {
3688        return $t
3689      }
3690    }, {
3691      key: "DefaultType", get: function () {
3692        return Gt
3693      }
3694    }]), c
3695  }();
3696  g(document).on(kt.KEYDOWN_DATA_API, Ut, Jt._dataApiKeydownHandler).on(kt.KEYDOWN_DATA_API, qt, Jt._dataApiKeydownHandler).on(kt.CLICK_DATA_API + " " + kt.KEYUP_DATA_API, Jt._clearMenus).on(kt.CLICK_DATA_API, Ut, function (t) {
3697    t.preventDefault(), t.stopPropagation(), Jt._jQueryInterface.call(g(this), "toggle")
3698  }).on(kt.CLICK_DATA_API, Wt, function (t) {
3699    t.stopPropagation()
3700  }), g.fn[It] = Jt._jQueryInterface, g.fn[It].Constructor = Jt, g.fn[It].noConflict = function () {
3701    return g.fn[It] = Nt, Jt._jQueryInterface
3702  };
3703  var Zt = "modal", te = "bs.modal", ee = "." + te, ne = g.fn[Zt], ie = { backdrop: !0, keyboard: !0, focus: !0, show: !0 }, oe = { backdrop: "(boolean|string)", keyboard: "boolean", focus: "boolean", show: "boolean" }, re = { HIDE: "hide" + ee, HIDDEN: "hidden" + ee, SHOW: "show" + ee, SHOWN: "shown" + ee, FOCUSIN: "focusin" + ee, RESIZE: "resize" + ee, CLICK_DISMISS: "click.dismiss" + ee, KEYDOWN_DISMISS: "keydown.dismiss" + ee, MOUSEUP_DISMISS: "mouseup.dismiss" + ee, MOUSEDOWN_DISMISS: "mousedown.dismiss" + ee, CLICK_DATA_API: "click" + ee + ".data-api" }
3703, se = "modal-dialog-scrollable", ae = "modal-scrollbar-measure", le = "modal-backdrop", ce = "modal-open", he = "fade", ue = "show", fe = ".modal-dialog", de = ".modal-body", ge = '[data-toggle="modal"]', _e = '[data-dismiss="modal"]', me = ".fixed-top, .fixed-bottom, .is-fixed, .sticky-top", pe = ".sticky-top", ve = function () {
3704    function o(t, e) {
3705      this._config = this._getConfig(e), this._element = t, this._dialog = t.querySelector(fe), this._backdrop = null, this._isShown = !1, this._isBodyOverflowing = !1, this._ignoreBackdropClick = !1, this._isTransitioning = !1, this._scrollbarWidth = 0
3706    }
3707    var t = o.prototype;
3708    return t.toggle = function (t) {
3709      return this._isShown ? this.hide() : this.show(t)
3710    }, t.show = function (t) {
3711      var e = this;
3712      if (!this._isShown && !this._isTransitioning) {
3713        g(this._element).hasClass(he) && (this._isTransitioning = !0);
3714        var n = g.Event(re.SHOW, { relatedTarget: t });
3715        g(this._element).trigger(n), this._isShown || n.isDefaultPrevented() || (this._isShown = !0, this._checkScrollbar(), this._setScrollbar(), this._adjustDialog(), this._setEscapeEvent(), this._setResizeEvent(), g(this._element).on(re.CLICK_DISMISS, _e, function (t) {
3716          return e.hide(t)
3717        }), g(this._dialog).on(re.MOUSEDOWN_DISMISS, function () {
3718          g(e._element).one(re.MOUSEUP_DISMISS, function (t) {
3719            g(t.target).is(e._element) && (e._ignoreBackdropClick = !0)
3720          })
3721        }), this._showBackdrop(function () {
3722          return e._showElement(t)
3723        }))
3724      }
3725    }, t.hide = function (t) {
3726      var e = this;
3727      if (t && t.preventDefault(), this._isShown && !this._isTransitioning) {
3728        var n = g.Event(re.HIDE);
3729        if (g(this._element).trigger(n), this._isShown && !n.isDefaultPrevented()) {
3730          this._isShown = !1;
3731          var i = g(this._element).hasClass(he);
3732          if (i && (this._isTransitioning = !0), this._setEscapeEvent(), this._setResizeEvent(), g(document).off(re.FOCUSIN), g(this._element).removeClass(ue), g(this._element).off(re.CLICK_DISMISS), g(this._dialog).off(re.MOUSEDOWN_DISMISS), i) {
3733            var o = _.getTransitionDurationFromElement(this._element);
3734            g(this._element).one(_.TRANSITION_END, function (t) {
3735              return e._hideModal(t)
3736            }).emulateTransitionEnd(o)
3737          } else
3738            this._hideModal()
3739        }
3740      }
3741    }, t.dispose = function () {
3742      [window, this._element, this._dialog].forEach(function (t) {
3743        return g(t).off(ee)
3744      }), g(document).off(re.FOCUSIN), g.removeData(this._element, te), this._config = null, this._element = null, this._dialog = null, this._backdrop = null, this._isShown = null, this._isBodyOverflowing = null, this._ignoreBackdropClick = null, this._isTransitioning = null, this._scrollbarWidth = null
3745    }, t.handleUpdate = function () {
3746      this._adjustDialog()
3747    }, t._getConfig = function (t) {
3748      return t = l({}, ie, t), _.typeCheckConfig(Zt, t, oe), t
3749    }, t._showElement = function (t) {
3750      var e = this, n = g(this._element).hasClass(he);
3751      this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE || document.body.appendChild(this._element), this._element.style.display = "block", this._element.removeAttribute("aria-hidden"), this._element.setAttribute("aria-modal", !0), g(this._dialog).hasClass(se) ? this._dialog.querySelector(de).scrollTop = 0 : this._element.scrollTop = 0, n && _.reflow(this._element), g(this._element).addClass(ue), this._config.focus && this._enforceFocus();
3752      var i = g.Event(re.SHOWN, { relatedTarget: t }), o = function () {
3753        e._config.focus && e._element.focus(), e._isTransitioning = !1, g(e._element).trigger(i)
3754      };
3755      if (n) {
3756        var r = _.getTransitionDurationFromElement(this._dialog);
3757        g(this._dialog).one(_.TRANSITION_END, o).emulateTransitionEnd(r)
3758      } else
3759        o()
3760    }, t._enforceFocus = function () {
3761      var e = this;
3762      g(document).off(re.FOCUSIN).on(re.FOCUSIN, function (t) {
3763        document !== t.target && e._element !== t.target && 0 === g(e._element).has(t.target).length && e._element.focus()
3764      })
3765    }, t._setEscapeEvent = function () {
3766      var e = this;
3767      this._isShown && this._config.keyboard ? g(this._element).on(re.KEYDOWN_DISMISS, function (t) {
3768        27 === t.which && (t.preventDefault(), e.hide())
3769      }) : this._isShown || g(this._element).off(re.KEYDOWN_DISMISS)
3770    }, t._setResizeEvent = function () {
3771      var e = this;
3772      this._isShown ? g(window).on(re.RESIZE, function (t) {
3773        return e.handleUpdate(t)
3774      }) : g(window).off(re.RESIZE)
3775    }, t._hideModal = function () {
3776      var t = this;
3777      this._element.style.display = "none", this._element.setAttribute("aria-hidden", !0), this._element.removeAttribute("aria-modal"), this._isTransitioning = !1, this._showBackdrop(function () {
3778        g(document.body).removeClass(ce), t._resetAdjustments(), t._resetScrollbar(), g(t._element).trigger(re.HIDDEN)
3779      })
3780    }, t._removeBackdrop = function () {
3781      this._backdrop && (g(this._backdrop).remove(), this._backdrop = null)
3782    }, t._showBackdrop = function (t) {
3783      var e = this, n = g(this._element).hasClass(he) ? he : "";
3784      if (this._isShown && this._config.backdrop) {
3785        if (this._backdrop = document.createElement("div"), this._backdrop.className = le, n && this._backdrop.classList.add(n), g(this._backdrop).appendTo(document.body), g(this._element).on(re.CLICK_DISMISS, function (t) {
3786          e._ignoreBackdropClick ? e._ignoreBackdropClick = !1 : t.target === t.currentTarget && ("static" === e._config.backdrop ? e._element.focus() : e.hide())
3787        }), n && _.reflow(this._backdrop), g(this._backdrop).addClass(ue), !t)
3788          return;
3789        if (!n)
3790          return void t();
3791        var i = _.getTransitionDurationFromElement(this._backdrop);
3792        g(this._backdrop).one(_.TRANSITION_END, t).emulateTransitionEnd(i)
3793      } else if (!this._isShown && this._backdrop) {
3794        g(this._backdrop).removeClass(ue);
3795        var o = function () {
3796          e._removeBackdrop(), t && t()
3797        };
3798        if (g(this._element).hasClass(he)) {
3799          var r = _.getTransitionDurationFromElement(this._backdrop);
3800          g(this._backdrop).one(_.TRANSITION_END, o).emulateTransitionEnd(r)
3801        } else
3802          o()
3803      } else
3804        t && t()
3805    }, t._adjustDialog = function () {
3806      var t = this._element.scrollHeight > document.documentElement.clientHeight;
3807      !this._isBodyOverflowing && t && (this._element.style.paddingLeft = this._scrollbarWidth + "px"), this._isBodyOverflowing && !t && (this._element.style.paddingRight = this._scrollbarWidth + "px")
3808    }, t._resetAdjustments = function () {
3809      this._element.style.paddingLeft = "", this._element.style.paddingRight = ""
3810    }, t._checkScrollbar = function () {
3811      var t = document.body.getBoundingClientRect();
3812      this._isBodyOverflowing = t.left + t.right < window.innerWidth, this._scrollbarWidth = this._getScrollbarWidth()
3813    }, t._setScrollbar = function () {
3814      var o = this;
3815      if (this._isBodyOverflowing) {
3816        var t = [].slice.call(document.querySelectorAll(me)), e = [].slice.call(document.querySelectorAll(pe));
3817        g(t).each(function (t, e) {
3818          var n = e.style.paddingRight, i = g(e).css("padding-right");
3819          g(e).data("padding-right", n).css("padding-right", parseFloat(i) + o._scrollbarWidth + "px")
3820        }), g(e).each(function (t, e) {
3821          var n = e.style.marginRight, i = g(e).css("margin-right");
3822          g(e).data("margin-right", n).css("margin-right", parseFloat(i) - o._scrollbarWidth + "px")
3823        });
3824        var n = document.body.style.paddingRight, i = g(document.body).css("padding-right");
3825        g(document.body).data("padding-right", n).css("padding-right", parseFloat(i) + this._scrollbarWidth + "px")
3826      }
3827      g(document.body).addClass(ce)
3828    }, t._resetScrollbar = function () {
3829      var t = [].slice.call(document.querySelectorAll(me));
3830      g(t).each(function (t, e) {
3831        var n = g(e).data("padding-right");
3832        g(e).removeData("padding-right"), e.style.paddingRight = n || ""
3833      });
3834      var e = [].slice.call(document.querySelectorAll("" + pe));
3835      g(e).each(function (t, e) {
3836        var n = g(e).data("margin-right");
3837        "undefined" != typeof n && g(e).css("margin-right", n).removeData("margin-right")
3838      });
3839      var n = g(document.body).data("padding-right");
3840      g(document.body).removeData("padding-right"), document.body.style.paddingRight = n || ""
3841    }, t._getScrollbarWidth = function () {
3842      var t = document.createElement("div");
3843      t.className = ae, document.body.appendChild(t);
3844      var e = t.getBoundingClientRect().width - t.clientWidth;
3845      return document.body.removeChild(t), e
3846    }, o._jQueryInterface = function (n, i) {
3847      return this.each(function () {
3848        var t = g(this).data(te), e = l({}, ie, g(this).data(), "object" == typeof n && n ? n : {});
3849        if (t || (t = new o(this, e), g(this).data(te, t)), "string" == typeof n) {
3850          if ("undefined" == typeof t[n])
3851            throw new TypeError('No method named "' + n + '"');
3852          t[n](i)
3853        } else
3854          e.show && t.show(i)
3855      })
3856    }, s(o, null, [{
3857      key: "VERSION", get: function () {
3858        return "4.3.1"
3859      }
3860    }, {
3861      key: "Default", get: function () {
3862        return ie
3863      }
3864    }]), o
3865  }();
3866  g(document).on(re.CLICK_DATA_API, ge, function (t) {
3867    var e, n = this, i = _.getSelectorFromElement(this);
3868    i && (e = document.querySelector(i));
3869    var o = g(e).data(te) ? "toggle" : l({}, g(e).data(), g(this).data());
3870    "A" !== this.tagName && "AREA" !== this.tagName || t.preventDefault();
3871    var r = g(e).one(re.SHOW, function (t) {
3872      t.isDefaultPrevented() || r.one(re.HIDDEN, function () {
3873        g(n).is(":visible") && n.focus()
3874      })
3875    });
3876    ve._jQueryInterface.call(g(e), o, this)
3877  }), g.fn[Zt] = ve._jQueryInterface, g.fn[Zt].Constructor = ve, g.fn[Zt].noConflict = function () {
3878    return g.fn[Zt] = ne, ve._jQueryInterface
3879  };
3880  var ye = ["background", "cite", "href", "itemtype", "longdesc", "poster", "src", "xlink:href"], Ee = { "*": ["class", "dir", "id", "lang", "role", /^aria-[\w-]*$/i], a: ["target", "href", "title", "rel"], area: [], b: [], br: [], col: [], code: [], div: [], em: [], hr: [], h1: [], h2: [], h3: [], h4: [], h5: [], h6: [], i: [], img: ["src", "alt", "title", "width", "height"], li: [], ol: [], p: [], pre: [], s: [], small: [], span: [], sub: [], sup: [], strong: [], u: [], ul: [] }, Ce = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi, Te = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i;
3881  function Se(t, s, e) {
3882    if (0 === t.length)
3883      return t;
3884    if (e && "function" == typeof e)
3885      return e(t);
3886    for (var n = (new window.DOMParser).parseFromString(t, "text/html"), a = Object.keys(s), l = [].slice.call(n.body.querySelectorAll("*")), i = function (t, e) {
3887      var n = l[t], i = n.nodeName.toLowerCase();
3888      if (-1 === a.indexOf(n.nodeName.toLowerCase()))
3889        return n.parentNode.removeChild(n), "continue";
3890      var o = [].slice.call(n.attributes), r = [].concat(s["*"] || [], s[i] || []);
3891      o.forEach(function (t) {
3892        (function (t, e) {
3893          var n = t.nodeName.toLowerCase();
3894          if (-1 !== e.indexOf(n))
3895            return -1 === ye.indexOf(n) || Boolean(t.nodeValue.match(Ce) || t.nodeValue.match(Te));
3896          for (var i = e.filter(function (t) {
3897            return t instanceof RegExp
3898          }), o = 0, r = i.length; o < r; o++)
3899            if (n.match(i[o]))
3900              return !0;
3901          return !1
3902        })(t, r) || n.removeAttribute(t.nodeName)
3903      })
3904    }, o = 0, r = l.length; o < r; o++)
3905      i(o);
3906    return n.body.innerHTML
3907  }
3908  var be = "tooltip", Ie = "bs.tooltip", De = "." + Ie, we = g.fn[be], Ae = "bs-tooltip", Ne = new RegExp("(^|\\s)" + Ae + "\\S+", "g"), Oe = ["sanitize", "whiteList", "sanitizeFn"], ke = { animation: "boolean", template: "string", title: "(string|element|function)", trigger: "string", delay: "(number|object)", html: "boolean", selector: "(string|boolean)", placement: "(string|function)", offset: "(number|string|function)", container: "(string|element|boolean)", fallbackPlacement: "(string|array)", boundary: "(string|element)", sanitize: "boolean", sanitizeFn: "(null|function)", whiteList: "object" }, Pe = { AUTO: "auto", TOP: "top", RIGHT: "right", BOTTOM: "bottom", LEFT: "left" }, Le = { animation: !0, template: '<div class="tooltip" role="tooltip"><div class="arrow"></div><div class="tooltip-inner"></div></div>', trigger: "hover focus", title: "", delay: 0, html: !1, selector: !1, placement: "top", offset: 0, container: !1, fallbackPlacement: "flip", boundary: "scrollParent", sanitize: !0, sanitizeFn: null, whiteList: Ee }, je = "show", He = "out", Re = { HIDE: "hide" + De, HIDDEN: "hidden" + De, SHOW: "show" + De, SHOWN: "shown" + De, INSERTED: "inserted" + De, CLICK: "click" + De, FOCUSIN: "focusin" + De, FOCUSOUT: "focusout" + De, MOUSEENTER: "mouseenter" + De, MOUSELEAVE: "mouseleave" + De }, xe = "fade", Fe = "show", Ue = ".tooltip-inner", We = ".arrow", qe = "hover", Me = "focus", Ke = "click", Qe = "manual", Be = function () {
3909    function i(t, e) {
3910      if ("undefined" == typeof u)
3911        throw new TypeError("Bootstrap's tooltips require Popper.js (https://popper.js.org/)");
3912      this._isEnabled = !0, this._timeout = 0, this._hoverState = "", this._activeTrigger = {}, this._popper = null, this.element = t, this.config = this._getConfig(e), this.tip = null, this._setListeners()
3913    }
3914    var t = i.prototype;
3915    return t.enable = function () {
3916      this._isEnabled = !0
3917    }, t.disable = function () {
3918      this._isEnabled = !1
3919    }, t.toggleEnabled = function () {
3920      this._isEnabled = !this._isEnabled
3921    }, t.toggle = function (t) {
3922      if (this._isEnabled)
3923        if (t) {
3924          var e = this.constructor.DATA_KEY, n = g(t.currentTarget).data(e);
3925          n || (n = new this.constructor(t.currentTarget, this._getDelegateConfig()), g(t.currentTarget).data(e, n)), n._activeTrigger.click = !n._activeTrigger.click, n._isWithActiveTrigger() ? n._enter(null, n) : n._leave(null, n)
3926        } else {
3927          if (g(this.getTipElement()).hasClass(Fe))
3928            return void this._leave(null, this);
3929          this._enter(null, this)
3930        }
3931    }
3931, t.dispose = function () {
3932      clearTimeout(this._timeout), g.removeData(this.element, this.constructor.DATA_KEY), g(this.element).off(this.constructor.EVENT_KEY), g(this.element).closest(".modal").off("hide.bs.modal"), this.tip && g(this.tip).remove(), this._isEnabled = null, this._timeout = null, this._hoverState = null, (this._activeTrigger = null) !== this._popper && this._popper.destroy(), this._popper = null, this.element = null, this.config = null, this.tip = null
3933    }, t.show = function () {
3934      var e = this;
3935      if ("none" === g(this.element).css("display"))
3936        throw new Error("Please use show on visible elements");
3937      var t = g.Event(this.constructor.Event.SHOW);
3938      if (this.isWithContent() && this._isEnabled) {
3939        g(this.element).trigger(t);
3940        var n = _.findShadowRoot(this.element), i = g.contains(null !== n ? n : this.element.ownerDocument.documentElement, this.element);
3941        if (t.isDefaultPrevented() || !i)
3942          return;
3943        var o = this.getTipElement(), r = _.getUID(this.constructor.NAME);
3944        o.setAttribute("id", r), this.element.setAttribute("aria-describedby", r), this.setContent(), this.config.animation && g(o).addClass(xe);
3945        var s = "function" == typeof this.config.placement ? this.config.placement.call(this, o, this.element) : this.config.placement, a = this._getAttachment(s);
3946        this.addAttachmentClass(a);
3947        var l = this._getContainer();
3948        g(o).data(this.constructor.DATA_KEY, this), g.contains(this.element.ownerDocument.documentElement, this.tip) || g(o).appendTo(l), g(this.element).trigger(this.constructor.Event.INSERTED), this._popper = new u(this.element, o, {
3949          placement: a, modifiers: { offset: this._getOffset(), flip: { behavior: this.config.fallbackPlacement }, arrow: { element: We }, preventOverflow: { boundariesElement: this.config.boundary } }, onCreate: function (t) {
3950            t.originalPlacement !== t.placement && e._handlePopperPlacementChange(t)
3951          }, onUpdate: function (t) {
3952            return e._handlePopperPlacementChange(t)
3953          }
3954        }), g(o).addClass(Fe), "ontouchstart" in document.documentElement && g(document.body).children().on("mouseover", null, g.noop);
3955        var c = function () {
3956          e.config.animation && e._fixTransition();
3957          var t = e._hoverState;
3958          e._hoverState = null, g(e.element).trigger(e.constructor.Event.SHOWN), t === He && e._leave(null, e)
3959        };
3960        if (g(this.tip).hasClass(xe)) {
3961          var h = _.getTransitionDurationFromElement(this.tip);
3962          g(this.tip).one(_.TRANSITION_END, c).emulateTransitionEnd(h)
3963        } else
3964          c()
3965      }
3966    }, t.hide = function (t) {
3967      var e = this, n = this.getTipElement(), i = g.Event(this.constructor.Event.HIDE), o = function () {
3968        e._hoverState !== je && n.parentNode && n.parentNode.removeChild(n), e._cleanTipClass(), e.element.removeAttribute("aria-describedby"), g(e.element).trigger(e.constructor.Event.HIDDEN), null !== e._popper && e._popper.destroy(), t && t()
3969      };
3970      if (g(this.element).trigger(i), !i.isDefaultPrevented()) {
3971        if (g(n).removeClass(Fe), "ontouchstart" in document.documentElement && g(document.body).children().off("mouseover", null, g.noop), this._activeTrigger[Ke] = !1, this._activeTrigger[Me] = !1, this._activeTrigger[qe] = !1, g(this.tip).hasClass(xe)) {
3972          var r = _.getTransitionDurationFromElement(n);
3973          g(n).one(_.TRANSITION_END, o).emulateTransitionEnd(r)
3974        } else
3975          o();
3976        this._hoverState = ""
3977      }
3978    }, t.update = function () {
3979      null !== this._popper && this._popper.scheduleUpdate()
3980    }, t.isWithContent = function () {
3981      return Boolean(this.getTitle())
3982    }, t.addAttachmentClass = function (t) {
3983      g(this.getTipElement()).addClass(Ae + "-" + t)
3984    }, t.getTipElement = function () {
3985      return this.tip = this.tip || g(this.config.template)[0], this.tip
3986    }, t.setContent = function () {
3987      var t = this.getTipElement();
3988      this.setElementContent(g(t.querySelectorAll(Ue)), this.getTitle()), g(t).removeClass(xe + " " + Fe)
3989    }, t.setElementContent = function (t, e) {
3990      "object" != typeof e || !e.nodeType && !e.jquery ? this.config.html ? (this.config.sanitize && (e = Se(e, this.config.whiteList, this.config.sanitizeFn)), t.html(e)) : t.text(e) : this.config.html ? g(e).parent().is(t) || t.empty().append(e) : t.text(g(e).text())
3991    }, t.getTitle = function () {
3992      var t = this.element.getAttribute("data-original-title");
3993      return t || (t = "function" == typeof this.config.title ? this.config.title.call(this.element) : this.config.title), t
3994    }, t._getOffset = function () {
3995      var e = this, t = {};
3996      return "function" == typeof this.config.offset ? t.fn = function (t) {
3997        return t.offsets = l({}, t.offsets, e.config.offset(t.offsets, e.element) || {}), t
3998      } : t.offset = this.config.offset, t
3999    }, t._getContainer = function () {
4000      return !1 === this.config.container ? document.body : _.isElement(this.config.container) ? g(this.config.container) : g(document).find(this.config.container)
4001    }, t._getAttachment = function (t) {
4002      return Pe[t.toUpperCase()]
4003    }, t._setListeners = function () {
4004      var i = this;
4005      this.config.trigger.split(" ").forEach(function (t) {
4006        if ("click" === t)
4007          g(i.element).on(i.constructor.Event.CLICK, i.config.selector, function (t) {
4008            return i.toggle(t)
4009          });
4010        else if (t !== Qe) {
4011          var e = t === qe ? i.constructor.Event.MOUSEENTER : i.constructor.Event.FOCUSIN, n = t === qe ? i.constructor.Event.MOUSELEAVE : i.constructor.Event.FOCUSOUT;
4012          g(i.element).on(e, i.config.selector, function (t) {
4013            return i._enter(t)
4014          }).on(n, i.config.selector, function (t) {
4015            return i._leave(t)
4016          })
4017        }
4018      }), g(this.element).closest(".modal").on("hide.bs.modal", function () {
4019        i.element && i.hide()
4020      }), this.config.selector ? this.config = l({}, this.config, { trigger: "manual", selector: "" }) : this._fixTitle()
4021    }, t._fixTitle = function () {
4022      var t = typeof this.element.getAttribute("data-original-title");
4023      (this.element.getAttribute("title") || "string" !== t) && (this.element.setAttribute("data-original-title", this.element.getAttribute("title") || ""), this.element.setAttribute("title", ""))
4024    }, t._enter = function (t, e) {
4025      var n = this.constructor.DATA_KEY;
4026      (e = e || g(t.currentTarget).data(n)) || (e = new this.constructor(t.currentTarget, this._getDelegateConfig()), g(t.currentTarget).data(n, e)), t && (e._activeTrigger["focusin" === t.type ? Me : qe] = !0), g(e.getTipElement()).hasClass(Fe) || e._hoverState === je ? e._hoverState = je : (clearTimeout(e._timeout), e._hoverState = je, e.config.delay && e.config.delay.show ? e._timeout = setTimeout(function () {
4027        e._hoverState === je && e.show()
4028      }, e.config.delay.show) : e.show())
4029    }, t._leave = function (t, e) {
4030      var n = this.constructor.DATA_KEY;
4031      (e = e || g(t.currentTarget).data(n)) || (e = new this.constructor(t.currentTarget, this._getDelegateConfig()), g(t.currentTarget).data(n, e)), t && (e._activeTrigger["focusout" === t.type ? Me : qe] = !1), e._isWithActiveTrigger() || (clearTimeout(e._timeout), e._hoverState = He, e.config.delay && e.config.delay.hide ? e._timeout = setTimeout(function () {
4032        e._hoverState === He && e.hide()
4033      }, e.config.delay.hide) : e.hide())
4034    }, t._isWithActiveTrigger = function () {
4035      for (var t in this._activeTrigger)
4036        if (this._activeTrigger[t])
4037          return !0;
4038      return !1
4039    }, t._getConfig = function (t) {
4040      var e = g(this.element).data();
4041      return Object.keys(e).forEach(function (t) {
4042        -1 !== Oe.indexOf(t) && delete e[t]
4043      }), "number" == typeof (t = l({}, this.constructor.Default, e, "object" == typeof t && t ? t : {})).delay && (t.delay = { show: t.delay, hide: t.delay }), "number" == typeof t.title && (t.title = t.title.toString()), "number" == typeof t.content && (t.content = t.content.toString()), _.typeCheckConfig(be, t, this.constructor.DefaultType), t.sanitize && (t.template = Se(t.template, t.whiteList, t.sanitizeFn)), t
4044    }, t._getDelegateConfig = function () {
4045      var t = {};
4046      if (this.config)
4047        for (var e in this.config)
4048          this.constructor.Default[e] !== this.config[e] && (t[e] = this.config[e]);
4049      return t
4050    }, t._cleanTipClass = function () {
4051      var t = g(this.getTipElement()), e = t.attr("class").match(Ne);
4052      null !== e && e.length && t.removeClass(e.join(""))
4053    }, t._handlePopperPlacementChange = function (t) {
4054      var e = t.instance;
4055      this.tip = e.popper, this._cleanTipClass(), this.addAttachmentClass(this._getAttachment(t.placement))
4056    }, t._fixTransition = function () {
4057      var t = this.getTipElement(), e = this.config.animation;
4058      null === t.getAttribute("x-placement") && (g(t).removeClass(xe), this.config.animation = !1, this.hide(), this.show(), this.config.animation = e)
4059    }, i._jQueryInterface = function (n) {
4060      return this.each(function () {
4061        var t = g(this).data(Ie), e = "object" == typeof n && n;
4062        if ((t || !/dispose|hide/.test(n)) && (t || (t = new i(this, e), g(this).data(Ie, t)), "string" == typeof n)) {
4063          if ("undefined" == typeof t[n])
4064            throw new TypeError('No method named "' + n + '"');
4065          t[n]()
4066        }
4067      })
4068    }, s(i, null, [{
4069      key: "VERSION", get: function () {
4070        return "4.3.1"
4071      }
4072    }, {
4073      key: "Default", get: function () {
4074        return Le
4075      }
4076    }, {
4077      key: "NAME", get: function () {
4078        return be
4079      }
4080    }, {
4081      key: "DATA_KEY", get: function () {
4082        return Ie
4083      }
4084    }, {
4085      key: "Event", get: function () {
4086        return Re
4087      }
4088    }, {
4089      key: "EVENT_KEY", get: function () {
4090        return De
4091      }
4092    }, {
4093      key: "DefaultType", get: function () {
4094        return ke
4095      }
4096    }]), i
4097  }();
4098  g.fn[be] = Be._jQueryInterface, g.fn[be].Constructor = Be, g.fn[be].noConflict = function () {
4099    return g.fn[be] = we, Be._jQueryInterface
4100  };
4101  var Ve = "popover", Ye = "bs.popover", ze = "." + Ye, Xe = g.fn[Ve], $e = "bs-popover", Ge = new RegExp("(^|\\s)" + $e + "\\S+", "g"), Je = l({}, Be.Default, { placement: "right", trigger: "click", content: "", template: '<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>' }), Ze = l({}, Be.DefaultType, { content: "(string|element|function)" }), tn = "fade", en = "show", nn = ".popover-header", on = ".popover-body", rn = { HIDE: "hide" + ze, HIDDEN: "hidden" + ze, SHOW: "show" + ze, SHOWN: "shown" + ze, INSERTED: "inserted" + ze, CLICK: "click" + ze, FOCUSIN: "focusin" + ze, FOCUSOUT: "focusout" + ze, MOUSEENTER: "mouseenter" + ze, MOUSELEAVE: "mouseleave" + ze }, sn = function (t) {
4102    var e, n;
4103    function i() {
4104      return t.apply(this, arguments) || this
4105    }
4106    n = t, (e = i).prototype = Object.create(n.prototype), (e.prototype.constructor = e).__proto__ = n;
4107    var o = i.prototype;
4108    return o.isWithContent = function () {
4109      return this.getTitle() || this._getContent()
4110    }, o.addAttachmentClass = function (t) {
4111      g(this.getTipElement()).addClass($e + "-" + t)
4112    }, o.getTipElement = function () {
4113      return this.tip = this.tip || g(this.config.template)[0], this.tip
4114    }, o.setContent = function () {
4115      var t = g(this.getTipElement());
4116      this.setElementContent(t.find(nn), this.getTitle());
4117      var e = this._getContent();
4118      "function" == typeof e && (e = e.call(this.element)), this.setElementContent(t.find(on), e), t.removeClass(tn + " " + en)
4119    }, o._getContent = function () {
4120      return this.element.getAttribute("data-content") || this.config.content
4121    }, o._cleanTipClass = function () {
4122      var t = g(this.getTipElement()), e = t.attr("class").match(Ge);
4123      null !== e && 0 < e.length && t.removeClass(e.join(""))
4124    }, i._jQueryInterface = function (n) {
4125      return this.each(function () {
4126        var t = g(this).data(Ye), e = "object" == typeof n ? n : null;
4127        if ((t || !/dispose|hide/.test(n)) && (t || (t = new i(this, e), g(this).data(Ye, t)), "string" == typeof n)) {
4128          if ("undefined" == typeof t[n])
4129            throw new TypeError('No method named "' + n + '"');
4130          t[n]()
4131        }
4132      })
4133    }, s(i, null, [{
4134      key: "VERSION", get: function () {
4135        return "4.3.1"
4136      }
4137    }, {
4138      key: "Default", get: function () {
4139        return Je
4140      }
4141    }, {
4142      key: "NAME", get: function () {
4143        return Ve
4144      }
4145    }, {
4146      key: "DATA_KEY", get: function () {
4147        return Ye
4148      }
4149    }, {
4150      key: "Event", get: function () {
4151        return rn
4152      }
4153    }, {
4154      key: "EVENT_KEY", get: function () {
4155        return ze
4156      }
4157    }, {
4158      key: "DefaultType", get: function () {
4159        return Ze
4160      }
4161    }]), i
4162  }(Be);
4163  g.fn[Ve] = sn._jQueryInterface, g.fn[Ve].Constructor = sn, g.fn[Ve].noConflict = function () {
4164    return g.fn[Ve] = Xe, sn._jQueryInterface
4165  };
4166  var an = "scrollspy", ln = "bs.scrollspy", cn = "." + ln, hn = g.fn[an], un = { offset: 10, method: "auto", target: "" }, fn = { offset: "number", method: "string", target: "(string|element)" }, dn = { ACTIVATE: "activate" + cn, SCROLL: "scroll" + cn, LOAD_DATA_API: "load" + cn + ".data-api" }, gn = "dropdown-item", _n = "active", mn = '[data-spy="scroll"]', pn = ".nav, .list-group", vn = ".nav-link", yn = ".nav-item", En = ".list-group-item", Cn = ".dropdown", Tn = ".dropdown-item", Sn = ".dropdown-toggle", bn = "offset", In = "position", Dn = function () {
4167    function n(t, e) {
4168      var n = this;
4169      this._element = t, this._scrollElement = "BODY" === t.tagName ? window : t, this._config = this._getConfig(e), this._selector = this._config.target + " " + vn + "," + this._config.target + " " + En + "," + this._config.target + " " + Tn, this._offsets = [], this._targets = [], this._activeTarget = null, this._scrollHeight = 0, g(this._scrollElement).on(dn.SCROLL, function (t) {
4170        return n._process(t)
4171      }), this.refresh(), this._process()
4172    }
4173    var t = n.prototype;
4174    return t.refresh = function () {
4175      var e = this, t = this._scrollElement === this._scrollElement.window ? bn : In, o = "auto" === this._config.method ? t : this._config.method, r = o === In ? this._getScrollTop() : 0;
4176      this._offsets = [], this._targets = [], this._scrollHeight = this._getScrollHeight(), [].slice.call(document.querySelectorAll(this._selector)).map(function (t) {
4177        var e, n = _.getSelectorFromElement(t);
4178        if (n && (e = document.querySelector(n)), e) {
4179          var i = e.getBoundingClientRect();
4180          if (i.width || i.height)
4181            return [g(e)[o]().top + r, n]
4182        }
4183        return null
4184      }).filter(function (t) {
4185        return t
4186      }).sort(function (t, e) {
4187        return t[0] - e[0]
4188      }
4188).forEach(function (t) {
4189        e._offsets.push(t[0]), e._targets.push(t[1])
4190      })
4191    }, t.dispose = function () {
4192      g.removeData(this._element, ln), g(this._scrollElement).off(cn), this._element = null, this._scrollElement = null, this._config = null, this._selector = null, this._offsets = null, this._targets = null, this._activeTarget = null, this._scrollHeight = null
4193    }, t._getConfig = function (t) {
4194      if ("string" != typeof (t = l({}, un, "object" == typeof t && t ? t : {})).target) {
4195        var e = g(t.target).attr("id");
4196        e || (e = _.getUID(an), g(t.target).attr("id", e)), t.target = "#" + e
4197      }
4198      return _.typeCheckConfig(an, t, fn), t
4199    }, t._getScrollTop = function () {
4200      return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop
4201    }, t._getScrollHeight = function () {
4202      return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight)
4203    }, t._getOffsetHeight = function () {
4204      return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height
4205    }, t._process = function () {
4206      var t = this._getScrollTop() + this._config.offset, e = this._getScrollHeight(), n = this._config.offset + e - this._getOffsetHeight();
4207      if (this._scrollHeight !== e && this.refresh(), n <= t) {
4208        var i = this._targets[this._targets.length - 1];
4209        this._activeTarget !== i && this._activate(i)
4210      } else {
4211        if (this._activeTarget && t < this._offsets[0] && 0 < this._offsets[0])
4212          return this._activeTarget = null, void this._clear();
4213        for (var o = this._offsets.length; o--;) {
4214          this._activeTarget !== this._targets[o] && t >= this._offsets[o] && ("undefined" == typeof this._offsets[o + 1] || t < this._offsets[o + 1]) && this._activate(this._targets[o])
4215        }
4216      }
4217    }, t._activate = function (e) {
4218      this._activeTarget = e, this._clear();
4219      var t = this._selector.split(",").map(function (t) {
4220        return t + '[data-target="' + e + '"],' + t + '[href="' + e + '"]'
4221      }), n = g([].slice.call(document.querySelectorAll(t.join(","))));
4222      n.hasClass(gn) ? (n.closest(Cn).find(Sn).addClass(_n), n.addClass(_n)) : (n.addClass(_n), n.parents(pn).prev(vn + ", " + En).addClass(_n), n.parents(pn).prev(yn).children(vn).addClass(_n)), g(this._scrollElement).trigger(dn.ACTIVATE, { relatedTarget: e })
4223    }, t._clear = function () {
4224      [].slice.call(document.querySelectorAll(this._selector)).filter(function (t) {
4225        return t.classList.contains(_n)
4226      }
4226).forEach(function (t) {
4227        return t.classList.remove(_n)
4228      })
4229    }, n._jQueryInterface = function (e) {
4230      return this.each(function () {
4231        var t = g(this).data(ln);
4232        if (t || (t = new n(this, "object" == typeof e && e), g(this).data(ln, t)), "string" == typeof e) {
4233          if ("undefined" == typeof t[e])
4234            throw new TypeError('No method named "' + e + '"');
4235          t[e]()
4236        }
4237      })
4238    }, s(n, null, [{
4239      key: "VERSION", get: function () {
4240        return "4.3.1"
4241      }
4242    }, {
4243      key: "Default", get: function () {
4244        return un
4245      }
4246    }]), n
4247  }();
4248  g(window).on(dn.LOAD_DATA_API, function () {
4249    for (var t = [].slice.call(document.querySelectorAll(mn)), e = t.length; e--;) {
4250      var n = g(t[e]);
4251      Dn._jQueryInterface.call(n, n.data())
4252    }
4253  }), g.fn[an] = Dn._jQueryInterface, g.fn[an].Constructor = Dn, g.fn[an].noConflict = function () {
4254    return g.fn[an] = hn, Dn._jQueryInterface
4255  };
4256  var wn = "bs.tab", An = "." + wn, Nn = g.fn.tab, On = { HIDE: "hide" + An, HIDDEN: "hidden" + An, SHOW: "show" + An, SHOWN: "shown" + An, CLICK_DATA_API: "click" + An + ".data-api" }, kn = "dropdown-menu", Pn = "active", Ln = "disabled", jn = "fade", Hn = "show", Rn = ".dropdown", xn = ".nav, .list-group", Fn = ".active", Un = "> li > .active", Wn = '[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]', qn = ".dropdown-toggle", Mn = "> .dropdown-menu .active", Kn = function () {
4257    function i(t) {
4258      this._element = t
4259    }
4260    var t = i.prototype;
4261    return t.show = function () {
4262      var n = this;
4263      if (!(this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && g(this._element).hasClass(Pn) || g(this._element).hasClass(Ln))) {
4264        var t, i, e = g(this._element).closest(xn)[0], o = _.getSelectorFromElement(this._element);
4265        if (e) {
4266          var r = "UL" === e.nodeName || "OL" === e.nodeName ? Un : Fn;
4267          i = (i = g.makeArray(g(e).find(r)))[i.length - 1]
4268        }
4269        var s = g.Event(On.HIDE, { relatedTarget: this._element }), a = g.Event(On.SHOW, { relatedTarget: i });
4270        if (i && g(i).trigger(s), g(this._element).trigger(a), !a.isDefaultPrevented() && !s.isDefaultPrevented()) {
4271          o && (t = document.querySelector(o)), this._activate(this._element, e);
4272          var l = function () {
4273            var t = g.Event(On.HIDDEN, { relatedTarget: n._element }), e = g.Event(On.SHOWN, { relatedTarget: i });
4274            g(i).trigger(t), g(n._element).trigger(e)
4275          };
4276          t ? this._activate(t, t.parentNode, l) : l()
4277        }
4278      }
4279    }, t.dispose = function () {
4280      g.removeData(this._element, wn), this._element = null
4281    }, t._activate = function (t, e, n) {
4282      var i = this, o = (!e || "UL" !== e.nodeName && "OL" !== e.nodeName ? g(e).children(Fn) : g(e).find(Un))[0], r = n && o && g(o).hasClass(jn), s = function () {
4283        return i._transitionComplete(t, o, n)
4284      };
4285      if (o && r) {
4286        var a = _.getTransitionDurationFromElement(o);
4287        g(o).removeClass(Hn).one(_.TRANSITION_END, s).emulateTransitionEnd(a)
4288      } else
4289        s()
4290    }, t._transitionComplete = function (t, e, n) {
4291      if (e) {
4292        g(e).removeClass(Pn);
4293        var i = g(e.parentNode).find(Mn)[0];
4294        i && g(i).removeClass(Pn), "tab" === e.getAttribute("role") && e.setAttribute("aria-selected", !1)
4295      }
4296      if (g(t).addClass(Pn), "tab" === t.getAttribute("role") && t.setAttribute("aria-selected", !0), _.reflow(t), t.classList.contains(jn) && t.classList.add(Hn), t.parentNode && g(t.parentNode).hasClass(kn)) {
4297        var o = g(t).closest(Rn)[0];
4298        if (o) {
4299          var r = [].slice.call(o.querySelectorAll(qn));
4300          g(r).addClass(Pn)
4301        }
4302        t.setAttribute("aria-expanded", !0)
4303      }
4304      n && n()
4305    }, i._jQueryInterface = function (n) {
4306      return this.each(function () {
4307        var t = g(this), e = t.data(wn);
4308        if (e || (e = new i(this), t.data(wn, e)), "string" == typeof n) {
4309          if ("undefined" == typeof e[n])
4310            throw new TypeError('No method named "' + n + '"');
4311          e[n]()
4312        }
4313      })
4314    }, s(i, null, [{
4315      key: "VERSION", get: function () {
4316        return "4.3.1"
4317      }
4318    }]), i
4319  }();
4320  g(document).on(On.CLICK_DATA_API, Wn, function (t) {
4321    t.preventDefault(), Kn._jQueryInterface.call(g(this), "show")
4322  }), g.fn.tab = Kn._jQueryInterface, g.fn.tab.Constructor = Kn, g.fn.tab.noConflict = function () {
4323    return g.fn.tab = Nn, Kn._jQueryInterface
4324  };
4325  var Qn = "toast", Bn = "bs.toast", Vn = "." + Bn, Yn = g.fn[Qn], zn = { CLICK_DISMISS: "click.dismiss" + Vn, HIDE: "hide" + Vn, HIDDEN: "hidden" + Vn, SHOW: "show" + Vn, SHOWN: "shown" + Vn }, Xn = "fade", $n = "hide", Gn = "show", Jn = "showing", Zn = { animation: "boolean", autohide: "boolean", delay: "number" }, ti = { animation: !0, autohide: !0, delay: 500 }, ei = '[data-dismiss="toast"]', ni = function () {
4326    function i(t, e) {
4327      this._element = t, this._config = this._getConfig(e), this._timeout = null, this._setListeners()
4328    }
4329    var t = i.prototype;
4330    return t.show = function () {
4331      var t = this;
4332      g(this._element).trigger(zn.SHOW), this._config.animation && this._element.classList.add(Xn);
4333      var e = function () {
4334        t._element.classList.remove(Jn), t._element.classList.add(Gn), g(t._element).trigger(zn.SHOWN), t._config.autohide && t.hide()
4335      };
4336      if (this._element.classList.remove($n), this._element.classList.add(Jn), this._config.animation) {
4337        var n = _.getTransitionDurationFromElement(this._element);
4338        g(this._element).one(_.TRANSITION_END, e).emulateTransitionEnd(n)
4339      } else
4340        e()
4341    }, t.hide = function (t) {
4342      var e = this;
4343      this._element.classList.contains(Gn) && (g(this._element).trigger(zn.HIDE), t ? this._close() : this._timeout = setTimeout(function () {
4344        e._close()
4345      }, this._config.delay))
4346    }, t.dispose = function () {
4347      clearTimeout(this._timeout), this._timeout = null, this._element.classList.contains(Gn) && this._element.classList.remove(Gn), g(this._element).off(zn.CLICK_DISMISS), g.removeData(this._element, Bn), this._element = null, this._config = null
4348    }, t._getConfig = function (t) {
4349      return t = l({}, ti, g(this._element).data(), "object" == typeof t && t ? t : {}), _.typeCheckConfig(Qn, t, this.constructor.DefaultType), t
4350    }, t._setListeners = function () {
4351      var t = this;
4352      g(this._element).on(zn.CLICK_DISMISS, ei, function () {
4353        return t.hide(!0)
4354      })
4355    }, t._close = function () {
4356      var t = this, e = function () {
4357        t._element.classList.add($n), g(t._element).trigger(zn.HIDDEN)
4358      };
4359      if (this._element.classList.remove(Gn), this._config.animation) {
4360        var n = _.getTransitionDurationFromElement(this._element);
4361        g(this._element).one(_.TRANSITION_END, e).emulateTransitionEnd(n)
4362      } else
4363        e()
4364    }, i._jQueryInterface = function (n) {
4365      return this.each(function () {
4366        var t = g(this), e = t.data(Bn);
4367        if (e || (e = new i(this, "object" == typeof n && n), t.data(Bn, e)), "string" == typeof n) {
4368          if ("undefined" == typeof e[n])
4369            throw new TypeError('No method named "' + n + '"');
4370          e[n](this)
4371        }
4372      })
4373    }, s(i, null, [{
4374      key: "VERSION", get: function () {
4375        return "4.3.1"
4376      }
4377    }, {
4378      key: "DefaultType", get: function () {
4379        return Zn
4380      }
4381    }, {
4382      key: "Default", get: function () {
4383        return ti
4384      }
4385    }]), i
4386  }();
4387  g.fn[Qn] = ni._jQueryInterface, g.fn[Qn].Constructor = ni, g.fn[Qn].noConflict = function () {
4388    return g.fn[Qn] = Yn, ni._jQueryInterface
4389  }, function () {
4390    if ("undefined" == typeof g)
4391      throw new TypeError("Bootstrap's JavaScript requires jQuery. jQuery must be included before Bootstrap's JavaScript.");
4392    var t = g.fn.jquery.split(" ")[0].split(".");
4393    if (t[0] < 2 && t[1] < 9 || 1 === t[0] && 9 === t[1] && t[2] < 1 || 4 <= t[0])
4394      throw new Error("Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0")
4395  }(), t.Util = _, t.Alert = p, t.Button = P, t.Carousel = lt, t.Collapse = bt, t.Dropdown = Jt, t.Modal = ve, t.Popover = sn, t.Scrollspy = Dn, t.Tab = Kn, t.Toast = ni, t.Tooltip = Be, Object.defineProperty(t, "__esModule", { value: !0 })
4396});
4397//# sourceMappingURL=bootstrap.min.js.map
4398/*!
4399 * Notify js
4400 */
4401!function (t) {
4402  "function" == typeof define && define.amd ? define(["jquery"], t) : t("object" == typeof exports ? require("jquery") : jQuery)
4403}(function (t) {
4404  function s(s) {
4405    var e = !1;
4406    return t('[data-notify="container"]').each(function (i, n) {
4407      var a = t(n), o = a.find('[data-notify="title"]').text().trim(), r = a.find('[data-notify="message"]').html().trim(), l = o === t("<div>" + s.settings.content.title + "</div>").html().trim(), d = r === t("<div>" + s.settings.content.message + "</div>").html().trim(), g = a.hasClass("alert-" + s.settings.type);
4408      return l && d && g && (e = !0), !e
4409    }), e
4410  }
4411  function e(e, n, a) {
4412    var o = { content: { message: "object" == typeof n ? n.message : n, title: n.title ? n.title : "", icon: n.icon ? n.icon : "", url: n.url ? n.url : "#", target: n.target ? n.target : "-" } };
4413    a = t.extend(!0, {}, o, a), this.settings = t.extend(!0, {}, i, a), this._defaults = i, "-" === this.settings.content.target && (this.settings.content.target = this.settings.url_target), this.animations = { start: "webkitAnimationStart oanimationstart MSAnimationStart animationstart", end: "webkitAnimationEnd oanimationend MSAnimationEnd animationend" }, "number" == typeof this.settings.offset && (this.settings.offset = { x: this.settings.offset, y: this.settings.offset }), (this.settings.allow_duplicates || !this.settings.allow_duplicates && !s(this)) && this.init()
4414  }
4415  var i = { element: "body", position: null, type: "info", allow_dismiss: !0, allow_duplicates: !0, newest_on_top: !1, showProgressbar: !1, placement: { from: "top", align: "right" }, offset: 20, spacing: 10, z_index: 1031, delay: 5e3, timer: 1e3, url_target: "_blank", mouse_over: null, animate: { enter: "animated fadeInDown", exit: "animated fadeOutUp" }, onShow: null, onShown: null, onClose: null, onClosed: null, icon_type: "class", template: '<div data-notify="container" class="col-xs-11 col-sm-4 alert alert-{0}" role="alert"><button type="button" aria-hidden="true" class="close" data-notify="dismiss">&times;</button><span data-notify="icon"></span> <span data-notify="title">{1}</span> <span data-notify="message">{2}</span><div class="progress" data-notify="progressbar"><div class="progress-bar progress-bar-{0}" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width: 0%;"></div></div><a href="{3}" target="{4}" data-notify="url"></a></div>' };
4416  String.format = function () {
4417    for (var t = arguments[0], s = 1; s < arguments.length; s++)
4418      t = t.replace(RegExp("\\{" + (s - 1) + "\\}", "gm"), arguments[s]);
4419    return t
4420  }, t.extend(e.prototype, {
4421    init: function () {
4422      var t = this;
4423      this.buildNotify(), this.settings.content.icon && this.setIcon(), "#" != this.settings.content.url && this.styleURL(), this.styleDismiss(), this.placement(), this.bind(), this.notify = {
4424        $ele: this.$ele, update: function (s, e) {
4425          var i = {};
4426          "string" == typeof s ? i[s] = e : i = s;
4427          for (var n in i)
4428            switch (n) {
4429              case "type":
4430                this.$ele.removeClass("alert-" + t.settings.type), this.$ele.find('[data-notify="progressbar"] > .progress-bar').removeClass("progress-bar-" + t.settings.type), t.settings.type = i[n], this.$ele.addClass("alert-" + i[n]).find('[data-notify="progressbar"] > .progress-bar').addClass("progress-bar-" + i[n]);
4431                break;
4432              case "icon":
4433                var a = this.$ele.find('[data-notify="icon"]');
4434                "class" === t.settings.icon_type.toLowerCase() ? a.removeClass(t.settings.content.icon).addClass(i[n]) : (a.is("img") || a.find("img"), a.attr("src", i[n]));
4435                break;
4436              case "progress":
4437                var o = t.settings.delay - t.settings.delay * (i[n] / 100);
4438                this.$ele.data("notify-delay", o), this.$ele.find('[data-notify="progressbar"] > div').attr("aria-valuenow", i[n]).css("width", i[n] + "%");
4439                break;
4440              case "url":
4441                this.$ele.find('[data-notify="url"]').attr("href", i[n]);
4442                break;
4443              case "target":
4444                this.$ele.find('[data-notify="url"]').attr("target", i[n]);
4445                break;
4446              default:
4447                this.$ele.find('[data-notify="' + n + '"]').html(i[n])
4448            }
4449          var r = this.$ele.outerHeight() + parseInt(t.settings.spacing) + parseInt(t.settings.offset.y);
4450          t.reposition(r)
4451        }, close: function () {
4452          t.close()
4453        }
4454      }
4455    }, buildNotify: function () {
4456      var s = this.settings.content;
4457      this.$ele = t(String.format(this.settings.template, this.settings.type, s.title, s.message, s.url, s.target)), this.$ele.attr("data-notify-position", this.settings.placement.from + "-" + this.settings.placement.align), this.settings.allow_dismiss || this.$ele.find('[data-notify="dismiss"]').css("display", "none"), (this.settings.delay <= 0 && !this.settings.showProgressbar || !this.settings.showProgressbar) && this.$ele.find('[data-notify="progressbar"]').remove()
4458    }, setIcon: function () {
4459      "class" === this.settings.icon_type.toLowerCase() ? this.$ele.find('[data-notify="icon"]').addClass(this.settings.content.icon) : this.$ele.find('[data-notify="icon"]').is("img") ? this.$ele.find('[data-notify="icon"]').attr("src", this.settings.content.icon) : this.$ele.find('[data-notify="icon"]').append('<img src="' + this.settings.content.icon + '" alt="Notify Icon" />')
4460    }, styleDismiss: function () {
4461      this.$ele.find('[data-notify="dismiss"]').css({ position: "absolute", right: "10px", top: "5px", zIndex: this.settings.z_index + 2 })
4462    }, styleURL: function () {
4463      this.$ele.find('[data-notify="url"]').css({ backgroundImage: "url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)", height: "100%", left: 0, position: "absolute", top: 0, width: "100%", zIndex: this.settings.z_index + 1 })
4464    }, placement: function () {
4465      var s = this, e = this.settings.offset.y, i = { display: "inline-block", margin: "0px auto", position: this.settings.position ? this.settings.position : "body" === this.settings.element ? "fixed" : "absolute", transition: "all .5s ease-in-out", zIndex: this.settings.z_index }, n = !1, a = this.settings;
4466      switch (t('[data-notify-position="' + this.settings.placement.from + "-" + this.settings.placement.align + '"]:not([data-closing="true"])').each(function () {
4467        e = Math.max(e, parseInt(t(this).css(a.placement.from)) + parseInt(t(this).outerHeight()) + parseInt(a.spacing))
4468      }), this.settings.newest_on_top === !0 && (e = this.settings.offset.y), i[this.settings.placement.from] = e + "px", this.settings.placement.align) {
4469        case "left":
4470        case "right":
4471          i[this.settings.placement.align] = this.settings.offset.x + "px";
4472          break;
4473        case "center":
4474          i.left = 0, i.right = 0
4475      }
4476      this.$ele.css(i).addClass(this.settings.animate.enter), t.each(Array("webkit-", "moz-", "o-", "ms-", ""), function (t, e) {
4477        s.$ele[0].style[e + "AnimationIterationCount"] = 1
4478      }), t(this.settings.element).append(this.$ele), this.settings.newest_on_top === !0 && (e = parseInt(e) + parseInt(this.settings.spacing) + this.$ele.outerHeight(), this.reposition(e)), t.isFunction(s.settings.onShow) && s.settings.onShow.call(this.$ele), this.$ele.one(this.animations.start, function () {
4479        n = !0
4480      }).one(this.animations.end, function () {
4481        s.$ele.removeClass(s.settings.animate.enter), t.isFunction(s.settings.onShown) && s.settings.onShown.call(this)
4482      }), setTimeout(function () {
4483        n || t.isFunction(s.settings.onShown) && s.settings.onShown.call(this)
4484      }, 600)
4485    }, bind: function () {
4486      var s = this;
4487      if (this.$ele.find('[data-notify="dismiss"]').on("click", function () {
4488        s.close()
4489      }), this.$ele.mouseover(function () {
4490        t(this).data("data-hover", "true")
4491      }).mouseout(function () {
4492        t(this).data("data-hover", "false")
4493      }), this.$ele.data("data-hover", "false"), this.settings.delay > 0) {
4494        s.$ele.data("notify-delay", s.settings.delay);
4495        var e = setInterval(function () {
4496          var t = parseInt(s.$ele.data("notify-delay")) - s.settings.timer;
4497          if ("false" === s.$ele.data("data-hover") && "pause" === s.settings.mouse_over || "pause" != s.settings.mouse_over) {
4498            var i = (s.settings.delay - t) / s.settings.delay * 100;
4499            s.$ele.data("notify-delay", t), s.$ele.find('[data-notify="progressbar"] > div').attr("aria-valuenow", i).css("width", i + "%")
4500          }
4501          t <= -s.settings.timer && (clearInterval(e), s.close())
4502        }, s.settings.timer)
4503      }
4504    }, close: function () {
4505      var s = this, e = parseInt(this.$ele.css(this.settings.placement.from)), i = !1;
4506      this.$ele.attr("data-closing", "true").addClass(this.settings.animate.exit), s.reposition(e), t.isFunction(s.settings.onClose) && s.settings.onClose.call(this.$ele), this.$ele.one(this.animations.start, function () {
4507        i = !0
4508      }).one(this.animations.end, function () {
4509        t(this).remove(), t.isFunction(s.settings.onClosed) && s.settings.onClosed.call(this)
4510      }), setTimeout(function () {
4511        i || (s.$ele.remove(), s.settings.onClosed && s.settings.onClosed(s.$ele))
4512      }, 600)
4513    }, reposition: function (s) {
4514      var e = this, i = '[data-notify-position="' + this.settings.placement.from + "-" + this.settings.placement.align + '"]:not([data-closing="true"])', n = this.$ele.nextAll(i);
4515      this.settings.newest_on_top === !0 && (n = this.$ele.prevAll(i)), n.each(function () {
4516        t(this).css(e.settings.placement.from, s), s = parseInt(s) + parseInt(e.settings.spacing) + t(this).outerHeight()
4517      })
4518    }
4519  }), t.notify = function (t, s) {
4520    var i = new e(this, t, s);
4521    return i.notify
4522  }, t.notifyDefaults = function (s) {
4523    return i = t.extend(!0, {}, i, s)
4524  }, t.notifyClose = function (s) {
4525    "warning" === s && (s = "danger"), "undefined" == typeof s || "all" === s ? t("[data-notify]").find('[data-notify="dismiss"]').trigger("click") : "success" === s || "info" === s || "warning" === s || "danger" === s ? t(".alert-" + s + "[data-notify]").find('[data-notify="dismiss"]').trigger("click") : s ? t(s + "[data-notify]").find('[data-notify="dismiss"]').trigger("click") : t('[data-notify-position="' + s + '"]').find('[data-notify="dismiss"]').trigger("click")
4526  }, t.notifyCloseExcept = function (s) {
4527    "warning" === s && (s = "danger"), "success" === s || "info" === s || "warning" === s || "danger" === s ? t("[data-notify]").not(".alert-" + s).find('[data-notify="dismiss"]').trigger("click") : t("[data-notify]").not(s).find('[data-notify="dismiss"]').trigger("click")
4528  }
4529});
4530
4531/*!
4532 * jQuery Validation Plugin v1.14.0
4533 *
4534 * http://jqueryvalidation.org/
4535 *
4536 * Copyright (c) 2015 Jörn Zaefferer
4537 * Released under the MIT license
4538 */
4539(function (factory) {
4540  if (typeof define === "function" && define.amd) {
4541    define(["jquery"], factory);
4542  } else {
4543    factory(jQuery);
4544  }
4545}(function ($) {
4546
4547  $.extend($.fn, {
4548    // http://jqueryvalidation.org/validate/
4549    validate: function (options) {
4550
4551      // if nothing is selected, return nothing; can't chain anyway
4552      if (!this.length) {
4553        if (options && options.debug && window.console) {
4554          console.warn("Nothing selected, can't validate, returning nothing.");
4555        }
4556        return;
4557      }
4558
4559      // check if a validator for this form was already created
4560      var validator = $.data(this[0], "validator");
4561      if (validator) {
4562        return validator;
4563      }
4564
4565      // Add novalidate tag if HTML5.
4566      this.attr("novalidate", "novalidate");
4567
4568      validator = new $.validator(options, this[0]);
4569      $.data(this[0], "validator", validator);
4570
4571      if (validator.settings.onsubmit) {
4572
4573        this.on("click.validate", ":submit", function (event) {
4574          if (validator.settings.submitHandler) {
4575            validator.submitButton = event.target;
4576          }
4577
4578          // allow suppressing validation by adding a cancel class to the submit button
4579          if ($(this).hasClass("cancel")) {
4580            validator.cancelSubmit = true;
4581          }
4582
4583          // allow suppressing validation by adding the html5 formnovalidate attribute to the submit button
4584          if ($(this).attr("formnovalidate") !== undefined) {
4585            validator.cancelSubmit = true;
4586          }
4587        });
4588
4589        // validate the form on submit
4590        this.on("submit.validate", function (event) {
4591          if (validator.settings.debug) {
4592            // prevent form submit to be able to see console output
4593            event.preventDefault();
4594          }
4595
4596          function handle() {
4597            var hidden, result;
4598            if (validator.settings.submitHandler) {
4599              if (validator.submitButton) {
4600                // insert a hidden input as a replacement for the missing submit button
4601                hidden = $("<input type='hidden'/>")
4602                  .attr("name", validator.submitButton.name)
4603                  .val($(validator.submitButton).val())
4604                  .appendTo(validator.currentForm);
4605              }
4606              result = validator.settings.submitHandler.call(validator, validator.currentForm, event);
4607              if (validator.submitButton) {
4608                // and clean up afterwards; thanks to no-block-scope, hidden can be referenced
4609                hidden.remove();
4610              }
4611              if (result !== undefined) {
4612                return result;
4613              }
4614              return false;
4615            }
4616            return true;
4617          }
4618
4619          // prevent submit for invalid forms or custom submit handlers
4620          if (validator.cancelSubmit) {
4621            validator.cancelSubmit = false;
4622            return handle();
4623          }
4624          if (validator.form()) {
4625            if (validator.pendingRequest) {
4626              validator.formSubmitted = true;
4627              return false;
4628            }
4629            return handle();
4630          } else {
4631            validator.focusInvalid();
4632            return false;
4633          }
4634        });
4635      }
4636
4637      return validator;
4638    },
4639    // http://jqueryvalidation.org/valid/
4640    valid: function () {
4641      var valid, validator, errorList;
4642
4643      if ($(this[0]).is("form")) {
4644        valid = this.validate().form();
4645      } else {
4646        errorList = [];
4647        valid = true;
4648        validator = $(this[0].form).validate();
4649        this.each(function () {
4650          valid = validator.element(this) && valid;
4651          errorList = errorList.concat(validator.errorList);
4652        });
4653        validator.errorList = errorList;
4654      }
4655      return valid;
4656    },
4657    // http://jqueryvalidation.org/rules/
4658    rules: function (command, argument) {
4659      var element = this[0],
4660        settings, staticRules, existingRules, data, param, filtered;
4661
4662      if (command) {
4663        settings = $.data(element.form, "validator").settings;
4664        staticRules = settings.rules;
4665        existingRules = $.validator.staticRules(element);
4666        switch (command) {
4667          case "add":
4668            $.extend(existingRules, $.validator.normalizeRule(argument));
4669            // remove messages from rules, but allow them to be set separately
4670            delete existingRules.messages;
4671            staticRules[element.name] = existingRules;
4672            if (argument.messages) {
4673              settings.messages[element.name] = $.extend(settings.messages[element.name], argument.messages);
4674            }
4675            break;
4676          case "remove":
4677            if (!argument) {
4678              delete staticRules[element.name];
4679              return existingRules;
4680            }
4681            filtered = {};
4682            $.each(argument.split(/\s/), function (index, method) {
4683              filtered[method] = existingRules[method];
4684              delete existingRules[method];
4685              if (method === "required") {
4686                $(element).removeAttr("aria-required");
4687              }
4688            });
4689            return filtered;
4690        }
4691      }
4692
4693      data = $.validator.normalizeRules(
4694        $.extend({},
4695          $.validator.classRules(element),
4696          $.validator.attributeRules(element),
4697          $.validator.dataRules(element),
4698          $.validator.staticRules(element)
4699        ), element);
4700
4701      // make sure required is at front
4702      if (data.required) {
4703        param = data.required;
4704        delete data.required;
4705        data = $.extend({
4706          required: param
4707        }, data);
4708        $(element).attr("aria-required", "true");
4709      }
4710
4711      // make sure remote is at back
4712      if (data.remote) {
4713        param = data.remote;
4714        delete data.remote;
4715        data = $.extend(data, {
4716          remote: param
4717        });
4718      }
4719
4720      return data;
4721    }
4722  });
4723
4724  // Custom selectors
4725  $.extend($.expr[":"], {
4726    // http://jqueryvalidation.org/blank-selector/
4727    blank: function (a) {
4728      return !$.trim("" + $(a).val());
4729    },
4730    // http://jqueryvalidation.org/filled-selector/
4731    filled: function (a) {
4732      return !!$.trim("" + $(a).val());
4733    },
4734    // http://jqueryvalidation.org/unchecked-selector/
4735    unchecked: function (a) {
4736      return !$(a).prop("checked");
4737    }
4738  });
4739
4740  // constructor for validator
4741  $.validator = function (options, form) {
4742    this.settings = $.extend(true, {}, $.validator.defaults, options);
4743    this.currentForm = form;
4744    this.init();
4745  };
4746
4747  // http://jqueryvalidation.org/jQuery.validator.format/
4748  $.validator.format = function (source, params) {
4749    if (arguments.length === 1) {
4750      return function () {
4751        var args = $.makeArray(arguments);
4752        args.unshift(source);
4753        return $.validator.format.apply(this, args);
4754      };
4755    }
4756    if (arguments.length > 2 && params.constructor !== Array) {
4757      params = $.makeArray(arguments).slice(1);
4758    }
4759    if (params.constructor !== Array) {
4760      params = [params];
4761    }
4762    $.each(params, function (i, n) {
4763      source = source.replace(new RegExp("\\{" + i + "\\}", "g"), function () {
4764        return n;
4765      });
4766    });
4767    return source;
4768  };
4769
4770  $.extend($.validator, {
4771    defaults: {
4772      messages: {},
4773      groups: {},
4774      rules: {},
4775      lang: $('.language_type').text(),
4776      errorClass: "error",
4777      validClass: "valid",
4778      errorElement: "label",
4779      focusCleanup: false,
4780      focusInvalid: true,
4781      errorContainer: $([]),
4782      errorLabelContainer: $([]),
4783      onsubmit: true,
4784      ignore: ":hidden",
4785      ignoreTitle: false,
4786      onfocusin: function (element) {
4787        this.lastActive = element;
4788
4789        // Hide error label and remove error class on focus if enabled
4790        if (this.settings.focusCleanup) {
4791          if (this.settings.unhighlight) {
4792            this.settings.unhighlight.call(this, element, this.settings.errorClass, this.settings.validClass);
4793          }
4794          this.hideThese(this.errorsFor(element));
4795        }
4796      },
4797      onfocusout: function (element) {
4798        if (!this.checkable(element) && (element.name in this.submitted || !this.optional(element))) {
4799          this.element(element);
4800        }
4801      },
4802      onkeyup: function (element, event) {
4803        // Avoid revalidate the field when pressing one of the following keys
4804        // Shift       => 16
4805        // Ctrl        => 17
4806        // Alt         => 18
4807        // Caps lock   => 20
4808        // End         => 35
4809        // Home        => 36
4810        // Left arrow  => 37
4811        // Up arrow    => 38
4812        // Right arrow => 39
4813        // Down arrow  => 40
4814        // Insert      => 45
4815        // Num lock    => 144
4816        // AltGr key   => 225
4817        var excludedKeys = [
4818          16, 17, 18, 20, 35, 36, 37,
4819          38, 39, 40, 45, 144, 225
4820        ];
4821
4822        if (event.which === 9 && this.elementValue(element) === "" || $.inArray(event.keyCode, excludedKeys) !== -1) {
4823          return;
4824        } else if (element.name in this.submitted || element === this.lastElement) {
4825          this.element(element);
4826        }
4827      },
4828      onclick: function (element) {
4829        // click on selects, radiobuttons and checkboxes
4830        if (element.name in this.submitted) {
4831          this.element(element);
4832
4833          // or option elements, check parent select in that case
4834        } else if (element.parentNode.name in this.submitted) {
4835          this.element(element.parentNode);
4836        }
4837      },
4838      highlight: function (element, errorClass, validClass) {
4839        if (element.type === "radio") {
4840          this.findByName(element.name).addClass(errorClass).removeClass(validClass);
4841        } else {
4842          $(element).addClass(errorClass).removeClass(validClass);
4843        }
4844      },
4845      unhighlight: function (element, errorClass, validClass) {
4846        if (element.type === "radio") {
4847          this.findByName(element.name).removeClass(errorClass).addClass(validClass);
4848        } else {
4849          $(element).removeClass(errorClass).addClass(validClass);
4850        }
4851      }
4852    },
4853    // http://jqueryvalidation.org/jQuery.validator.setDefaults/
4854    setDefaults: function (settings) {
4855      $.extend($.validator.defaults, settings);
4856    },
4857    messages: {
4858      en: {
4859        required: "This field is required.",
4860        remote: "Please fix this field.",
4861        email: "Please enter a valid email address.",
4862        url: "Please enter a valid URL.",
4863        date: "Please enter a valid date.",
4864        dateISO: "Please enter a valid date ( ISO ).",
4865        number: "Please enter a valid number.",
4866        digits: "Please enter only digits.",
4867        creditcard: "Please enter a valid credit card number.",
4868        equalTo: "Please enter the same value again.",
4869        maxlength: $.validator.format("Please enter no more than {0} characters."),
4870        minlength: $.validator.format("Please enter at least {0} characters."),
4871        rangelength: $.validator.format("Please enter a value between {0} and {1} characters long."),
4872        range: $.validator.format("Please enter a value between {0} and {1}."),
4873        max: $.validator.format("Please enter a value less than or equal to {0}."),
4874        min: $.validator.format("Please enter a value greater than or equal to {0}.")
4875      },
4876      tr: {
4877        required: "Bu alan gereklidir",
4878        remote: "Please fix this field",
4879        email: "Geçersiz eposta",
4880        url: "Lütfen geçerli bir adres girin",
4881        date: "Lütfen geçerli bir tarih giriniz",
4882        dateISO: "Please enter a valid date ( ISO )",
4883        number: "Lütfen geçerli bir sayı giriniz",
4884        digits: "Please enter only digits",
4885        creditcard: "Geçerli bir kredi kartı numarası girin",
4886        equalTo: "Şifre eşleşmiyor tekrar deneyiniz.",
4887        maxlength: $.validator.format("Lütfen en fazla {0} karakter girin"),
4888        minlength: $.validator.format("Lütfen en az {0} karakter girin."),
4889        rangelength: $.validator.format("Please enter a value between {0} and {1} characters long."),
4890        range: $.validator.format("Please enter a value between {0} and {1}."),
4891        max: $.validator.format("Please enter a value less than or equal to {0}."),
4892        min: $.validator.format("Please enter a value greater than or equal to {0}.")
4893      },
4894      hr: {
4895        required: "Ovo polje je obavezno.",
4896        remote: "Please fix this field",
4897        email: "Ovo polje treba sadržavati ispravnu email adresu.",
4898        url: "Ovo polje treba sadržavati ispravni url.",
4899        date: "Unesite važeći datum.",
4900        dateISO: "Ovo polje treba sadržavati ispravno unešen datum (ISO).",
4901        number: "Ovo polje treba sadržavati ispravno upisan broj.",
4902        digits: "Ovo polje treba sadržavati znamenke.",
4903        creditcard: "Geçerli bir kredi kartı numarası girin",
4904        equalTo: "Ova vrijednost treba biti ista.",
4905        maxlength: $.validator.format("Unos je predugačak. Treba sadržavati {0} ili manje znakova."),
4906        minlength: $.validator.format("Unos je prekratak. Treba sadržavati {0} ili više znakova."),
4907        rangelength: $.validator.format("Please enter a value between {0} and {1} characters long."),
4908        range: $.validator.format("Vrijednost treba biti između {0} i {1}."),
4909        max: $.validator.format("Vrijednost treba biti jednaka ili manja od {0}."),
4910        min: $.validator.format("Vrijednost treba biti jednaka ili veća od {0}.")
4911      }, 
4912      de: {
4913        required: "Dieses Feld ist erforderlich.",
4914        remote: "Bitte korrigieren Sie dieses Feld.",
4915        email: "Bitte geben Sie eine gültige E-Mail-Adresse ein.",
4916        url: "Bitte geben Sie eine gültige URL ein.",
4917        date: "Bitte geben Sie ein gültiges Datum ein.",
4918        dateISO: "Bitte geben Sie ein gültiges Datum (ISO) ein.",
4919        number: "Bitte geben Sie eine gültige Zahl ein.",
4920        digits: "Bitte geben Sie nur Ziffern ein.",
4921        creditcard: "Bitte geben Sie eine gültige Kreditkartennummer ein.",
4922        equalTo: "Bitte geben Sie denselben Wert erneut ein.",
4923        maxlength: $.validator.format("Bitte nicht mehr als {0} Zeichen eingeben."),
4924        minlength: $.validator.format("Bitte mindestens {0} Zeichen eingeben."),
4925        rangelength: $.validator.format("Bitte einen Wert zwischen {0} und {1} Zeichen eingeben."),
4926        range: $.validator.format("Bitte einen Wert zwischen {0} und {1} eingeben."),
4927        max: $.validator.format("Bitte einen Wert kleiner oder gleich {0} eingeben."),
4928        min: $.validator.format("Bitte einen Wert größer oder gleich {0} eingeben.")
4929      },
4930      es: {
4931        required: "Este campo es obligatorio.",
4932        remote: "Por favor, corrija este campo.",
4933        email: "Por favor, introduzca una dirección de correo válida.",
4934        url: "Por favor, introduzca una URL válida.",
4935        date: "Por favor, introduzca una fecha válida.",
4936        dateISO: "Por favor, introduzca una fecha válida (ISO).",
4937        number: "Por favor, introduzca un número válido.",
4938        digits: "Por favor, introduzca solo dígitos.",
4939        creditcard: "Por favor, introduzca un número de tarjeta de crédito válido.",
4940        equalTo: "Por favor, introduzca el mismo valor nuevamente.",
4941        maxlength: $.validator.format("Por favor, no introduzca más de {0} caracteres."),
4942        minlength: $.validator.format("Por favor, introduzca al menos {0} caracteres."),
4943        rangelength: $.validator.format("Por favor, introduzca un valor entre {0} y {1} caracteres."),
4944        range: $.validator.format("Por favor, introduzca un valor entre {0} y {1}."),
4945        max: $.validator.format("Por favor, introduzca un valor menor o igual a {0}."),
4946        min: $.validator.format("Por favor, introduzca un valor mayor o igual a {0}.")
4947      },
4948      fr:{
4949        required: "Ce champ est obligatoire.",
4950        remote: "Veuillez corriger ce champ.",
4951        email: "Veuillez entrer une adresse e-mail valide.",
4952        url: "Veuillez entrer une URL valide.",
4953        date: "Veuillez entrer une date valide.",
4954        dateISO: "Veuillez entrer une date valide (ISO).",
4955        number: "Veuillez entrer un numéro valide.",
4956        digits: "Veuillez entrer uniquement des chiffres.",
4957        creditcard: "Veuillez entrer un numéro de carte de crédit valide.",
4958        equalTo: "Veuillez entrer la même valeur à nouveau.",
4959        maxlength: $.validator.format("Veuillez ne pas entrer plus de {0} caractères."),
4960        minlength: $.validator.format("Veuillez entrer au moins {0} caractères."),
4961        rangelength: $.validator.format("Veuillez entrer une valeur entre {0} et {1} caractères."),
4962        range: $.validator.format("Veuillez entrer une valeur entre {0} et {1}."),
4963        max: $.validator.format("Veuillez entrer une valeur inférieure ou égale à {0}."),
4964        min: $.validator.format("Veuillez entrer une valeur supérieure ou égale à {0}.")
4965      },
4966      it: {
4967        required: "Questo campo è obbligatorio.",
4968        remote: "Per favore, correggi questo campo.",
4969        email: "Per favore, inserisci un indirizzo email valido.",
4970        url: "Per favore, inserisci un URL valido.",
4971        date: "Per favore, inserisci una data valida.",
4972        dateISO: "Per favore, inserisci una data valida (ISO).",
4973        number: "Per favore, inserisci un numero valido.",
4974        digits: "Per favore, inserisci solo cifre.",
4975        creditcard: "Per favore, inserisci un numero di carta di credito valido.",
4976        equalTo: "Per favore, inserisci di nuovo lo stesso valore.",
4977        maxlength: $.validator.format("Per favore, non inserire più di {0} caratteri."),
4978        minlength: $.validator.format("Per favore, inserisci almeno {0} caratteri."),
4979        rangelength: $.validator.format("Per favore, inserisci un valore tra {0} e {1} caratteri."),
4980        range: $.validator.format("Per favore, inserisci un valore tra {0} e {1}."),
4981        max: $.validator.format("Per favore, inserisci un valore minore o uguale a {0}."),
4982        min: $.validator.format("Per favore, inserisci un valore maggiore o uguale a {0}.")
4983      }
4984
4985    },
4986    autoCreateRanges: false,
4987    prototype: {
4988      init: function () {
4989        this.labelContainer = $(this.settings.errorLabelContainer);
4990        this.errorContext = this.labelContainer.length && this.labelContainer || $(this.currentForm);
4991        this.containers = $(this.settings.errorContainer).add(this.settings.errorLabelContainer);
4992        this.submitted = {};
4993        this.valueCache = {};
4994        this.pendingRequest = 0;
4995        this.pending = {};
4996        this.invalid = {};
4997        this.reset();
4998
4999        var groups = (this.groups = {}),
5000          rules;
5001        $.each(this.settings.groups, function (key, value) {
5002          if (typeof value === "string") {
5003            value = value.split(/\s/);
5004          }
5005          $.each(value, function (index, name) {
5006            groups[name] = key;
5007          });
5008        });
5009        rules = this.settings.rules;
5010        $.each(rules, function (key, value) {
5011          rules[key] = $.validator.normalizeRule(value);
5012        });
5013
5014        function delegate(event) {
5015          var validator = $.data(this.form, "validator"),
5016            eventType = "on" + event.type.replace(/^validate/, ""),
5017            settings = validator.settings;
5018          if (settings[eventType] && !$(this).is(settings.ignore)) {
5019            settings[eventType].call(validator, this, event);
5020          }
5021        }
5022
5023        $(this.currentForm)
5024          .on("focusin.validate focusout.validate keyup.validate",
5025            ":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'], " +
5026            "[type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], " +
5027            "[type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'], " +
5028            "[type='radio'], [type='checkbox']", delegate)
5029          // Support: Chrome, oldIE
5030          // "select" is provided as event.target when clicking a option
5031          .on("click.validate", "select, option, [type='radio'], [type='checkbox']", delegate);
5032
5033        if (this.settings.invalidHandler) {
5034          $(this.currentForm).on("invalid-form.validate", this.settings.invalidHandler);
5035        }
5036
5037        // Add aria-required to any Static/Data/Class required fields before first validation
5038        // Screen readers require this attribute to be present before the initial submission http://www.w3.org/TR/WCAG-TECHS/ARIA2.html
5039        $(this.currentForm).find("[required], [data-rule-required], .required").attr("aria-required", "true");
5040      },
5041      // http://jqueryvalidation.org/Validator.form/
5042      form: function () {
5043        this.checkForm();
5044        $.extend(this.submitted, this.errorMap);
5045        this.invalid = $.extend({}, this.errorMap);
5046        if (!this.valid()) {
5047          $(this.currentForm).triggerHandler("invalid-form", [this]);
5048        }
5049        this.showErrors();
5050        return this.valid();
5051      },
5052      checkForm: function () {
5053        this.prepareForm();
5054        for (var i = 0, elements = (this.currentElements = this.elements()); elements[i]; i++) {
5055          this.check(elements[i]);
5056        }
5057        return this.valid();
5058      },
5059      // http://jqueryvalidation.org/Validator.element/
5060      element: function (element) {
5061        var cleanElement = this.clean(element),
5062          checkElement = this.validationTargetFor(cleanElement),
5063          result = true;
5064
5065        this.lastElement = checkElement;
5066
5067        if (checkElement === undefined) {
5068          delete this.invalid[cleanElement.name];
5069        } else {
5070          this.prepareElement(checkElement);
5071          this.currentElements = $(checkElement);
5072
5073          result = this.check(checkElement) !== false;
5074          if (result) {
5075            delete this.invalid[checkElement.name];
5076          } else {
5077            this.invalid[checkElement.name] = true;
5078          }
5079        }
5080        // Add aria-invalid status for screen readers
5081        $(element).attr("aria-invalid", !result);
5082
5083        if (!this.numberOfInvalids()) {
5084          // Hide error containers on last error
5085          this.toHide = this.toHide.add(this.containers);
5086        }
5087        this.showErrors();
5088        return result;
5089      },
5090      // http://jqueryvalidation.org/Validator.showErrors/
5091      showErrors: function (errors) {
5092        if (errors) {
5093          // add items to error list and map
5094          $.extend(this.errorMap, errors);
5095          this.errorList = [];
5096          for (var name in errors) {
5097            this.errorList.push({
5098              message: errors[name],
5099              element: this.findByName(name)[0]
5100            });
5101          }
5102          // remove items from success list
5103          this.successList = $.grep(this.successList, function (element) {
5104            return !(element.name in errors);
5105          });
5106        }
5107        if (this.settings.showErrors) {
5108          this.settings.showErrors.call(this, this.errorMap, this.errorList);
5109        } else {
5110          this.defaultShowErrors();
5111        }
5112      },
5113      // http://jqueryvalidation.org/Validator.resetForm/
5114      resetForm: function () {
5115        if ($.fn.resetForm) {
5116          $(this.currentForm).resetForm();
5117        }
5118        this.submitted = {};
5119        this.lastElement = null;
5120        this.prepareForm();
5121        this.hideErrors();
5122        var i, elements = this.elements()
5123          .removeData("previousValue")
5124          .removeAttr("aria-invalid");
5125
5126        if (this.settings.unhighlight) {
5127          for (i = 0; elements[i]; i++) {
5128            this.settings.unhighlight.call(this, elements[i],
5129              this.settings.errorClass, "");
5130          }
5131        } else {
5132          elements.removeClass(this.settings.errorClass);
5133        }
5134      },
5135      numberOfInvalids: function () {
5136        return this.objectLength(this.invalid);
5137      },
5138      objectLength: function (obj) {
5139        /* jshint unused: false */
5140        var count = 0,
5141          i;
5142        for (i in obj) {
5143          count++;
5144        }
5145        return count;
5146      },
5147      hideErrors: function () {
5148        this.hideThese(this.toHide);
5149      },
5150      hideThese: function (errors) {
5151        errors.not(this.containers).text("");
5152        this.addWrapper(errors).hide();
5153      },
5154      valid: function () {
5155        return this.size() === 0;
5156      },
5157      size: function () {
5158        return this.errorList.length;
5159      },
5160      focusInvalid: function () {
5161        if (this.settings.focusInvalid) {
5162          try {
5163            $(this.findLastActive() || this.errorList.length && this.errorList[0].element || [])
5164              .filter(":visible")
5165              .focus()
5166              // manually trigger focusin event; without it, focusin handler isn't called, findLastActive won't have anything to find
5167              .trigger("focusin");
5168          } catch (e) {
5169            // ignore IE throwing errors when focusing hidden elements
5170          }
5171        }
5172      },
5173      findLastActive: function () {
5174        var lastActive = this.lastActive;
5175        return lastActive && $.grep(this.errorList, function (n) {
5176          return n.element.name === lastActive.name;
5177        }).length === 1 && lastActive;
5178      },
5179      elements: function () {
5180        var validator = this,
5181          rulesCache = {};
5182
5183        // select all valid inputs inside the form (no submit or reset buttons)
5184        return $(this.currentForm)
5185          .find("input, select, textarea")
5186          .not(":submit, :reset, :image, :disabled")
5187          .not(this.settings.ignore)
5188          .filter(function () {
5189            if (!this.name && validator.settings.debug && window.console) {
5190              console.error("%o has no name assigned", this);
5191            }
5192
5193            // select only the first element for each name, and only those with rules specified
5194            if (this.name in rulesCache || !validator.objectLength($(this).rules())) {
5195              return false;
5196            }
5197
5198            rulesCache[this.name] = true;
5199            return true;
5200          });
5201      },
5202      clean: function (selector) {
5203        return $(selector)[0];
5204      },
5205      errors: function () {
5206        var errorClass = this.settings.errorClass.split(" ").join(".");
5207        return $(this.settings.errorElement + "." + errorClass, this.errorContext);
5208      },
5209      reset: function () {
5210        this.successList = [];
5211        this.errorList = [];
5212        this.errorMap = {};
5213        this.toShow = $([]);
5214        this.toHide = $([]);
5215        this.currentElements = $([]);
5216      },
5217      prepareForm: function () {
5218        this.reset();
5219        this.toHide = this.errors().add(this.containers);
5220      },
5221      prepareElement: function (element) {
5222        this.reset();
5223        this.toHide = this.errorsFor(element);
5224      },
5225      elementValue: function (element) {
5226        var val,
5227          $element = $(element),
5228          type = element.type;
5229
5230        if (type === "radio" || type === "checkbox") {
5231          return this.findByName(element.name).filter(":checked").val();
5232        } else if (type === "number" && typeof element.validity !== "undefined") {
5233          return element.validity.badInput ? false : $element.val();
5234        }
5235
5236        val = $element.val();
5237        if (typeof val === "string") {
5238          return val.replace(/\r/g, "");
5239        }
5240        return val;
5241      },
5242      check: function (element) {
5243        element = this.validationTargetFor(this.clean(element));
5244
5245        var rules = $(element).rules(),
5246          rulesCount = $.map(rules, function (n, i) {
5247            return i;
5248          }).length,
5249          dependencyMismatch = false,
5250          val = this.elementValue(element),
5251          result, method, rule;
5252
5253        for (method in rules) {
5254          rule = {
5255            method: method,
5256            parameters: rules[method]
5257          };
5258          try {
5259
5260            result = $.validator.methods[method].call(this, val, element, rule.parameters);
5261
5262            // if a method indicates that the field is optional and therefore valid,
5263            // don't mark it as valid when there are no other rules
5264            if (result === "dependency-mismatch" && rulesCount === 1) {
5265              dependencyMismatch = true;
5266              continue;
5267            }
5268            dependencyMismatch = false;
5269
5270            if (result === "pending") {
5271              this.toHide = this.toHide.not(this.errorsFor(element));
5272              return;
5273            }
5274
5275            if (!result) {
5276              this.formatAndAdd(element, rule);
5277              return false;
5278            }
5279          } catch (e) {
5280            if (this.settings.debug && window.console) {
5281              console.log("Exception occurred when checking element " + element.i
vendor: 4,482 bytes, lines 5281-5392
5281d + ", check the '" + rule.method + "' method.", e);
5282            }
5283            if (e instanceof TypeError) {
5284              e.message += ".  Exception occurred when checking element " + element.id + ", check the '" + rule.method + "' method.";
5285            }
5286
5287            throw e;
5288          }
5289        }
5290        if (dependencyMismatch) {
5291          return;
5292        }
5293        if (this.objectLength(rules)) {
5294          this.successList.push(element);
5295        }
5296        return true;
5297      },
5298      // return the custom message for the given element and validation method
5299      // specified in the element's HTML5 data attribute
5300      // return the generic message if present and no method specific message is present
5301      customDataMessage: function (element, method) {
5302        return $(element).data("msg" + method.charAt(0).toUpperCase() +
5303          method.substring(1).toLowerCase()) || $(element).data("msg");
5304      },
5305      // return the custom message for the given element name and validation method
5306      customMessage: function (name, method) {
5307        var m = this.settings.messages[name];
5308        return m && (m.constructor === String ? m : m[method]);
5309      },
5310      // return the first defined argument, allowing empty strings
5311      findDefined: function () {
5312        for (var i = 0; i < arguments.length; i++) {
5313          if (arguments[i] !== undefined) {
5314            return arguments[i];
5315          }
5316        }
5317        return undefined;
5318      },
5319      defaultMessage: function (element, method) {
5320        return this.findDefined(
5321          this.customMessage(element.name, method),
5322          this.customDataMessage(element, method),
5323          // title is never undefined, so handle empty string as undefined
5324          !this.settings.ignoreTitle && element.title || undefined,
5325          $.validator.messages[this.settings.lang][method],
5326          "<strong>Warning: No message defined for " + element.name + "</strong>"
5327        );
5328      },
5329      formatAndAdd: function (element, rule) {
5330        var message = this.defaultMessage(element, rule.method),
5331          theregex = /\$?\{(\d+)\}/g;
5332        if (typeof message === "function") {
5333          message = message.call(this, rule.parameters, element);
5334        } else if (theregex.test(message)) {
5335          message = $.validator.format(message.replace(theregex, "{$1}"), rule.parameters);
5336        }
5337        this.errorList.push({
5338          message: message,
5339          element: element,
5340          method: rule.method
5341        });
5342
5343        this.errorMap[element.name] = message;
5344        this.submitted[element.name] = message;
5345      },
5346      addWrapper: function (toToggle) {
5347        if (this.settings.wrapper) {
5348          toToggle = toToggle.add(toToggle.parent(this.settings.wrapper));
5349        }
5350        return toToggle;
5351      },
5352      defaultShowErrors: function () {
5353        var i, elements, error;
5354        for (i = 0; this.errorList[i]; i++) {
5355          error = this.errorList[i];
5356          if (this.settings.highlight) {
5357            this.settings.highlight.call(this, error.element, this.settings.errorClass, this.settings.validClass);
5358          }
5359          this.showLabel(error.element, error.message);
5360        }
5361        if (this.errorList.length) {
5362          this.toShow = this.toShow.add(this.containers);
5363        }
5364        if (this.settings.success) {
5365          for (i = 0; this.successList[i]; i++) {
5366            this.showLabel(this.successList[i]);
5367          }
5368        }
5369        if (this.settings.unhighlight) {
5370          for (i = 0, elements = this.validElements(); elements[i]; i++) {
5371            this.settings.unhighlight.call(this, elements[i], this.settings.errorClass, this.settings.validClass);
5372          }
5373        }
5374        this.toHide = this.toHide.not(this.toShow);
5375        this.hideErrors();
5376        this.addWrapper(this.toShow).show();
5377      },
5378      validElements: function () {
5379        return this.currentElements.not(this.invalidElements());
5380      },
5381      invalidElements: function () {
5382        return $(this.errorList).map(function () {
5383          return this.element;
5384        });
5385      },
5386      showLabel: function (element, message) {
5387        var place, group, errorID,
5388          error = this.errorsFor(element),
5389          elementID = this.idOrName(element),
5390          describedBy = $(element).attr("aria-describedby");
5391        if (error.length) {
5392          // refresh error/success class
5393          error.removeClass(this.settings.validClass).addClass(this.settings.errorClass);
5394          // replace message on existing label
5395          error.html(message);
5396        } else {
5397          // create error element
5398          error = $("<" + this.settings.errorElement + ">")
5399            .attr("id", elementID + "-error")
5400            .addClass(this.settings.errorClass)
5401            .html(message || "");
5402
5403          // Maintain reference to the element to be placed into the DOM
5404          place = error;
5405          if (this.settings.wrapper) {
5406            // make sure the element is visible, even in IE
5407            // actually showing the wrapped element is handled elsewhere
5408            place = error.hide().show().wrap("<" + this.settings.wrapper + "/>").parent();
5409          }
5410          if (this.labelContainer.length) {
5411            this.labelContainer.append(place);
5412          } else if (this.settings.errorPlacement) {
5413            this.settings.errorPlacement(place, $(element));
5414          } else {
5415            place.insertAfter(element);
5416          }
5417
5418          // Link error back to the element
5419          if (error.is("label")) {
5420            // If the error is a label, then associate using 'for'
5421            error.attr("for", elementID);
5422          } else if (error.parents("label[for='" + elementID + "']").length === 0) {
5423            // If the element is not a child of an associated label, then it's necessary
5424            // to explicitly apply aria-describedby
5425
5426            errorID = error.attr("id").replace(/(:|\.|\[|\]|\$)/g, "\\$1");
5427            // Respect existing non-error aria-describedby
5428            if (!describedBy) {
5429              describedBy = errorID;
5430            } else if (!describedBy.match(new RegExp("\\b" + errorID + "\\b"))) {
5431              // Add to end of list if not already present
5432              describedBy += " " + errorID;
5433            }
5434            $(element).attr("aria-describedby", describedBy);
5435
5436            // If this element is grouped, then assign to all elements in the same group
5437            group = this.groups[element.name];
5438            if (group) {
5439              $.each(this.groups, function (name, testgroup) {
5440                if (testgroup === group) {
5441                  $("[name='" + name + "']", this.currentForm)
5442                    .attr("aria-describedby", error.attr("id"));
5443                }
5444              });
5445            }
5446          }
5447        }
5448        if (!message && this.settings.success) {
5449          error.text("");
5450          if (typeof this.settings.success === "string") {
5451            error.addClass(this.settings.success);
5452          } else {
5453            this.settings.success(error, element);
5454          }
5455        }
5456        this.toShow = this.toShow.add(error);
5457      },
5458      errorsFor: function (element) {
5459        var name = this.idOrName(element),
5460          describer = $(element).attr("aria-describedby"),
5461          selector = "label[for='" + name + "'], label[for='" + name + "'] *";
5462
5463        // aria-describedby should directly reference the error element
5464        if (describer) {
5465          selector = selector + ", #" + describer.replace(/\s+/g, ", #");
5466        }
5467        return this
5468          .errors()
5469          .filter(selector);
5470      },
5471      idOrName: function (element) {
5472        return this.groups[element.name] || (this.checkable(element) ? element.name : element.id || element.name);
5473      },
5474      validationTargetFor: function (element) {
5475
5476        // If radio/checkbox, validate first element in group instead
5477        if (this.checkable(element)) {
5478          element = this.findByName(element.name);
5479        }
5480
5481        // Always apply ignore filter
5482        return $(element).not(this.settings.ignore)[0];
5483      },
5484      checkable: function (element) {
5485        return (/radio|checkbox/i).test(element.type);
5486      },
5487      findByName: function (name) {
5488        return $(this.currentForm).find("[name='" + name + "']");
5489      },
5490      getLength: function (value, element) {
5491        switch (element.nodeName.toLowerCase()) {
5492          case "select":
5493            return $("option:selected", element).length;
5494          case "input":
5495            if (this.checkable(element)) {
5496              return this.findByName(element.name).filter(":checked").length;
5497            }
5498        }
5499        return value.length;
5500      },
5501      depend: function (param, element) {
5502        return this.dependTypes[typeof param] ? this.dependTypes[typeof param](param, element) : true;
5503      },
5504      dependTypes: {
5505        "boolean": function (param) {
5506          return param;
5507        },
5508        "string": function (param, element) {
5509          return !!$(param, element.form).length;
5510        },
5511        "function": function (param, element) {
5512          return param(element);
5513        }
5514      },
5515      optional: function (element) {
5516        var val = this.elementValue(element);
5517        return !$.validator.methods.required.call(this, val, element) && "dependency-mismatch";
5518      },
5519      startRequest: function (element) {
5520        if (!this.pending[element.name]) {
5521          this.pendingRequest++;
5522          this.pending[element.name] = true;
5523        }
5524      },
5525      stopRequest: function (element, valid) {
5526        this.pendingRequest--;
5527        // sometimes synchronization fails, make sure pendingRequest is never < 0
5528        if (this.pendingRequest < 0) {
5529          this.pendingRequest = 0;
5530        }
5531        delete this.pending[element.name];
5532        if (valid && this.pendingRequest === 0 && this.formSubmitted && this.form()) {
5533          $(this.currentForm).submit();
5534          this.formSubmitted = false;
5535        } else if (!valid && this.pendingRequest === 0 && this.formSubmitted) {
5536          $(this.currentForm).triggerHandler("invalid-form", [this]);
5537          this.formSubmitted = false;
5538        }
5539      },
5540      previousValue: function (element) {
5541        return $.data(element, "previousValue") || $.data(element, "previousValue", {
vendor: 8,446 bytes, lines 5542-5795
5542          old: null,
5543          valid: true,
5544          message: this.defaultMessage(element, "remote")
5545        });
5546      },
5547      // cleans up all forms and elements, removes validator-specific events
5548      destroy: function () {
5549        this.resetForm();
5550
5551        $(this.currentForm)
5552          .off(".validate")
5553          .removeData("validator");
5554      }
5555
5556    },
5557    classRuleSettings: {
5558      required: {
5559        required: true
5560      },
5561      email: {
5562        email: true
5563      },
5564      url: {
5565        url: true
5566      },
5567      date: {
5568        date: true
5569      },
5570      dateISO: {
5571        dateISO: true
5572      },
5573      number: {
5574        number: true
5575      },
5576      digits: {
5577        digits: true
5578      },
5579      creditcard: {
5580        creditcard: true
5581      }
5582    },
5583    addClassRules: function (className, rules) {
5584      if (className.constructor === String) {
5585        this.classRuleSettings[className] = rules;
5586      } else {
5587        $.extend(this.classRuleSettings, className);
5588      }
5589    },
5590    classRules: function (element) {
5591      var rules = {},
5592        classes = $(element).attr("class");
5593
5594      if (classes) {
5595        $.each(classes.split(" "), function () {
5596          if (this in $.validator.classRuleSettings) {
5597            $.extend(rules, $.validator.classRuleSettings[this]);
5598          }
5599        });
5600      }
5601      return rules;
5602    },
5603    normalizeAttributeRule: function (rules, type, method, value) {
5604
5605      // convert the value to a number for number inputs, and for text for backwards compability
5606      // allows type="date" and others to be compared as strings
5607      if (/min|max/.test(method) && (type === null || /number|range|text/.test(type))) {
5608        value = Number(value);
5609
5610        // Support Opera Mini, which returns NaN for undefined minlength
5611        if (isNaN(value)) {
5612          value = undefined;
5613        }
5614      }
5615
5616      if (value || value === 0) {
5617        rules[method] = value;
5618      } else if (type === method && type !== "range") {
5619
5620        // exception: the jquery validate 'range' method
5621        // does not test for the html5 'range' type
5622        rules[method] = true;
5623      }
5624    },
5625    attributeRules: function (element) {
5626      var rules = {},
5627        $element = $(element),
5628        type = element.getAttribute("type"),
5629        method, value;
5630
5631      for (method in $.validator.methods) {
5632
5633        // support for <input required> in both html5 and older browsers
5634        if (method === "required") {
5635          value = element.getAttribute(method);
5636
5637          // Some browsers return an empty string for the required attribute
5638          // and non-HTML5 browsers might have required="" markup
5639          if (value === "") {
5640            value = true;
5641          }
5642
5643          // force non-HTML5 browsers to return bool
5644          value = !!value;
5645        } else {
5646          value = $element.attr(method);
5647        }
5648
5649        this.normalizeAttributeRule(rules, type, method, value);
5650      }
5651
5652      // maxlength may be returned as -1, 2147483647 ( IE ) and 524288 ( safari ) for text inputs
5653      if (rules.maxlength && /-1|2147483647|524288/.test(rules.maxlength)) {
5654        delete rules.maxlength;
5655      }
5656
5657      return rules;
5658    },
5659    dataRules: function (element) {
5660      var rules = {},
5661        $element = $(element),
5662        type = element.getAttribute("type"),
5663        method, value;
5664
5665      for (method in $.validator.methods) {
5666        value = $element.data("rule" + method.charAt(0).toUpperCase() + method.substring(1).toLowerCase());
5667        this.normalizeAttributeRule(rules, type, method, value);
5668      }
5669      return rules;
5670    },
5671    staticRules: function (element) {
5672      var rules = {},
5673        validator = $.data(element.form, "validator");
5674
5675      if (validator.settings.rules) {
5676        rules = $.validator.normalizeRule(validator.settings.rules[element.name]) || {};
5677      }
5678      return rules;
5679    },
5680    normalizeRules: function (rules, element) {
5681      // handle dependency check
5682      $.each(rules, function (prop, val) {
5683        // ignore rule when param is explicitly false, eg. required:false
5684        if (val === false) {
5685          delete rules[prop];
5686          return;
5687        }
5688        if (val.param || val.depends) {
5689          var keepRule = true;
5690          switch (typeof val.depends) {
5691            case "string":
5692              keepRule = !!$(val.depends, element.form).length;
5693              break;
5694            case "function":
5695              keepRule = val.depends.call(element, element);
5696              break;
5697          }
5698          if (keepRule) {
5699            rules[prop] = val.param !== undefined ? val.param : true;
5700          } else {
5701            delete rules[prop];
5702          }
5703        }
5704      });
5705
5706      // evaluate parameters
5707      $.each(rules, function (rule, parameter) {
5708        rules[rule] = $.isFunction(parameter) ? parameter(element) : parameter;
5709      });
5710
5711      // clean number parameters
5712      $.each(["minlength", "maxlength"], function () {
5713        if (rules[this]) {
5714          rules[this] = Number(rules[this]);
5715        }
5716      });
5717      $.each(["rangelength", "range"], function () {
5718        var parts;
5719        if (rules[this]) {
5720          if ($.isArray(rules[this])) {
5721            rules[this] = [Number(rules[this][0]), Number(rules[this][1])];
5722          } else if (typeof rules[this] === "string") {
5723            parts = rules[this].replace(/[\[\]]/g, "").split(/[\s,]+/);
5724            rules[this] = [Number(parts[0]), Number(parts[1])];
5725          }
5726        }
5727      });
5728
5729      if ($.validator.autoCreateRanges) {
5730        // auto-create ranges
5731        if (rules.min != null && rules.max != null) {
5732          rules.range = [rules.min, rules.max];
5733          delete rules.min;
5734          delete rules.max;
5735        }
5736        if (rules.minlength != null && rules.maxlength != null) {
5737          rules.rangelength = [rules.minlength, rules.maxlength];
5738          delete rules.minlength;
5739          delete rules.maxlength;
5740        }
5741      }
5742
5743      return rules;
5744    },
5745    // Converts a simple string to a {string: true} rule, e.g., "required" to {required:true}
5746    normalizeRule: function (data) {
5747      if (typeof data === "string") {
5748        var transformed = {};
5749        $.each(data.split(/\s/), function () {
5750          transformed[this] = true;
5751        });
5752        data = transformed;
5753      }
5754      return data;
5755    },
5756    // http://jqueryvalidation.org/jQuery.validator.addMethod/
5757    addMethod: function (name, method, message) {
5758      $.validator.methods[name] = method;
5759      $.validator.messages[name] = message !== undefined ? message : $.validator.messages[name];
5760      if (method.length < 3) {
5761        $.validator.addClassRules(name, $.validator.normalizeRule(name));
5762      }
5763    },
5764    methods: {
5765      // http://jqueryvalidation.org/required-method/
5766      required: function (value, element, param) {
5767        // check if dependency is met
5768        if (!this.depend(param, element)) {
5769          return "dependency-mismatch";
5770        }
5771        if (element.nodeName.toLowerCase() === "select") {
5772          // could be an array for select-multiple or a string, both are fine this way
5773          var val = $(element).val();
5774          return val && val.length > 0;
5775        }
5776        if (this.checkable(element)) {
5777          return this.getLength(value, element) > 0;
5778        }
5779        return value.length > 0;
5780      },
5781      // http://jqueryvalidation.org/email-method/
5782      email: function (value, element) {
5783        // From https://html.spec.whatwg.org/multipage/forms.html#valid-e-mail-address
5784        // Retrieved 2014-01-14
5785        // If you have a problem with this implementation, report a bug against the above spec
5786        // Or use custom methods to implement your own email validation
5787        return this.optional(element) || /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test(value);
5788      },
5789      // http://jqueryvalidation.org/url-method/
5790      url: function (value, element) {
5791
5792        // Copyright (c) 2010-2013 Diego Perini, MIT licensed
5793        // https://gist.github.com/dperini/729294
5794        // see also https://mathiasbynens.be/demo/url-regex
5795        // modified to allow protocol-relative URLs
5796        return this.optional(element) || /^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[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.test(value);
5797      },
5798      // http://jqueryvalidation.org/date-method/
5799      date: function (value, element) {
5800        return this.optional(element) || !/Invalid|NaN/.test(new Date(value).toString());
5801      },
5802      // http://jqueryvalidation.org/dateISO-method/
5803      dateISO: function (value, element) {
5804        return this.optional(element) || /^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test(value);
5805      },
5806      // http://jqueryvalidation.org/number-method/
5807      number: function (value, element) {
5808        return this.optional(element) || /^(?:-?\d+|-?\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test(value);
5809      },
5810      // http://jqueryvalidation.org/digits-method/
5811      digits: function (value, element) {
5812        return this.optional(element) || /^\d+$/.test(value);
5813      },
5814      // http://jqueryvalidation.org/creditcard-method/
5815      // based on http://en.wikipedia.org/wiki/Luhn_algorithm
5816      creditcard: function (value, element) {
5817        if (this.optional(element)) {
5818          return "dependency-mismatch";
5819        }
5820        // accept only spaces, digits and dashes
5821        if (/[^0-9 \-]+/.test(value)) {
5822          return false;
5823        }
5824        var nCheck = 0,
5825          nDigit = 0,
5826          bEven = false,
5827          n, cDigit;
5828
5829        value = value.replace(/\D/g, "");
5830
5831        // Basing min and max length on
5832        // http://developer.ean.com/general_info/Valid_Credit_Card_Types
5833        if (value.length < 13 || value.length > 19) {
5834          return false;
5835        }
5836
5837        for (n = value.length - 1; n >= 0; n--) {
5838          cDigit = value.charAt(n);
5839          nDigit = parseInt(cDigit, 10);
5840          if (bEven) {
5841            if ((nDigit *= 2) > 9) {
5842              nDigit -= 9;
5843            }
5844          }
5845          nCheck += nDigit;
5846          bEven = !bEven;
5847        }
5848
5849        return (nCheck % 10) === 0;
5850      },
5851      // http://jqueryvalidation.org/minlength-method/
5852      minlength: function (value, element, param) {
5853        var length = $.isArray(value) ? value.length : this.getLength(value, element);
5854        return this.optional(element) || length >= param;
5855      },
5856      // http://jqueryvalidation.org/maxlength-method/
5857      maxlength: function (value, element, param) {
5858        var length = $.isArray(value) ? value.length : this.getLength(value, element);
5859        return this.optional(element) || length <= param;
5860      },
5861      // http://jqueryvalidation.org/rangelength-method/
5862      rangelength: function (value, element, param) {
5863        var length = $.isArray(value) ? value.length : this.getLength(value, element);
5864        return this.optional(element) || (length >= param[0] && length <= param[1]);
5865      },
5866      // http://jqueryvalidation.org/min-method/
5867      min: function (value, element, param) {
5868        return this.optional(element) || value >= param;
5869      },
5870      // http://jqueryvalidation.org/max-method/
5871      max: function (value, element, param) {
5872        return this.optional(element) || value <= param;
5873      },
5874      // http://jqueryvalidation.org/range-method/
5875      range: function (value, element, param) {
5876        return this.optional(element) || (value >= param[0] && value <= param[1]);
5877      },
5878      // http://jqueryvalidation.org/equalTo-method/
5879      equalTo: function (value, element, param) {
5880        // bind to the blur event of the target in order to revalidate whenever the target field is updated
5881        // TODO find a way to bind the event just once, avoiding the unbind-rebind overhead
5882        var target = $(param);
5883        if (this.settings.onfocusout) {
5884          target.off(".validate-equalTo").on("blur.validate-equalTo", function () {
5885            $(element).valid();
5886          });
5887        }
5888        return value === target.val();
5889      },
5890      // http://jqueryvalidation.org/remote-method/
5891      remote: function (value, element, param) {
5892        if (this.optional(element)) {
5893          return "dependency-mismatch";
5894        }
5895
5896        var previous = this.previousValue(element),
5897          validator, data;
5898
5899        if (!this.settings.messages[element.name]) {
5900          this.settings.messages[element.name] = {};
5901        }
5902        previous.originalMessage = this.settings.messages[element.name].remote;
5903        this.settings.messages[element.name].remote = previous.message;
5904
5905        param = typeof param === "string" && {
5906          url: param
5907        } || param;
5908
5909        if (previous.old === value) {
5910          return previous.valid;
5911        }
5912
5913        previous.old = value;
5914        validator = this;
5915        this.startRequest(element);
5916        data = {};
5917        data[element.name] = value;
5918        $.ajax($.extend(true, {
5919          mode: "abort",
5920          port: "validate" + element.name,
5921          dataType: "json",
5922          data: data,
5923          context: validator.currentForm,
5924          success: function (response) {
5925            var valid = response === true || response === "true",
5926              errors, message, submitted;
5927
5928            validator.settings.messages[element.name].remote = previous.originalMessage;
5929            if (valid) {
5930              submitted = validator.formSubmitted;
5931              validator.prepareElement(element);
5932              validator.formSubmitted = submitted;
5933              validator.successList.push(element);
5934              delete validator.invalid[element.name];
5935              validator.showErrors();
5936            } else {
5937              errors = {};
5938              message = response || validator.defaultMessage(element, "remote");
5939              errors[element.name] = previous.message = $.isFunction(message) ? message(value) : message;
5940              validator.invalid[element.name] = true;
5941              validator.showErrors(errors);
5942            }
5943            previous.valid = valid;
5944            validator.stopRequest(element, valid);
5945          }
5946        }, param));
5947        return "pending";
5948      }
5949    }
5950
5951  });
5952
5953  // ajax mode: abort
5954  // usage: $.ajax({ mode: "abort"[, port: "uniqueport"]});
5955  // if mode:"abort" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort()
5956
5957  var pendingRequests = {},
5958    ajax;
5959  // Use a prefilter if available (1.5+)
5960  if ($.ajaxPrefilter) {
5961    $.ajaxPrefilter(function (settings, _, xhr) {
5962      var port = settings.port;
5963      if (settings.mode === "abort") {
5964        if (pendingRequests[port]) {
5965          pendingRequests[port].abort();
5966        }
5967        pendingRequests[port] = xhr;
5968      }
5969    });
5970  } else {
5971    // Proxy ajax
5972    ajax = $.ajax;
5973    $.ajax = function (settings) {
5974      var mode = ("mode" in settings ? settings : $.ajaxSettings).mode,
5975        port = ("port" in settings ? settings : $.ajaxSettings).port;
5976      if (mode === "abort") {
5977        if (pendingRequests[port]) {
5978          pendingRequests[port].abort();
5979        }
5980        pendingRequests[port] = ajax.apply(this, arguments);
5981        return pendingRequests[port];
5982      }
5983      return ajax.apply(this, arguments);
5984    };
5985  }
5986
5987}));
5988
5989function notify(message, type) {
5990  if (type == 'cookie') {
5991    var basic_noti = {
5992      type: type,
5993      delay: 6000000,
5994      animate: {
5995        enter: 'animated slideInUp',
5996        exit: 'animated slideOutDown'
5997      }
5998    }
5999  } else {
6000    var basic_noti = {
6001      type: type,
6002      delay: $('.notification_popup_time').html(),
6003      animate: {
6004        enter: 'animated slideInUp',
6005        exit: 'animated slideOutDown'
6006      }
6007    }
6008  }
6009  $.notify(message, basic_noti);
6010}
6011$(function () {
6012  $(".validate_form").validate({
6013    errorPlacement: function (error, element) {
6014      if (typeof element[0]['attributes']['type'] != 'undefined') {
6015        if (element[0]['attributes']['type']['value'] == 'checkbox') {
6016          error.appendTo(element.parent().addClass("has-error"));
6017          error.addClass('d-block');
6018        } else {
6019          error.appendTo(element.parent().addClass("has-error"));
6020        }
6021      } else {
6022        error.appendTo(element.parent().addClass("has-error"));
6023      }
6024    },
6025    success: function (label) {
6026      label.parent().removeClass("has-error");
6027      label.remove();
6028    }
6029  });
6030});

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.