(function(e, t) { 'object' == typeof exports && 'undefined' != typeof module ? t(require('jquery'), require('popper.js')) : 'function' == typeof define && define.amd ? define(['jquery', 'popper.js'], t) : t(e.jQuery, e.Popper) })(this, function(e, t) { 'use strict'; function n(e, t) { for (var n, o = 0; o < t.length; o++) n = t[o], n.enumerable = n.enumerable || !1, n.configurable = !0, 'value' in n && (n.writable = !0), Object.defineProperty(e, n.key, n) } function o(e, t, o) { return t && n(e.prototype, t), o && n(e, o), e } function a() { return a = Object.assign || function(e) { for (var t, n = 1; n < arguments.length; n++) for (var o in t = arguments[n], t) Object.prototype.hasOwnProperty.call(t, o) && (e[o] = t[o]); return e }, a.apply(this, arguments) } function r(e, t) { e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t } var i = Math.max; e = e && e.hasOwnProperty('default') ? e['default'] : e, t = t && t.hasOwnProperty('default') ? t['default'] : t; var l = function(e) { function t(e) { return {}.toString.call(e).match(/\s([a-z]+)/i)[1].toLowerCase() } function n() { return { bindType: r.end, delegateType: r.end, handle: function(t) { return e(t.target).is(this) ? t.handleObj.handler.apply(this, arguments) : void 0 } } } function o() { return 'undefined' != typeof window && window.QUnit ? !1 : { end: 'transitionend' } } function a(t) { var n = this, o = !1; return e(this).one(i.TRANSITION_END, function() { o = !0 }), setTimeout(function() { o || i.triggerTransitionEnd(n) }, t), this } var r = !1, i = { TRANSITION_END: 'bsTransitionEnd', getUID: function(e) { do e += ~~(Math.random() * 1e6); while (document.getElementById(e)); return e }, getSelectorFromElement: function(t) { var n = t.getAttribute('data-target'); n && '#' !== n || (n = t.getAttribute('href') || ''); try { var o = e(document).find(n); return 0 < o.length ? n : null } catch (e) { return null } }, reflow: function(e) { return e.offsetHeight }, triggerTransitionEnd: function(t) { e(t).trigger(r.end) }, supportsTransitionEnd: function() { return !!r }, isElement: function(e) { return (e[0] || e).nodeType }, typeCheckConfig: function(e, n, o) { for (var a in o) if (Object.prototype.hasOwnProperty.call(o, a)) { var r = o[a], l = n[a], s = l && i.isElement(l) ? 'element' : t(l); if (!new RegExp(r).test(s)) throw new Error(e.toUpperCase() + ': ' + ('Option "' + a + '" provided type "' + s + '" ') + ('but expected type "' + r + '".')) } } }; return function() { r = o(), e.fn.emulateTransitionEnd = a, i.supportsTransitionEnd() && (e.event.special[i.TRANSITION_END] = n()) }(), i }(e), s = function(e) { var t = 'alert', n = 'bs.alert', a = '.' + n, r = e.fn[t], i = { CLOSE: 'close' + a, CLOSED: 'closed' + a, CLICK_DATA_API: 'click' + a + '.data-api' }, s = { ALERT: 'alert', FADE: 'fade', SHOW: 'show' }, d = function() { function t(e) { this._element = e } var a = t.prototype; return a.close = function(e) { e = e || this._element; var t = this._getRootElement(e), n = this._triggerCloseEvent(t); n.isDefaultPrevented() || this._removeElement(t) }, a.dispose = function() { e.removeData(this._element, n), this._element = null }, a._getRootElement = function(t) { var n = l.getSelectorFromElement(t), o = !1; return n && (o = e(n)[0]), o || (o = e(t).closest('.' + s.ALERT)[0]), o }, a._triggerCloseEvent = function(t) { var n = e.Event(i.CLOSE); return e(t).trigger(n), n }, a._removeElement = function(t) { var n = this; return e(t).removeClass(s.SHOW), l.supportsTransitionEnd() && e(t).hasClass(s.FADE) ? void e(t).one(l.TRANSITION_END, function(e) { return n._destroyElement(t, e) }).emulateTransitionEnd(150) : void this._destroyElement(t) }, a._destroyElement = function(t) { e(t).detach().trigger(i.CLOSED).remove() }, t._jQueryInterface = function(o) { return this.each(function() { var a = e(this), r = a.data(n); r || (r = new t(this), a.data(n, r)), 'close' === o && r[o](this) }) }, t._handleDismiss = function(e) { return function(t) { t && t.preventDefault(), e.close(this) } }, o(t, null, [{ key: 'VERSION', get: function() { return '4.0.0' } }]), t }(); return e(document).on(i.CLICK_DATA_API, { DISMISS: '[data-dismiss="alert"]' }.DISMISS, d._handleDismiss(new d)), e.fn[t] = d._jQueryInterface, e.fn[t].Constructor = d, e.fn[t].noConflict = function() { return e.fn[t] = r, d._jQueryInterface }, d }(e), d = function(e) { var t = 'button', n = 'bs.button', a = '.' + n, r = '.data-api', i = e.fn[t], l = { ACTIVE: 'active', BUTTON: 'btn', FOCUS: 'focus' }, s = { DATA_TOGGLE_CARROT: '[data-toggle^="button"]', DATA_TOGGLE: '[data-toggle="buttons"]', INPUT: 'input', ACTIVE: '.active', BUTTON: '.btn' }, d = { CLICK_DATA_API: 'click' + a + r, FOCUS_BLUR_DATA_API: 'focus' + a + r + ' ' + ('blur' + a + r) }, c = function() { function t(e) { this._element = e } var a = t.prototype; return a.toggle = function() { var t = !0, n = !0, o = e(this._element).closest(s.DATA_TOGGLE)[0]; if (o) { var a = e(this._element).find(s.INPUT)[0]; if (a) { if ('radio' === a.type) if (a.checked && e(this._element).hasClass(l.ACTIVE)) t = !1; else { var r = e(o).find(s.ACTIVE)[0]; r && e(r).removeClass(l.ACTIVE) } if (t) { if (a.hasAttribute('disabled') || o.hasAttribute('disabled') || a.classList.contains('disabled') || o.classList.contains('disabled')) return; a.checked = !e(this._element).hasClass(l.ACTIVE), e(a).trigger('change') } a.focus(), n = !1 } } n && this._element.setAttribute('aria-pressed', !e(this._element).hasClass(l.ACTIVE)), t && e(this._element).toggleClass(l.ACTIVE) }, a.dispose = function() { e.removeData(this._element, n), this._element = null }, t._jQueryInterface = function(o) { return this.each(function() { var a = e(this).data(n); a || (a = new t(this), e(this).data(n, a)), 'toggle' === o && a[o]() }) }, o(t, null, [{ key: 'VERSION', get: function() { return '4.0.0' } }]), t }(); return e(document).on(d.CLICK_DATA_API, s.DATA_TOGGLE_CARROT, function(t) { t.preventDefault(); var n = t.target; e(n).hasClass(l.BUTTON) || (n = e(n).closest(s.BUTTON)), c._jQueryInterface.call(e(n), 'toggle') }).on(d.FOCUS_BLUR_DATA_API, s.DATA_TOGGLE_CARROT, function(t) { var n = e(t.target).closest(s.BUTTON)[0]; e(n).toggleClass(l.FOCUS, /^focus(in)?$/.test(t.type)) }), e.fn[t] = c._jQueryInterface, e.fn[t].Constructor = c, e.fn[t].noConflict = function() { return e.fn[t] = i, c._jQueryInterface }, c }(e), c = function(e) { var t = 'carousel', n = 'bs.carousel', a = '.' + n, r = '.data-api', i = e.fn[t], s = { interval: 5e3, keyboard: !0, slide: !1, pause: 'hover', wrap: !0 }, d = { interval: '(number|boolean)', keyboard: 'boolean', slide: '(boolean|string)', pause: '(string|boolean)', wrap: 'boolean' }, c = { NEXT: 'next', PREV: 'prev', LEFT: 'left', RIGHT: 'right' }, _ = { SLIDE: 'slide' + a, SLID: 'slid' + a, KEYDOWN: 'keydown' + a, MOUSEENTER: 'mouseenter' + a, MOUSELEAVE: 'mouseleave' + a, TOUCHEND: 'touchend' + a, LOAD_DATA_API: 'load' + a + r, CLICK_DATA_API: 'click' + a + r }, p = { CAROUSEL: 'carousel', ACTIVE: 'active', SLIDE: 'slide', RIGHT: 'carousel-item-right', LEFT: 'carousel-item-left', NEXT: 'carousel-item-next', PREV: 'carousel-item-prev', ITEM: 'carousel-item' }, m = { ACTIVE: '.active', ACTIVE_ITEM: '.active.carousel-item', ITEM: '.carousel-item', NEXT_PREV: '.carousel-item-next, .carousel-item-prev', INDICATORS: '.carousel-indicators', DATA_SLIDE: '[data-slide], [data-slide-to]', DATA_RIDE: '[data-ride="carousel"]' }, g = function() { function r(t, n) { this._items = null, this._interval = null, this._activeElement = null, this._isPaused = !1, this._isSliding = !1, this.touchTimeout = null, this._config = this._getConfig(n), this._element = e(t)[0], this._indicatorsElement = e(this._element).find(m.INDICATORS)[0], this._addEventListeners() } var i = r.prototype; return i.next = function() { this._isSliding || this._slide(c.NEXT) }, i.nextWhenVisible = function() { document.hidden || this.next() }, i.prev = function() { this._isSliding || this._slide(c.PREV) }, i.pause = function(t) { t || (this._isPaused = !0), e(this._element).find(m.NEXT_PREV)[0] && l.supportsTransitionEnd() && (l.triggerTransitionEnd(this._element), this.cycle(!0)), clearInterval(this._interval), this._interval = null }, i.cycle = function(e) { e || (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)) }, i.to = function(t) { var n = this; this._activeElement = e(this._element).find(m.ACTIVE_ITEM)[0]; var o = this._getItemIndex(this._activeElement); if (!(t > this._items.length - 1 || 0 > t)) { if (this._isSliding) return void e(this._element).one(_.SLID, function() { return n.to(t) }); if (o === t) return this.pause(), void this.cycle(); var a = t > o ? c.NEXT : c.PREV; this._slide(a, this._items[t]) } }, i.dispose = function() { e(this._element).off(a), e.removeData(this._element, n), this._items = null, this._config = null, this._element = null, this._interval = null, this._isPaused = null, this._isSliding = null, this._activeElement = null, this._indicatorsElement = null }, i._getConfig = function(n) { return n = e.extend({}, s, n), l.typeCheckConfig(t, n, d), n }, i._addEventListeners = function() { var t = this; this._config.keyboard && e(this._element).on(_.KEYDOWN, function(e) { return t._keydown(e) }), 'hover' === this._config.pause && (e(this._element).on(_.MOUSEENTER, function(e) { return t.pause(e) }).on(_.MOUSELEAVE, function(e) { return t.cycle(e) }), 'ontouchstart' in document.documentElement && e(this._element).on(_.TOUCHEND, function() { t.pause(), t.touchTimeout && clearTimeout(t.touchTimeout), t.touchTimeout = setTimeout(function(e) { return t.cycle(e) }, 500 + t._config.interval) })) }, i._keydown = function(e) { if (!/input|textarea/i.test(e.target.tagName)) switch (e.which) { case 37: e.preventDefault(), this.prev(); break; case 39: e.preventDefault(), this.next(); break; default: } }, i._getItemIndex = function(t) { return this._items = e.makeArray(e(t).parent().find(m.ITEM)), this._items.indexOf(t) }, i._getItemByDirection = function(e, t) { var n = e === c.NEXT, o = e === c.PREV, a = this._getItemIndex(t), r = this._items.length - 1; if ((o && 0 === a || n && a === r) && !this._config.wrap) return t; var i = e === c.PREV ? -1 : 1, l = (a + i) % this._items.length; return -1 == l ? this._items[this._items.length - 1] : this._items[l] }, i._triggerSlideEvent = function(t, n) { var o = this._getItemIndex(t), a = this._getItemIndex(e(this._element).find(m.ACTIVE_ITEM)[0]), r = e.Event(_.SLIDE, { relatedTarget: t, direction: n, from: a, to: o }); return e(this._element).trigger(r), r }, i._setActiveIndicatorElement = function(t) { if (this._indicatorsElement) { e(this._indicatorsElement).find(m.ACTIVE).removeClass(p.ACTIVE); var n = this._indicatorsElement.children[this._getItemIndex(t)]; n && e(n).addClass(p.ACTIVE) } }, i._slide = function(t, n) { var o, a, r, i = this, s = e(this._element).find(m.ACTIVE_ITEM)[0], d = this._getItemIndex(s), g = n || s && this._getItemByDirection(t, s), f = this._getItemIndex(g), u = !!this._interval; if (t === c.NEXT ? (o = p.LEFT, a = p.NEXT, r = c.LEFT) : (o = p.RIGHT, a = p.PREV, r = c.RIGHT), g && e(g).hasClass(p.ACTIVE)) return void(this._isSliding = !1); var E = this._triggerSlideEvent(g, r); if (!E.isDefaultPrevented() && s && g) { this._isSliding = !0, u && this.pause(), this._setActiveIndicatorElement(g); var h = e.Event(_.SLID, { relatedTarget: g, direction: r, from: d, to: f }); l.supportsTransitionEnd() && e(this._element).hasClass(p.SLIDE) ? (e(g).addClass(a), l.reflow(g), e(s).addClass(o), e(g).addClass(o), e(s).one(l.TRANSITION_END, function() { e(g).removeClass(o + ' ' + a).addClass(p.ACTIVE), e(s).removeClass(p.ACTIVE + ' ' + a + ' ' + o), i._isSliding = !1, setTimeout(function() { return e(i._element).trigger(h) }, 0) }).emulateTransitionEnd(600)) : (e(s).removeClass(p.ACTIVE), e(g).addClass(p.ACTIVE), this._isSliding = !1, e(this._element).trigger(h)), u && this.cycle() } }, r._jQueryInterface = function(t) { return this.each(function() { var o = e(this).data(n), a = e.extend({}, s, e(this).data()); 'object' == typeof t && e.extend(a, t); var i = 'string' == typeof t ? t : a.slide; if (o || (o = new r(this, a), e(this).data(n, o)), 'number' == typeof t) o.to(t); else if ('string' == typeof i) { if (void 0 === o[i]) throw new Error('No method named "' + i + '"'); o[i]() } else a.interval && (o.pause(), o.cycle()) }) }, r._dataApiClickHandler = function(t) { var o = l.getSelectorFromElement(this); if (o) { var a = e(o)[0]; if (a && e(a).hasClass(p.CAROUSEL)) { var i = e.extend({}, e(a).data(), e(this).data()), s = this.getAttribute('data-slide-to'); s && (i.interval = !1), r._jQueryInterface.call(e(a), i), s && e(a).data(n).to(s), t.preventDefault() } } }, o(r, null, [{ key: 'VERSION', get: function() { return '4.0.0-beta' } }, { key: 'Default', get: function() { return s } }]), r }(); return e(document).on(_.CLICK_DATA_API, m.DATA_SLIDE, g._dataApiClickHandler), e(window).on(_.LOAD_DATA_API, function() { e(m.DATA_RIDE).each(function() { var t = e(this); g._jQueryInterface.call(t, t.data()) }) }), e.fn[t] = g._jQueryInterface, e.fn[t].Constructor = g, e.fn[t].noConflict = function() { return e.fn[t] = i, g._jQueryInterface }, g }(jQuery), _ = function(e) { var t = 'collapse', n = 'bs.collapse', r = '.' + n, i = e.fn[t], s = 600, d = { toggle: !0, parent: '' }, c = { toggle: 'boolean', parent: '(string|element)' }, _ = { SHOW: 'show' + r, SHOWN: 'shown' + r, HIDE: 'hide' + r, HIDDEN: 'hidden' + r, CLICK_DATA_API: 'click' + r + '.data-api' }, p = { SHOW: 'show', COLLAPSE: 'collapse', COLLAPSING: 'collapsing', COLLAPSED: 'collapsed' }, m = { WIDTH: 'width', HEIGHT: 'height' }, g = { ACTIVES: '.show, .collapsing', DATA_TOGGLE: '[data-toggle="collapse"]' }, f = function() { function r(t, n) { this._isTransitioning = !1, this._element = t, this._config = this._getConfig(n), this._triggerArray = e.makeArray(e('[data-toggle="collapse"][href="#' + t.id + '"],' + ('[data-toggle="collapse"][data-target="#' + t.id + '"]'))); for (var o = e(g.DATA_TOGGLE), a = 0; a < o.length; a++) { var r = o[a], i = l.getSelectorFromElement(r); null !== i && 0 < e(i).filter(t).length && (this._selector = i, this._triggerArray.push(r)) } this._parent = this._config.parent ? this._getParent() : null, this._config.parent || this._addAriaAndCollapsedClass(this._element, this._triggerArray), this._config.toggle && this.toggle() } var i = r.prototype; return i.toggle = function() { e(this._element).hasClass(p.SHOW) ? this.hide() : this.show() }, i.show = function() { var t = this; if (!(this._isTransitioning || e(this._element).hasClass(p.SHOW))) { var o, a; if (this._parent && (o = e.makeArray(e(this._parent).find(g.ACTIVES).filter('[data-parent="' + this._config.parent + '"]')), 0 === o.length && (o = null)), !(o && (a = e(o).not(this._selector).data(n), a && a._isTransitioning))) { var i = e.Event(_.SHOW); if (e(this._element).trigger(i), !i.isDefaultPrevented()) { o && (r._jQueryInterface.call(e(o).not(this._selector), 'hide'), !a && e(o).data(n, null)); var d = this._getDimension(); e(this._element).removeClass(p.COLLAPSE).addClass(p.COLLAPSING), this._element.style[d] = 0, 0 < this._triggerArray.length && e(this._triggerArray).removeClass(p.COLLAPSED).attr('aria-expanded', !0), this.setTransitioning(!0); var c = function() { e(t._element).removeClass(p.COLLAPSING).addClass(p.COLLAPSE).addClass(p.SHOW), t._element.style[d] = '', t.setTransitioning(!1), e(t._element).trigger(_.SHOWN) }; if (!l.supportsTransitionEnd()) return void c(); var m = d[0].toUpperCase() + d.slice(1); e(this._element).one(l.TRANSITION_END, c).emulateTransitionEnd(s), this._element.style[d] = this._element['scroll' + m] + 'px' } } } }, i.hide = function() { var t = this; if (!this._isTransitioning && e(this._element).hasClass(p.SHOW)) { var n = e.Event(_.HIDE); if (e(this._element).trigger(n), !n.isDefaultPrevented()) { var o = this._getDimension(); if (this._element.style[o] = this._element.getBoundingClientRect()[o] + 'px', l.reflow(this._element), e(this._element).addClass(p.COLLAPSING).removeClass(p.COLLAPSE).removeClass(p.SHOW), 0 < this._triggerArray.length) for (var a = 0; a < this._triggerArray.length; a++) { var r = this._triggerArray[a], i = l.getSelectorFromElement(r); if (null !== i) { var d = e(i); d.hasClass(p.SHOW) || e(r).addClass(p.COLLAPSED).attr('aria-expanded', !1) } } this.setTransitioning(!0); var c = function() { t.setTransitioning(!1), e(t._element).removeClass(p.COLLAPSING).addClass(p.COLLAPSE).trigger(_.HIDDEN) }; return this._element.style[o] = '', l.supportsTransitionEnd() ? void e(this._element).one(l.TRANSITION_END, c).emulateTransitionEnd(s) : void c() } } }, i.setTransitioning = function(e) { this._isTransitioning = e }, i.dispose = function() { e.removeData(this._element, n), this._config = null, this._parent = null, this._element = null, this._triggerArray = null, this._isTransitioning = null }, i._getConfig = function(e) { return e = a({}, d, e), e.toggle = !!e.toggle, l.typeCheckConfig(t, e, c), e }, i._getDimension = function() { var t = e(this._element).hasClass(m.WIDTH); return t ? m.WIDTH : m.HEIGHT }, i._getParent = function() { var t = this, n = null; l.isElement(this._config.parent) ? (n = this._config.parent, 'undefined' != typeof this._config.parent.jquery && (n = this._config.parent[0])) : n = e(this._config.parent)[0]; var o = '[data-toggle="collapse"][data-parent="' + this._config.parent + '"]'; return e(n).find(o).each(function(e, n) { t._addAriaAndCollapsedClass(r._getTargetFromElement(n), [n]) }), n }, i._addAriaAndCollapsedClass = function(t, n) { if (t) { var o = e(t).hasClass(p.SHOW); 0 < n.length && e(n).toggleClass(p.COLLAPSED, !o).attr('aria-expanded', o) } }, r._getTargetFromElement = function(t) { var n = l.getSelectorFromElement(t); return n ? e(n)[0] : null }, r._jQueryInterface = function(t) { return this.each(function() { var o = e(this), i = o.data(n), l = a({}, d, o.data(), 'object' == typeof t && t); if (!i && l.toggle && /show|hide/.test(t) && (l.toggle = !1), i || (i = new r(this, l), o.data(n, i)), 'string' == typeof t) { if ('undefined' == typeof i[t]) throw new TypeError('No method named "' + t + '"'); i[t]() } }) }, o(r, null, [{ key: 'VERSION', get: function() { return '4.0.0' } }, { key: 'Default', get: function() { return d } }]), r }(); return e(document).on(_.CLICK_DATA_API, g.DATA_TOGGLE, function(t) { 'A' === t.currentTarget.tagName && t.preventDefault(); var o = e(this), a = l.getSelectorFromElement(this); e(a).each(function() { var t = e(this), a = t.data(n), r = a ? 'toggle' : o.data(); f._jQueryInterface.call(t, r) }) }), e.fn[t] = f._jQueryInterface, e.fn[t].Constructor = f, e.fn[t].noConflict = function() { return e.fn[t] = i, f._jQueryInterface }, f }(e), p = function(e) { var t = 'modal', n = 'bs.modal', r = '.' + n, i = e.fn[t], s = 300, d = 150, c = { backdrop: !0, keyboard: !0, focus: !0, show: !0 }, _ = { backdrop: '(boolean|string)', keyboard: 'boolean', focus: 'boolean', show: 'boolean' }, p = { HIDE: 'hide' + r, HIDDEN: 'hidden' + r, SHOW: 'show' + r, SHOWN: 'shown' + r, FOCUSIN: 'focusin' + r, RESIZE: 'resize' + r, CLICK_DISMISS: 'click.dismiss' + r, KEYDOWN_DISMISS: 'keydown.dismiss' + r, MOUSEUP_DISMISS: 'mouseup.dismiss' + r, MOUSEDOWN_DISMISS: 'mousedown.dismiss' + r, CLICK_DATA_API: 'click' + r + '.data-api' }, m = { SCROLLBAR_MEASURER: 'modal-scrollbar-measure', BACKDROP: 'modal-backdrop', OPEN: 'modal-open', FADE: 'fade', SHOW: 'show' }, g = { DIALOG: '.modal-dialog', DATA_TOGGLE: '[data-toggle="modal"]', DATA_DISMISS: '[data-dismiss="modal"]', FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top', STICKY_CONTENT: '.sticky-top', NAVBAR_TOGGLER: '.navbar-toggler' }, f = function() { function i(t, n) { this._config = this._getConfig(n), this._element = t, this._dialog = e(t).find(g.DIALOG)[0], this._backdrop = null, this._isShown = !1, this._isBodyOverflowing = !1, this._ignoreBackdropClick = !1, this._originalBodyPadding = 0, this._scrollbarWidth = 0 } var f = i.prototype; return f.toggle = function(e) { return this._isShown ? this.hide() : this.show(e) }, f.show = function(t) { var n = this; if (!(this._isTransitioning || this._isShown)) { l.supportsTransitionEnd() && e(this._element).hasClass(m.FADE) && (this._isTransitioning = !0); var o = e.Event(p.SHOW, { relatedTarget: t }); e(this._element).trigger(o), this._isShown || o.isDefaultPrevented() || (this._isShown = !0, this._checkScrollbar(), this._setScrollbar(), this._adjustDialog(), e(document.body).addClass(m.OPEN), this._setEscapeEvent(), this._setResizeEvent(), e(this._element).on(p.CLICK_DISMISS, g.DATA_DISMISS, function(e) { return n.hide(e) }), e(this._dialog).on(p.MOUSEDOWN_DISMISS, function() { e(n._element).one(p.MOUSEUP_DISMISS, function(t) { e(t.target).is(n._element) && (n._ignoreBackdropClick = !0) }) }), this._showBackdrop(function() { return n._showElement(t) })) } }, f.hide = function(t) { var n = this; if (t && t.preventDefault(), !this._isTransitioning && this._isShown) { var o = e.Event(p.HIDE); if (e(this._element).trigger(o), this._isShown && !o.isDefaultPrevented()) { this._isShown = !1; var a = l.supportsTransitionEnd() && e(this._element).hasClass(m.FADE); a && (this._isTransitioning = !0), this._setEscapeEvent(), this._setResizeEvent(), e(document).off(p.FOCUSIN), e(this._element).removeClass(m.SHOW), e(this._element).off(p.CLICK_DISMISS), e(this._dialog).off(p.MOUSEDOWN_DISMISS), a ? e(this._element).one(l.TRANSITION_END, function(e) { return n._hideModal(e) }).emulateTransitionEnd(s) : this._hideModal() } } }, f.dispose = function() { e.removeData(this._element, n), e(window, document, this._element, this._backdrop).off(r), this._config = null, this._element = null, this._dialog = null, this._backdrop = null, this._isShown = null, this._isBodyOverflowing = null, this._ignoreBackdropClick = null, this._scrollbarWidth = null }, f.handleUpdate = function() { this._adjustDialog() }, f._getConfig = function(e) { return e = a({}, c, e), l.typeCheckConfig(t, e, _), e }, f._showElement = function(t) { var n = this, o = l.supportsTransitionEnd() && e(this._element).hasClass(m.FADE); 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.scrollTop = 0, o && l.reflow(this._element), e(this._element).addClass(m.SHOW), this._config.focus && this._enforceFocus(); var a = e.Event(p.SHOWN, { relatedTarget: t }), r = function() { n._config.focus && n._element.focus(), n._isTransitioning = !1, e(n._element).trigger(a) }; o ? e(this._dialog).one(l.TRANSITION_END, r).emulateTransitionEnd(s) : r() }, f._enforceFocus = function() { var t = this; e(document).off(p.FOCUSIN).on(p.FOCUSIN, function(n) { document !== n.target && t._element !== n.target && 0 === e(t._element).has(n.target).length && t._element.focus() }) }, f._setEscapeEvent = function() { var t = this; this._isShown && this._config.keyboard ? e(this._element).on(p.KEYDOWN_DISMISS, function(e) { e.which === 27 && (e.preventDefault(), t.hide()) }) : !this._isShown && e(this._element).off(p.KEYDOWN_DISMISS) }, f._setResizeEvent = function() { var t = this; this._isShown ? e(window).on(p.RESIZE, function(e) { return t.handleUpdate(e) }) : e(window).off(p.RESIZE) }, f._hideModal = function() { var t = this; this._element.style.display = 'none', this._element.setAttribute('aria-hidden', !0), this._isTransitioning = !1, this._showBackdrop(function() { e(document.body).removeClass(m.OPEN), t._resetAdjustments(), t._resetScrollbar(), e(t._element).trigger(p.HIDDEN) }) }, f._removeBackdrop = function() { this._backdrop && (e(this._backdrop).remove(), this._backdrop = null) }, f._showBackdrop = function(t) { var n = this, o = e(this._element).hasClass(m.FADE) ? m.FADE : ''; if (this._isShown && this._config.backdrop) { var a = l.supportsTransitionEnd() && o; if (this._backdrop = document.createElement('div'), this._backdrop.className = m.BACKDROP, o && e(this._backdrop).addClass(o), e(this._backdrop).appendTo(document.body), e(this._element).on(p.CLICK_DISMISS, function(e) { return n._ignoreBackdropClick ? void(n._ignoreBackdropClick = !1) : void(e.target !== e.currentTarget || ('static' === n._config.backdrop ? n._element.focus() : n.hide())) }), a && l.reflow(this._backdrop), e(this._backdrop).addClass(m.SHOW), !t) return; if (!a) return void t(); e(this._backdrop).one(l.TRANSITION_END, t).emulateTransitionEnd(d) } else if (!this._isShown && this._backdrop) { e(this._backdrop).removeClass(m.SHOW); var r = function() { n._removeBackdrop(), t && t() }; l.supportsTransitionEnd() && e(this._element).hasClass(m.FADE) ? e(this._backdrop).one(l.TRANSITION_END, r).emulateTransitionEnd(d) : r() } else t && t() }, f._adjustDialog = function() { var e = this._element.scrollHeight > document.documentElement.clientHeight; !this._isBodyOverflowing && e && (this._element.style.paddingLeft = this._scrollbarWidth + 'px'), this._isBodyOverflowing && !e && (this._element.style.paddingRight = this._scrollbarWidth + 'px') }, f._resetAdjustments = function() { this._element.style.paddingLeft = '', this._element.style.paddingRight = '' }, f._checkScrollbar = function() { var e = document.body.getBoundingClientRect(); this._isBodyOverflowing = e.left + e.right < window.innerWidth, this._scrollbarWidth = this._getScrollbarWidth() }, f._setScrollbar = function() { var t = this; if (this._isBodyOverflowing) { e(g.FIXED_CONTENT).each(function(n, o) { var a = e(o)[0].style.paddingRight, r = e(o).css('padding-right'); e(o).data('padding-right', a).css('padding-right', parseFloat(r) + t._scrollbarWidth + 'px') }), e(g.STICKY_CONTENT).each(function(n, o) { var a = e(o)[0].style.marginRight, r = e(o).css('margin-right'); e(o).data('margin-right', a).css('margin-right', parseFloat(r) - t._scrollbarWidth + 'px') }), e(g.NAVBAR_TOGGLER).each(function(n, o) { var a = e(o)[0].style.marginRight, r = e(o).css('margin-right'); e(o).data('margin-right', a).css('margin-right', parseFloat(r) + t._scrollbarWidth + 'px') }); var n = document.body.style.paddingRight, o = e('body').css('padding-right'); e('body').data('padding-right', n).css('padding-right', parseFloat(o) + this._scrollbarWidth + 'px') } }, f._resetScrollbar = function() { e(g.FIXED_CONTENT).each(function(t, n) { var o = e(n).data('padding-right'); 'undefined' != typeof o && e(n).css('padding-right', o).removeData('padding-right') }), e(g.STICKY_CONTENT + ', ' + g.NAVBAR_TOGGLER).each(function(t, n) { var o = e(n).data('margin-right'); 'undefined' != typeof o && e(n).css('margin-right', o).removeData('margin-right') }); var t = e('body').data('padding-right'); 'undefined' != typeof t && e('body').css('padding-right', t).removeData('padding-right') }, f._getScrollbarWidth = function() { var e = document.createElement('div'); e.className = m.SCROLLBAR_MEASURER, document.body.appendChild(e); var t = e.getBoundingClientRect().width - e.clientWidth; return document.body.removeChild(e), t }, i._jQueryInterface = function(t, o) { return this.each(function() { var r = e(this).data(n), l = a({}, i.Default, e(this).data(), 'object' == typeof t && t); if (r || (r = new i(this, l), e(this).data(n, r)), 'string' == typeof t) { if ('undefined' == typeof r[t]) throw new TypeError('No method named "' + t + '"'); r[t](o) } else l.show && r.show(o) }) }, o(i, null, [{ key: 'VERSION', get: function() { return '4.0.0' } }, { key: 'Default', get: function() { return c } }]), i }(); return e(document).on(p.CLICK_DATA_API, g.DATA_TOGGLE, function(t) { var o, r = this, i = l.getSelectorFromElement(this); i && (o = e(i)[0]); var s = e(o).data(n) ? 'toggle' : a({}, e(o).data(), e(this).data()); ('A' === this.tagName || 'AREA' === this.tagName) && t.preventDefault(); var d = e(o).one(p.SHOW, function(t) { t.isDefaultPrevented() || d.one(p.HIDDEN, function() { e(r).is(':visible') && r.focus() }) }); f._jQueryInterface.call(e(o), s, this) }), e.fn[t] = f._jQueryInterface, e.fn[t].Constructor = f, e.fn[t].noConflict = function() { return e.fn[t] = i, f._jQueryInterface }, f }(e), m = function(e) { var n = 'tooltip', r = 'bs.tooltip', i = '.' + r, s = e.fn[n], d = /(^|\s)bs-tooltip\S+/g, c = { animation: 'boolean', template: 'string', title: '(string|element|function)', trigger: 'string', delay: '(number|object)', html: 'boolean', selector: '(string|boolean)', placement: '(string|function)', offset: '(number|string)', container: '(string|element|boolean)', fallbackPlacement: '(string|array)', boundary: '(string|element)' }, _ = { AUTO: 'auto', TOP: 'top', RIGHT: 'right', BOTTOM: 'bottom', LEFT: 'left' }, p = { animation: !0, template: '', trigger: 'hover focus', title: '', delay: 0, html: !1, selector: !1, placement: 'top', offset: 0, container: !1, fallbackPlacement: 'flip', boundary: 'scrollParent' }, m = { SHOW: 'show', OUT: 'out' }, g = { HIDE: 'hide' + i, HIDDEN: 'hidden' + i, SHOW: 'show' + i, SHOWN: 'shown' + i, INSERTED: 'inserted' + i, CLICK: 'click' + i, FOCUSIN: 'focusin' + i, FOCUSOUT: 'focusout' + i, MOUSEENTER: 'mouseenter' + i, MOUSELEAVE: 'mouseleave' + i }, f = { FADE: 'fade', SHOW: 'show' }, u = { TOOLTIP: '.tooltip', TOOLTIP_INNER: '.tooltip-inner', ARROW: '.arrow' }, E = { HOVER: 'hover', FOCUS: 'focus', CLICK: 'click', MANUAL: 'manual' }, h = function() { function s(e, n) { if ('undefined' == typeof t) throw new TypeError('Bootstrap tooltips require Popper.js (https://popper.js.org)'); this._isEnabled = !0, this._timeout = 0, this._hoverState = '', this._activeTrigger = {}, this._popper = null, this.element = e, this.config = this._getConfig(n), this.tip = null, this._setListeners() } var h = s.prototype; return h.enable = function() { this._isEnabled = !0 }, h.disable = function() { this._isEnabled = !1 }, h.toggleEnabled = function() { this._isEnabled = !this._isEnabled }, h.toggle = function(t) { if (this._isEnabled) if (t) { var n = this.constructor.DATA_KEY, o = e(t.currentTarget).data(n); o || (o = new this.constructor(t.currentTarget, this._getDelegateConfig()), e(t.currentTarget).data(n, o)), o._activeTrigger.click = !o._activeTrigger.click, o._isWithActiveTrigger() ? o._enter(null, o) : o._leave(null, o) } else { if (e(this.getTipElement()).hasClass(f.SHOW)) return void this._leave(null, this); this._enter(null, this) } }, h.dispose = function() { clearTimeout(this._timeout), e.removeData(this.element, this.constructor.DATA_KEY), e(this.element).off(this.constructor.EVENT_KEY), e(this.element).closest('.modal').off('hide.bs.modal'), this.tip && e(this.tip).remove(), this._isEnabled = null, this._timeout = null, this._hoverState = null, this._activeTrigger = null, null !== this._popper && this._popper.destroy(), this._popper = null, this.element = null, this.config = null, this.tip = null }, h.show = function() { var n = this; if ('none' === e(this.element).css('display')) throw new Error('Please use show on visible elements'); var o = e.Event(this.constructor.Event.SHOW); if (this.isWithContent() && this._isEnabled) { e(this.element).trigger(o); var a = e.contains(this.element.ownerDocument.documentElement, this.element); if (o.isDefaultPrevented() || !a) return; var r = this.getTipElement(), i = l.getUID(this.constructor.NAME); r.setAttribute('id', i), this.element.setAttribute('aria-describedby', i), this.setContent(), this.config.animation && e(r).addClass(f.FADE); var d = 'function' == typeof this.config.placement ? this.config.placement.call(this, r, this.element) : this.config.placement, c = this._getAttachment(d); this.addAttachmentClass(c); var _ = !1 === this.config.container ? document.body : e(this.config.container); e(r).data(this.constructor.DATA_KEY, this), e.contains(this.element.ownerDocument.documentElement, this.tip) || e(r).appendTo(_), e(this.element).trigger(this.constructor.Event.INSERTED), this._popper = new t(this.element, r, { placement: c, modifiers: { offset: { offset: this.config.offset }, flip: { behavior: this.config.fallbackPlacement }, arrow: { element: u.ARROW }, preventOverflow: { boundariesElement: this.config.boundary } }, onCreate: function(e) { e.originalPlacement !== e.placement && n._handlePopperPlacementChange(e) }, onUpdate: function(e) { n._handlePopperPlacementChange(e) } }), e(r).addClass(f.SHOW), 'ontouchstart' in document.documentElement && e('body').children().on('mouseover', null, e.noop); var p = function() { n.config.animation && n._fixTransition(); var t = n._hoverState; n._hoverState = null, e(n.element).trigger(n.constructor.Event.SHOWN), t === m.OUT && n._leave(null, n) }; l.supportsTransitionEnd() && e(this.tip).hasClass(f.FADE) ? e(this.tip).one(l.TRANSITION_END, p).emulateTransitionEnd(s._TRANSITION_DURATION) : p() } }, h.hide = function(t) { var n = this, o = this.getTipElement(), a = e.Event(this.constructor.Event.HIDE), r = function() { n._hoverState !== m.SHOW && o.parentNode && o.parentNode.removeChild(o), n._cleanTipClass(), n.element.removeAttribute('aria-describedby'), e(n.element).trigger(n.constructor.Event.HIDDEN), null !== n._popper && n._popper.destroy(), t && t() }; e(this.element).trigger(a), a.isDefaultPrevented() || (e(o).removeClass(f.SHOW), 'ontouchstart' in document.documentElement && e('body').children().off('mouseover', null, e.noop), this._activeTrigger[E.CLICK] = !1, this._activeTrigger[E.FOCUS] = !1, this._activeTrigger[E.HOVER] = !1, l.supportsTransitionEnd() && e(this.tip).hasClass(f.FADE) ? e(o).one(l.TRANSITION_END, r).emulateTransitionEnd(150) : r(), this._hoverState = '') }, h.update = function() { null !== this._popper && this._popper.scheduleUpdate() }, h.isWithContent = function() { return !!this.getTitle() }, h.addAttachmentClass = function(t) { e(this.getTipElement()).addClass('bs-tooltip' + '-' + t) }, h.getTipElement = function() { return this.tip = this.tip || e(this.config.template)[0], this.tip }, h.setContent = function() { var t = e(this.getTipElement()); this.setElementContent(t.find(u.TOOLTIP_INNER), this.getTitle()), t.removeClass(f.FADE + ' ' + f.SHOW) }, h.setElementContent = function(t, n) { var o = this.config.html; 'object' == typeof n && (n.nodeType || n.jquery) ? o ? !e(n).parent().is(t) && t.empty().append(n) : t.text(e(n).text()) : t[o ? 'html' : 'text'](n) }, h.getTitle = function() { var e = this.element.getAttribute('data-original-title'); return e || (e = 'function' == typeof this.config.title ? this.config.title.call(this.element) : this.config.title), e }, h._getAttachment = function(e) { return _[e.toUpperCase()] }, h._setListeners = function() { var t = this, n = this.config.trigger.split(' '); n.forEach(function(n) { if ('click' === n) e(t.element).on(t.constructor.Event.CLICK, t.config.selector, function(e) { return t.toggle(e) }); else if (n !== E.MANUAL) { var o = n === E.HOVER ? t.constructor.Event.MOUSEENTER : t.constructor.Event.FOCUSIN, a = n === E.HOVER ? t.constructor.Event.MOUSELEAVE : t.constructor.Event.FOCUSOUT; e(t.element).on(o, t.config.selector, function(e) { return t._enter(e) }).on(a, t.config.selector, function(e) { return t._leave(e) }) } e(t.element).closest('.modal').on('hide.bs.modal', function() { return t.hide() }) }), this.config.selector ? this.config = a({}, this.config, { trigger: 'manual', selector: '' }) : this._fixTitle() }, h._fixTitle = function() { var e = typeof this.element.getAttribute('data-original-title'); (this.element.getAttribute('title') || 'string' != e) && (this.element.setAttribute('data-original-title', this.element.getAttribute('title') || ''), this.element.setAttribute('title', '')) }, h._enter = function(t, n) { var o = this.constructor.DATA_KEY; return (n = n || e(t.currentTarget).data(o), n || (n = new this.constructor(t.currentTarget, this._getDelegateConfig()), e(t.currentTarget).data(o, n)), t && (n._activeTrigger['focusin' === t.type ? E.FOCUS : E.HOVER] = !0), e(n.getTipElement()).hasClass(f.SHOW) || n._hoverState === m.SHOW) ? void(n._hoverState = m.SHOW) : (clearTimeout(n._timeout), n._hoverState = m.SHOW, n.config.delay && n.config.delay.show ? void(n._timeout = setTimeout(function() { n._hoverState === m.SHOW && n.show() }, n.config.delay.show)) : void n.show()) }, h._leave = function(t, n) { var o = this.constructor.DATA_KEY; if (n = n || e(t.currentTarget).data(o), n || (n = new this.constructor(t.currentTarget, this._getDelegateConfig()), e(t.currentTarget).data(o, n)), t && (n._activeTrigger['focusout' === t.type ? E.FOCUS : E.HOVER] = !1), !n._isWithActiveTrigger()) return clearTimeout(n._timeout), n._hoverState = m.OUT, n.config.delay && n.config.delay.hide ? void(n._timeout = setTimeout(function() { n._hoverState === m.OUT && n.hide() }, n.config.delay.hide)) : void n.hide() }, h._isWithActiveTrigger = function() { for (var e in this._activeTrigger) if (this._activeTrigger[e]) return !0; return !1 }, h._getConfig = function(t) { return t = a({}, this.constructor.Default, e(this.element).data(), t), 'number' == typeof 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()), l.typeCheckConfig(n, t, this.constructor.DefaultType), t }, h._getDelegateConfig = function() { var e = {}; if (this.config) for (var t in this.config) this.constructor.Default[t] !== this.config[t] && (e[t] = this.config[t]); return e }, h._cleanTipClass = function() { var t = e(this.getTipElement()), n = t.attr('class').match(d); null !== n && 0 < n.length && t.removeClass(n.join('')) }, h._handlePopperPlacementChange = function(e) { this._cleanTipClass(), this.addAttachmentClass(this._getAttachment(e.placement)) }, h._fixTransition = function() { var t = this.getTipElement(), n = this.config.animation; null !== t.getAttribute('x-placement') || (e(t).removeClass(f.FADE), this.config.animation = !1, this.hide(), this.show(), this.config.animation = n) }, s._jQueryInterface = function(t) { return this.each(function() { var n = e(this).data(r); if ((n || !/dispose|hide/.test(t)) && (n || (n = new s(this, 'object' == typeof t && t), e(this).data(r, n)), 'string' == typeof t)) { if ('undefined' == typeof n[t]) throw new TypeError('No method named "' + t + '"'); n[t]() } }) }, o(s, null, [{ key: 'VERSION', get: function() { return '4.0.0' } }, { key: 'Default', get: function() { return p } }, { key: 'NAME', get: function() { return n } }, { key: 'DATA_KEY', get: function() { return r } }, { key: 'Event', get: function() { return g } }, { key: 'EVENT_KEY', get: function() { return i } }, { key: 'DefaultType', get: function() { return c } }]), s }(); return e.fn[n] = h._jQueryInterface, e.fn[n].Constructor = h, e.fn[n].noConflict = function() { return e.fn[n] = s, h._jQueryInterface }, h }(e, t), g = function(e) { var t = 'popover', n = 'bs.popover', i = '.' + n, l = e.fn[t], s = /(^|\s)bs-popover\S+/g, d = a({}, m.Default, { placement: 'right', trigger: 'click', content: '', template: '' }), c = a({}, m.DefaultType, { content: '(string|element|function)' }), _ = { FADE: 'fade', SHOW: 'show' }, p = { TITLE: '.popover-header', CONTENT: '.popover-body' }, g = { HIDE: 'hide' + i, HIDDEN: 'hidden' + i, SHOW: 'show' + i, SHOWN: 'shown' + i, INSERTED: 'inserted' + i, CLICK: 'click' + i, FOCUSIN: 'focusin' + i, FOCUSOUT: 'focusout' + i, MOUSEENTER: 'mouseenter' + i, MOUSELEAVE: 'mouseleave' + i }, f = function(a) { function l() { return a.apply(this, arguments) || this } r(l, a); var m = l.prototype; return m.isWithContent = function() { return this.getTitle() || this._getContent() }, m.addAttachmentClass = function(t) { e(this.getTipElement()).addClass('bs-popover' + '-' + t) }, m.getTipElement = function() { return this.tip = this.tip || e(this.config.template)[0], this.tip }, m.setContent = function() { var t = e(this.getTipElement()); this.setElementContent(t.find(p.TITLE), this.getTitle()); var n = this._getContent(); 'function' == typeof n && (n = n.call(this.element)), this.setElementContent(t.find(p.CONTENT), n), t.removeClass(_.FADE + ' ' + _.SHOW) }, m._getContent = function() { return this.element.getAttribute('data-content') || this.config.content }, m._cleanTipClass = function() { var t = e(this.getTipElement()), n = t.attr('class').match(s); null !== n && 0 < n.length && t.removeClass(n.join('')) }, l._jQueryInterface = function(t) { return this.each(function() { var o = e(this).data(n), a = 'object' == typeof t ? t : null; if ((o || !/destroy|hide/.test(t)) && (o || (o = new l(this, a), e(this).data(n, o)), 'string' == typeof t)) { if ('undefined' == typeof o[t]) throw new TypeError('No method named "' + t + '"'); o[t]() } }) }, o(l, null, [{ key: 'VERSION', get: function() { return '4.0.0' } }, { key: 'Default', get: function() { return d } }, { key: 'NAME', get: function() { return t } }, { key: 'DATA_KEY', get: function() { return n } }, { key: 'Event', get: function() { return g } }, { key: 'EVENT_KEY', get: function() { return i } }, { key: 'DefaultType', get: function() { return c } }]), l }(m); return e.fn[t] = f._jQueryInterface, e.fn[t].Constructor = f, e.fn[t].noConflict = function() { return e.fn[t] = l, f._jQueryInterface }, f }(e), f = function(e) { var t = 'scrollspy', n = 'bs.scrollspy', r = '.' + n, s = e.fn[t], d = { offset: 10, method: 'auto', target: '' }, c = { offset: 'number', method: 'string', target: '(string|element)' }, _ = { ACTIVATE: 'activate' + r, SCROLL: 'scroll' + r, LOAD_DATA_API: 'load' + r + '.data-api' }, p = { DROPDOWN_ITEM: 'dropdown-item', DROPDOWN_MENU: 'dropdown-menu', ACTIVE: 'active' }, m = { DATA_SPY: '[data-spy="scroll"]', ACTIVE: '.active', NAV_LIST_GROUP: '.nav, .list-group', NAV_LINKS: '.nav-link', NAV_ITEMS: '.nav-item', LIST_ITEMS: '.list-group-item', DROPDOWN: '.dropdown', DROPDOWN_ITEMS: '.dropdown-item', DROPDOWN_TOGGLE: '.dropdown-toggle' }, g = { OFFSET: 'offset', POSITION: 'position' }, f = function() { function s(t, n) { var o = this; this._element = t, this._scrollElement = 'BODY' === t.tagName ? window : t, this._config = this._getConfig(n), this._selector = this._config.target + ' ' + m.NAV_LINKS + ',' + (this._config.target + ' ' + m.LIST_ITEMS + ',') + (this._config.target + ' ' + m.DROPDOWN_ITEMS), this._offsets = [], this._targets = [], this._activeTarget = null, this._scrollHeight = 0, e(this._scrollElement).on(_.SCROLL, function(e) { return o._process(e) }), this.refresh(), this._process() } var f = s.prototype; return f.refresh = function() { var t = this, n = this._scrollElement === this._scrollElement.window ? g.OFFSET : g.POSITION, o = 'auto' === this._config.method ? n : this._config.method, a = o === g.POSITION ? this._getScrollTop() : 0; this._offsets = [], this._targets = [], this._scrollHeight = this._getScrollHeight(); var r = e.makeArray(e(this._selector)); r.map(function(t) { var n, r = l.getSelectorFromElement(t); if (r && (n = e(r)[0]), n) { var i = n.getBoundingClientRect(); if (i.width || i.height) return [e(n)[o]().top + a, r] } return null }).filter(function(e) { return e }).sort(function(e, t) { return e[0] - t[0] }).forEach(function(e) { t._offsets.push(e[0]), t._targets.push(e[1]) }) }, f.dispose = function() { e.removeData(this._element, n), e(this._scrollElement).off(r), this._element = null, this._scrollElement = null, this._config = null, this._selector = null, this._offsets = null, this._targets = null, this._activeTarget = null, this._scrollHeight = null }, f._getConfig = function(n) { if (n = a({}, d, n), 'string' != typeof n.target) { var o = e(n.target).attr('id'); o || (o = l.getUID(t), e(n.target).attr('id', o)), n.target = '#' + o } return l.typeCheckConfig(t, n, c), n }, f._getScrollTop = function() { return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop }, f._getScrollHeight = function() { return this._scrollElement.scrollHeight || i(document.body.scrollHeight, document.documentElement.scrollHeight) }, f._getOffsetHeight = function() { return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height }, f._process = function() { var e = this._getScrollTop() + this._config.offset, t = this._getScrollHeight(), n = this._config.offset + t - this._getOffsetHeight(); if (this._scrollHeight !== t && this.refresh(), e >= n) { var o = this._targets[this._targets.length - 1]; return void(this._activeTarget !== o && this._activate(o)) } if (this._activeTarget && e < this._offsets[0] && 0 < this._offsets[0]) return this._activeTarget = null, void this._clear(); for (var a, r = this._offsets.length; r--;) a = this._activeTarget !== this._targets[r] && e >= this._offsets[r] && ('undefined' == typeof this._offsets[r + 1] || e < this._offsets[r + 1]), a && this._activate(this._targets[r]) }, f._activate = function(t) { this._activeTarget = t, this._clear(); var n = this._selector.split(','); n = n.map(function(e) { return e + '[data-target="' + t + '"],' + (e + '[href="' + t + '"]') }); var o = e(n.join(',')); o.hasClass(p.DROPDOWN_ITEM) ? (o.closest(m.DROPDOWN).find(m.DROPDOWN_TOGGLE).addClass(p.ACTIVE), o.addClass(p.ACTIVE)) : (o.addClass(p.ACTIVE), o.parents(m.NAV_LIST_GROUP).prev(m.NAV_LINKS + ', ' + m.LIST_ITEMS).addClass(p.ACTIVE), o.parents(m.NAV_LIST_GROUP).prev(m.NAV_ITEMS).children(m.NAV_LINKS).addClass(p.ACTIVE)), e(this._scrollElement).trigger(_.ACTIVATE, { relatedTarget: t }) }, f._clear = function() { e(this._selector).filter(m.ACTIVE).removeClass(p.ACTIVE) }, s._jQueryInterface = function(t) { return this.each(function() { var o = e(this).data(n); if (o || (o = new s(this, 'object' == typeof t && t), e(this).data(n, o)), 'string' == typeof t) { if ('undefined' == typeof o[t]) throw new TypeError('No method named "' + t + '"'); o[t]() } }) }, o(s, null, [{ key: 'VERSION', get: function() { return '4.0.0' } }, { key: 'Default', get: function() { return d } }]), s }(); return e(window).on(_.LOAD_DATA_API, function() { for (var t, n = e.makeArray(e(m.DATA_SPY)), o = n.length; o--;) t = e(n[o]), f._jQueryInterface.call(t, t.data()) }), e.fn[t] = f._jQueryInterface, e.fn[t].Constructor = f, e.fn[t].noConflict = function() { return e.fn[t] = s, f._jQueryInterface }, f }(e), u = function(e) { var t = 'tab', n = 'bs.tab', a = '.' + n, r = e.fn[t], i = { HIDE: 'hide' + a, HIDDEN: 'hidden' + a, SHOW: 'show' + a, SHOWN: 'shown' + a, CLICK_DATA_API: 'click' + a + '.data-api' }, s = { DROPDOWN_MENU: 'dropdown-menu', ACTIVE: 'active', DISABLED: 'disabled', FADE: 'fade', SHOW: 'show' }, d = { DROPDOWN: '.dropdown', NAV_LIST_GROUP: '.nav, .list-group', ACTIVE: '.active', ACTIVE_UL: '> li > .active', DATA_TOGGLE: '[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]', DROPDOWN_TOGGLE: '.dropdown-toggle', DROPDOWN_ACTIVE_CHILD: '> .dropdown-menu .active' }, c = function() { function t(e) { this._element = e } var a = t.prototype; return a.show = function() { var t = this; if (!(this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && e(this._element).hasClass(s.ACTIVE) || e(this._element).hasClass(s.DISABLED))) { var n, o, a = e(this._element).closest(d.NAV_LIST_GROUP)[0], r = l.getSelectorFromElement(this._element); if (a) { var c = 'UL' === a.nodeName ? d.ACTIVE_UL : d.ACTIVE; o = e.makeArray(e(a).find(c)), o = o[o.length - 1] } var _ = e.Event(i.HIDE, { relatedTarget: this._element }), p = e.Event(i.SHOW, { relatedTarget: o }); if (o && e(o).trigger(_), e(this._element).trigger(p), !(p.isDefaultPrevented() || _.isDefaultPrevented())) { r && (n = e(r)[0]), this._activate(this._element, a); var m = function() { var n = e.Event(i.HIDDEN, { relatedTarget: t._element }), a = e.Event(i.SHOWN, { relatedTarget: o }); e(o).trigger(n), e(t._element).trigger(a) }; n ? this._activate(n, n.parentNode, m) : m() } } }, a.dispose = function() { e.removeData(this._element, n), this._element = null }, a._activate = function(t, n, o) { var a, r = this; a = 'UL' === n.nodeName ? e(n).find(d.ACTIVE_UL) : e(n).children(d.ACTIVE); var i = a[0], c = o && l.supportsTransitionEnd() && i && e(i).hasClass(s.FADE), _ = function() { return r._transitionComplete(t, i, o) }; i && c ? e(i).one(l.TRANSITION_END, _).emulateTransitionEnd(150) : _() }, a._transitionComplete = function(t, n, o) { if (n) { e(n).removeClass(s.SHOW + ' ' + s.ACTIVE); var a = e(n.parentNode).find(d.DROPDOWN_ACTIVE_CHILD)[0]; a && e(a).removeClass(s.ACTIVE), 'tab' === n.getAttribute('role') && n.setAttribute('aria-selected', !1) } if (e(t).addClass(s.ACTIVE), 'tab' === t.getAttribute('role') && t.setAttribute('aria-selected', !0), l.reflow(t), e(t).addClass(s.SHOW), t.parentNode && e(t.parentNode).hasClass(s.DROPDOWN_MENU)) { var r = e(t).closest(d.DROPDOWN)[0]; r && e(r).find(d.DROPDOWN_TOGGLE).addClass(s.ACTIVE), t.setAttribute('aria-expanded', !0) } o && o() }, t._jQueryInterface = function(o) { return this.each(function() { var a = e(this), r = a.data(n); if (r || (r = new t(this), a.data(n, r)), 'string' == typeof o) { if ('undefined' == typeof r[o]) throw new TypeError('No method named "' + o + '"'); r[o]() } }) }, o(t, null, [{ key: 'VERSION', get: function() { return '4.0.0' } }]), t }(); return e(document).on(i.CLICK_DATA_API, d.DATA_TOGGLE, function(t) { t.preventDefault(), c._jQueryInterface.call(e(this), 'show') }), e.fn[t] = c._jQueryInterface, e.fn[t].Constructor = c, e.fn[t].noConflict = function() { return e.fn[t] = r, c._jQueryInterface }, c }(e), E = function() { function e() { if (window.QUnit) return !1; var e = document.createElement('bmd'); for (var t in o) if (void 0 !== e.style[t]) return o[t]; return !1 } var t = !1, n = '', o = { WebkitTransition: 'webkitTransitionEnd', MozTransition: 'transitionend', OTransition: 'oTransitionEnd otransitionend', transition: 'transitionend' }; return function() { for (var a in t = e(), o) n += ' ' + o[a] }(), { transitionEndSupported: function() { return t }, transitionEndSelector: function() { return n }, isChar: function(e) { return !('undefined' != typeof e.which) || 'number' == typeof e.which && 0 < e.which && !e.ctrlKey && !e.metaKey && !e.altKey && 8 !== e.which && 9 !== e.which && 13 !== e.which && 16 !== e.which && 17 !== e.which && 20 !== e.which && 27 !== e.which }, assert: function(e, t, n) { if (t) throw void 0 === !e && e.css('border', '1px solid red'), console.error(n, e), n }, describe: function(e) { return void 0 === e ? 'undefined' : 0 === e.length ? '(no matching elements)' : e[0].outerHTML.split('>')[0] + '>' } } }(jQuery), h = function(e) { var t = { BMD_FORM_GROUP: 'bmd-form-group', IS_FILLED: 'is-filled', IS_FOCUSED: 'is-focused' }, n = { BMD_FORM_GROUP: '.' + t.BMD_FORM_GROUP }, o = {}, a = function() { function a(t, n, a) { for (var r in void 0 === a && (a = {}), this.$element = t, this.config = e.extend(!0, {}, o, n), a) this[r] = a[r] } var r = a.prototype; return r.dispose = function(e) { this.$element.data(e, null), this.$element = null, this.config = null }, r.addFormGroupFocus = function() { this.$element.prop('disabled') || this.$bmdFormGroup.addClass(t.IS_FOCUSED) }, r.removeFormGroupFocus = function() { this.$bmdFormGroup.removeClass(t.IS_FOCUSED) }, r.removeIsFilled = function() { this.$bmdFormGroup.removeClass(t.IS_FILLED) }, r.addIsFilled = function() { this.$bmdFormGroup.addClass(t.IS_FILLED) }, r.findMdbFormGroup = function(t) { void 0 === t && (t = !0); var o = this.$element.closest(n.BMD_FORM_GROUP); return 0 === o.length && t && e.error('Failed to find ' + n.BMD_FORM_GROUP + ' for ' + E.describe(this.$element)), o }, a }(); return a }(jQuery), A = function(e) { var t = { FORM_GROUP: 'form-group', BMD_FORM_GROUP: 'bmd-form-group', BMD_LABEL: 'bmd-label', BMD_LABEL_STATIC: 'bmd-label-static', BMD_LABEL_PLACEHOLDER: 'bmd-label-placeholder', BMD_LABEL_FLOATING: 'bmd-label-floating', HAS_DANGER: 'has-danger', IS_FILLED: 'is-filled', IS_FOCUSED: 'is-focused', INPUT_GROUP: 'input-group' }, n = { FORM_GROUP: '.' + t.FORM_GROUP, BMD_FORM_GROUP: '.' + t.BMD_FORM_GROUP, BMD_LABEL_WILDCARD: 'label[class^=\'' + t.BMD_LABEL + '\'], label[class*=\' ' + t.BMD_LABEL + '\']' }, o = { validate: !1, formGroup: { required: !1 }, bmdFormGroup: { template: '', create: !0, required: !0 }, label: { required: !1, selectors: ['.form-control-label', '> label'], className: t.BMD_LABEL_STATIC }, requiredClasses: [], invalidComponentMatches: [], convertInputSizeVariations: !0 }, a = { "form-control-lg": 'bmd-form-group-lg', "form-control-sm": 'bmd-form-group-sm' }, i = function(i) { function l(t, n, a) { var r; return void 0 === a && (a = {}), r = i.call(this, t, e.extend(!0, {}, o, n), a) || this, r._rejectInvalidComponentMatches(), r.rejectWithoutRequiredStructure(), r._rejectWithoutRequiredClasses(), r.$formGroup = r.findFormGroup(r.config.formGroup.required), r.$bmdFormGroup = r.resolveMdbFormGroup(), r.$bmdLabel = r.resolveMdbLabel(), r.resolveMdbFormGroupSizing(), r.addFocusListener(), r.addChangeListener(), '' != r.$element.val() && r.addIsFilled(), r } r(l, i); var s = l.prototype; return s.dispose = function(e) { i.prototype.dispose.call(this, e), this.$bmdFormGroup = null, this.$formGroup = null }, s.rejectWithoutRequiredStructure = function() {}, s.addFocusListener = function() { var e = this; this.$element.on('focus', function() { e.addFormGroupFocus() }).on('blur', function() { e.removeFormGroupFocus() }) }, s.addChangeListener = function() { var e = this; this.$element.on('keydown paste', function(t) { E.isChar(t) && e.addIsFilled() }).on('keyup change', function() { if (e.isEmpty() ? e.removeIsFilled() : e.addIsFilled(), e.config.validate) { var t = 'undefined' == typeof e.$element[0].checkValidity || e.$element[0].checkValidity(); t ? e.removeHasDanger() : e.addHasDanger() } }) }, s.addHasDanger = function() { this.$bmdFormGroup.addClass(t.HAS_DANGER) }, s.removeHasDanger = function() { this.$bmdFormGroup.removeClass(t.HAS_DANGER) }, s.isEmpty = function() { return null === this.$element.val() || void 0 === this.$element.val() || '' === this.$element.val() }, s.resolveMdbFormGroup = function() { var e = this.findMdbFormGroup(!1); return (void 0 === e || 0 === e.length) && (this.config.bmdFormGroup.create && (void 0 === this.$formGroup || 0 === this.$formGroup.length) ? this.outerElement().parent().hasClass(t.INPUT_GROUP) ? this.outerElement().parent().wrap(this.config.bmdFormGroup.template) : this.outerElement().wrap(this.config.bmdFormGroup.template) : this.$formGroup.addClass(t.BMD_FORM_GROUP), e = this.findMdbFormGroup(this.config.bmdFormGroup.required)), e }, s.outerElement = function() { return this.$element }, s.resolveMdbLabel = function() { var e = this.$bmdFormGroup.find(n.BMD_LABEL_WILDCARD); return (void 0 === e || 0 === e.length) && (e = this.findMdbLabel(this.config.label.required), void 0 === e || 0 === e.length || e.addClass(this.config.label.className)), e }, s.findMdbLabel = function(t) { void 0 === t && (t = !0); for (var o = null, a = this.config.label.selectors, r = Array.isArray(a), i = 0, a = r ? a : a[Symbol.iterator]();;) { var l; if (r) { if (i >= a.length) break; l = a[i++] } else { if (i = a.next(), i.done) break; l = i.value } var s = l; if (o = e.isFunction(s) ? s(this) : this.$bmdFormGroup.find(s), void 0 !== o && 0 < o.length) break } return 0 === o.length && t && e.error('Failed to find ' + n.BMD_LABEL_WILDCARD + ' within form-group for ' + E.describe(this.$element)), o }, s.findFormGroup = function(t) { void 0 === t && (t = !0); var o = this.$element.closest(n.FORM_GROUP); return 0 === o.length && t && e.error('Failed to find ' + n.FORM_GROUP + ' for ' + E.describe(this.$element)), o }, s.resolveMdbFormGroupSizing = function() { if (this.config.convertInputSizeVariations) for (var e in a) this.$element.hasClass(e) && this.$bmdFormGroup.addClass(a[e]) }, s._rejectInvalidComponentMatches = function() { for (var e = this.config.invalidComponentMatches, t = Array.isArray(e), n = 0, e = t ? e : e[Symbol.iterator]();;) { var o; if (t) { if (n >= e.length) break; o = e[n++] } else { if (n = e.next(), n.done) break; o = n.value } var a = o; a.rejectMatch(this.constructor.name, this.$element) } }, s._rejectWithoutRequiredClasses = function() { for (var t = this.config.requiredClasses, n = Array.isArray(t), o = 0, t = n ? t : t[Symbol.iterator]();;) { var a; if (n) { if (o >= t.length) break; a = t[o++] } else { if (o = t.next(), o.done) break; a = o.value } var r = a, i = !1; if (-1 !== r.indexOf('||')) for (var l = r.split('||'), s = l, d = Array.isArray(s), c = 0, s = d ? s : s[Symbol.iterator]();;) { var _; if (d) { if (c >= s.length) break; _ = s[c++] } else { if (c = s.next(), c.done) break; _ = c.value } var p = _; if (this.$element.hasClass(p)) { i = !0; break } } else this.$element.hasClass(r) && (i = !0); i || e.error(this.constructor.name + ' element: ' + E.describe(this.$element) + ' requires class: ' + r) } }, l }(h); return i }(jQuery), C = function(e) { var t = { label: { required: !1 } }, n = { LABEL: 'label' }, o = function(o) { function a(n, a, r) { var i; return i = o.call(this, n, e.extend(!0, {}, t, a), r) || this, i.decorateMarkup(), i } r(a, o); var i = a.prototype; return i.decorateMarkup = function() { var t = e(this.config.template); this.$element.after(t), !1 !== this.config.ripples && t.bmdRipples() }, i.outerElement = function() { return this.$element.parent().closest('.' + this.outerClass) }, i.rejectWithoutRequiredStructure = function() { E.assert(this.$element, 'label' === !this.$element.parent().prop('tagName'), this.constructor.name + '\'s ' + E.describe(this.$element) + ' parent element should be