diff --git a/dist/js/bootstrap.bundle.js b/dist/js/bootstrap.bundle.js index 65dcc6f1e..dfe46deef 100644 --- a/dist/js/bootstrap.bundle.js +++ b/dist/js/bootstrap.bundle.js @@ -4,10 +4,10 @@ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) */ (function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : - typeof define === 'function' && define.amd ? define(['exports'], factory) : - (global = global || self, factory(global.bootstrap = {})); -}(this, function (exports) { 'use strict'; + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global = global || self, global.bootstrap = factory()); +}(this, function () { 'use strict'; function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { @@ -74,7 +74,8 @@ var MAX_UID = 1000000; var MILLISECONDS_MULTIPLIER = 1000; var TRANSITION_END = 'transitionend'; - var jQuery = window.jQuery; // Shoutout AngusCroll (https://goo.gl/pxwQGp) + var _window = window, + jQuery = _window.jQuery; // Shoutout AngusCroll (https://goo.gl/pxwQGp) var toType = function toType(obj) { return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase(); @@ -105,7 +106,7 @@ try { return document.querySelector(selector) ? selector : null; - } catch (err) { + } catch (error) { return null; } }; @@ -322,7 +323,7 @@ try { element.querySelectorAll(':scope *'); - } catch (e) { + } catch (error) { return false; } @@ -414,13 +415,14 @@ function getEvent(element) { var uid = getUidEvent(element); element.uidEvent = uid; - return eventRegistry[uid] = eventRegistry[uid] || {}; + eventRegistry[uid] = eventRegistry[uid] || {}; + return eventRegistry[uid]; } function fixEvent(event, element) { // Add which for key events if (event.which === null && keyEventRegex.test(event.type)) { - event.which = event.charCode !== null ? event.charCode : event.keyCode; + event.which = event.charCode === null ? event.keyCode : event.charCode; } event.delegateTarget = element; @@ -525,7 +527,7 @@ } var uid = getUidEvent(originalHandler, originalTypeEvent.replace(namespaceRegex, '')); - var fn = !delegation ? bootstrapHandler(element, handler) : bootstrapDelegationHandler(element, handler, delegationFn); + var fn = delegation ? bootstrapDelegationHandler(element, handler, delegationFn) : bootstrapHandler(element, handler); fn.delegationSelector = delegation ? handler : null; fn.originalHandler = originalHandler; fn.oneOff = oneOff; @@ -681,8 +683,8 @@ * ------------------------------------------------------------------------ */ - var findFn = Polyfill.find; - var _findOne = Polyfill.findOne; + var findFn = Polyfill.find, + _findOne = Polyfill.findOne; var NODE_TEXT = 3; var SelectorEngine = { matches: function matches(element, selector) { @@ -1723,7 +1725,7 @@ data.to(config); } else if (typeof action === 'string') { if (typeof data[action] === 'undefined') { - throw new Error("No method named \"" + action + "\""); + throw new TypeError("No method named \"" + action + "\""); } data[action](); @@ -2101,19 +2103,18 @@ _proto._getParent = function _getParent() { var _this3 = this; - var parent; + var parent = this._config.parent; - if (isElement(this._config.parent)) { - parent = this._config.parent; // it's a jQuery object - - if (typeof this._config.parent.jquery !== 'undefined' || typeof this._config.parent[0] !== 'undefined') { - parent = this._config.parent[0]; + if (isElement(parent)) { + // it's a jQuery object + if (typeof parent.jquery !== 'undefined' || typeof parent[0] !== 'undefined') { + parent = parent[0]; } } else { - parent = SelectorEngine.findOne(this._config.parent); + parent = SelectorEngine.findOne(parent); } - var selector = "[data-toggle=\"collapse\"][data-parent=\"" + this._config.parent + "\"]"; + var selector = "[data-toggle=\"collapse\"][data-parent=\"" + parent + "\"]"; makeArray(SelectorEngine.find(selector, parent)).forEach(function (element) { _this3._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]); }); @@ -2126,10 +2127,10 @@ if (triggerArray.length) { triggerArray.forEach(function (elem) { - if (!isOpen) { - elem.classList.add(ClassName$3.COLLAPSED); - } else { + if (isOpen) { elem.classList.remove(ClassName$3.COLLAPSED); + } else { + elem.classList.add(ClassName$3.COLLAPSED); } elem.setAttribute('aria-expanded', isOpen); @@ -2159,7 +2160,7 @@ if (typeof config === 'string') { if (typeof data[config] === 'undefined') { - throw new Error("No method named \"" + config + "\""); + throw new TypeError("No method named \"" + config + "\""); } data[config](); @@ -4863,7 +4864,6 @@ DROPRIGHT: 'dropright', DROPLEFT: 'dropleft', MENURIGHT: 'dropdown-menu-right', - MENULEFT: 'dropdown-menu-left', POSITION_STATIC: 'position-static' }; var Selector$4 = { @@ -5169,7 +5169,7 @@ if (typeof config === 'string') { if (typeof data[config] === 'undefined') { - throw new Error("No method named \"" + config + "\""); + throw new TypeError("No method named \"" + config + "\""); } data[config](); @@ -5774,7 +5774,6 @@ } } // ---------------------------------------------------------------------- // the following methods are used to handle overflowing modals - // todo (fat): these should probably be refactored out of modal.js // ---------------------------------------------------------------------- ; @@ -5853,11 +5852,11 @@ var padding = Manipulator.getDataAttribute(document.body, 'padding-right'); - if (typeof padding !== 'undefined') { + if (typeof padding === 'undefined') { + document.body.style.paddingRight = ''; + } else { Manipulator.removeDataAttribute(document.body, 'padding-right'); document.body.style.paddingRight = padding; - } else { - document.body.style.paddingRight = ''; } }; @@ -6168,7 +6167,6 @@ SHOW: 'show' }; var Selector$6 = { - TOOLTIP: '.tooltip', TOOLTIP_INNER: '.tooltip-inner', TOOLTIP_ARROW: '.tooltip-arrow' }; @@ -6296,7 +6294,7 @@ if (this.isWithContent() && this._isEnabled) { var showEvent = EventHandler.trigger(this.element, this.constructor.Event.SHOW); var shadowRoot = findShadowRoot(this.element); - var isInTheDom = shadowRoot !== null ? shadowRoot.contains(this.element) : this.element.ownerDocument.documentElement.contains(this.element); + var isInTheDom = shadowRoot === null ? this.element.ownerDocument.documentElement.contains(this.element) : shadowRoot.contains(this.element); if (showEvent.defaultPrevented || !isInTheDom) { return; @@ -7068,18 +7066,15 @@ }; var ClassName$8 = { DROPDOWN_ITEM: 'dropdown-item', - DROPDOWN_MENU: 'dropdown-menu', ACTIVE: 'active' }; var Selector$8 = { 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' }; var OffsetMethod = { @@ -7102,7 +7097,7 @@ this._element = element; this._scrollElement = element.tagName === 'BODY' ? window : element; this._config = this._getConfig(config); - this._selector = this._config.target + " " + Selector$8.NAV_LINKS + "," + (this._config.target + " " + Selector$8.LIST_ITEMS + ",") + (this._config.target + " " + Selector$8.DROPDOWN_ITEMS); + this._selector = this._config.target + " " + Selector$8.NAV_LINKS + "," + (this._config.target + " " + Selector$8.LIST_ITEMS + ",") + (this._config.target + " ." + ClassName$8.DROPDOWN_ITEM); this._offsets = []; this._targets = []; this._activeTarget = null; @@ -7143,7 +7138,6 @@ var targetBCR = target.getBoundingClientRect(); if (targetBCR.width || targetBCR.height) { - // TODO (fat): remove sketch reliance on jQuery position/offset return [Manipulator[offsetMethod](target).top + offsetBase, targetSelector]; } } @@ -7820,24 +7814,25 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v4.3.1): index.js + * Bootstrap (v4.3.1): index.umd.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * -------------------------------------------------------------------------- */ + var index_umd = { + Alert: Alert, + Button: Button, + Carousel: Carousel, + Collapse: Collapse, + Dropdown: Dropdown, + Modal: Modal, + Popover: Popover, + ScrollSpy: ScrollSpy, + Tab: Tab, + Toast: Toast, + Tooltip: Tooltip + }; - exports.Alert = Alert; - exports.Button = Button; - exports.Carousel = Carousel; - exports.Collapse = Collapse; - exports.Dropdown = Dropdown; - exports.Modal = Modal; - exports.Popover = Popover; - exports.ScrollSpy = ScrollSpy; - exports.Tab = Tab; - exports.Toast = Toast; - exports.Tooltip = Tooltip; - - Object.defineProperty(exports, '__esModule', { value: true }); + return index_umd; })); //# sourceMappingURL=bootstrap.bundle.js.map diff --git a/dist/js/bootstrap.bundle.js.map b/dist/js/bootstrap.bundle.js.map index b7965ad5c..27d752d49 100644 Binary files a/dist/js/bootstrap.bundle.js.map and b/dist/js/bootstrap.bundle.js.map differ diff --git a/dist/js/bootstrap.bundle.min.js b/dist/js/bootstrap.bundle.min.js index 404a17788..a6112f479 100644 --- a/dist/js/bootstrap.bundle.min.js +++ b/dist/js/bootstrap.bundle.min.js @@ -3,5 +3,5 @@ * Copyright 2011-2019 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) */ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t=t||self).bootstrap={})}(this,function(t){"use strict";function e(t,e){for(var n=0;n-1||(r=t),[i,o,r]}function M(t,e,n,i,o){if("string"==typeof e&&t){n||(n=i,i=null);var r=H(e,n,i),s=r[0],a=r[1],l=r[2],c=k(t),f=c[l]||(c[l]={}),u=x(f,a,s?n:null);if(u)u.oneOff=u.oneOff&&o;else{var h=N(a,e.replace(D,"")),d=s?function(t,e,n){return function i(o){for(var r=t.querySelectorAll(e),s=o.target;s&&s!==this;s=s.parentNode)for(var a=r.length;a--;)if(r[a]===s)return P(o,s),i.oneOff&&R.off(t,o.type,n),n.apply(s,[o]);return null}}(t,n,i):function(t,e){return function n(i){return P(i,t),n.oneOff&&R.off(t,i.type,e),e.apply(t,[i])}}(t,n);d.delegationSelector=s?n:null,d.originalHandler=a,d.oneOff=o,d.uidEvent=h,f[h]=d,t.addEventListener(l,d,s)}}}function j(t,e,n,i,o){var r=x(e[n],i,o);null!==r&&(t.removeEventListener(n,r,Boolean(o)),delete e[n][r.uidEvent])}var R={on:function(t,e,n,i){M(t,e,n,i,!1)},one:function(t,e,n,i){M(t,e,n,i,!0)},off:function(t,e,n,i){if("string"==typeof e&&t){var o=H(e,n,i),r=o[0],s=o[1],a=o[2],l=a!==e,c=k(t),f="."===e.charAt(0);if(void 0===s){f&&Object.keys(c).forEach(function(n){!function(t,e,n,i){var o=e[n]||{};Object.keys(o).forEach(function(r){if(r.indexOf(i)>-1){var s=o[r];j(t,e,n,s.originalHandler,s.delegationSelector)}})}(t,c,n,e.substr(1))});var u=c[a]||{};Object.keys(u).forEach(function(n){var i=n.replace(A,"");if(!l||e.indexOf(i)>-1){var o=u[n];j(t,c,a,o.originalHandler,o.delegationSelector)}})}else{if(!c||!c[a])return;j(t,c,a,s,r?n:null)}}},trigger:function(t,e,n){if("string"!=typeof e||!t)return null;var i,o=e.replace(T,""),r=e!==o,s=C.indexOf(o)>-1,a=!0,c=!0,f=!1,u=null;return r&&void 0!==l&&(i=l.Event(e,n),l(t).trigger(i),a=!i.isPropagationStopped(),c=!i.isImmediatePropagationStopped(),f=i.isDefaultPrevented()),s?(u=document.createEvent("HTMLEvents")).initEvent(o,a,!0):u=new CustomEvent(e,{bubbles:a,cancelable:!0}),void 0!==n&&Object.keys(n).forEach(function(t){Object.defineProperty(u,t,{get:function(){return n[t]}})}),f&&(u.preventDefault(),w.defaultPreventedPreservedOnDispatch||Object.defineProperty(u,"defaultPrevented",{get:function(){return!0}})),c&&t.dispatchEvent(u),u.defaultPrevented&&void 0!==i&&i.preventDefault(),u}},W=w.find,F=w.findOne,U={matches:function(t,e){return t.matches(e)},find:function(t,e){return void 0===e&&(e=document.documentElement),"string"!=typeof t?null:W.call(e,t)},findOne:function(t,e){return void 0===e&&(e=document.documentElement),"string"!=typeof t?null:F.call(e,t)},children:function(t,e){var n=this;if("string"!=typeof e)return null;var i=m(t.children);return i.filter(function(t){return n.matches(t,e)})},parents:function(t,e){if("string"!=typeof e)return null;for(var n=[],i=t.parentNode;i&&i.nodeType===Node.ELEMENT_NODE&&3!==i.nodeType;)this.matches(i,e)&&n.push(i),i=i.parentNode;return n},closest:function(t,e){return"string"!=typeof e?null:t.closest(e)},prev:function(t,e){if("string"!=typeof e)return null;for(var n=[],i=t.previousSibling;i&&i.nodeType===Node.ELEMENT_NODE&&3!==i.nodeType;)this.matches(i,e)&&n.push(i),i=i.previousSibling;return n}},B="bs.alert",K="."+B,V={CLOSE:"close"+K,CLOSED:"closed"+K,CLICK_DATA_API:"click"+K+".data-api"},Y="alert",Q="fade",G="show",q=function(){function t(t){this._element=t,this._element&&E.setData(t,B,this)}var e=t.prototype;return e.close=function(t){var e=this._element;t&&(e=this._getRootElement(t));var n=this._triggerCloseEvent(e);null===n||n.defaultPrevented||this._removeElement(e)},e.dispose=function(){E.removeData(this._element,B),this._element=null},e._getRootElement=function(t){var e=f(t),n=!1;return e&&(n=U.findOne(e)),n||(n=U.closest(t,"."+Y)),n},e._triggerCloseEvent=function(t){return R.trigger(t,V.CLOSE)},e._removeElement=function(t){var e=this;if(t.classList.remove(G),t.classList.contains(Q)){var n=u(t);R.one(t,a,function(n){return e._destroyElement(t,n)}),p(t,n)}else this._destroyElement(t)},e._destroyElement=function(t){t.parentNode&&t.parentNode.removeChild(t),R.trigger(t,V.CLOSED)},t._jQueryInterface=function(e){return this.each(function(){var n=E.getData(this,B);n||(n=new t(this)),"close"===e&&n[e](this)})},t._handleDismiss=function(t){return function(e){e&&e.preventDefault(),t.close(this)}},t._getInstance=function(t){return E.getData(t,B)},n(t,null,[{key:"VERSION",get:function(){return"4.3.1"}}]),t}();if(R.on(document,V.CLICK_DATA_API,'[data-dismiss="alert"]',q._handleDismiss(new q)),void 0!==l){var X=l.fn.alert;l.fn.alert=q._jQueryInterface,l.fn.alert.Constructor=q,l.fn.alert.noConflict=function(){return l.fn.alert=X,q._jQueryInterface}}var z="bs.button",Z="."+z,$="active",J="btn",tt="focus",et='[data-toggle^="button"]',nt='[data-toggle="buttons"]',it='input:not([type="hidden"])',ot=".active",rt=".btn",st={CLICK_DATA_API:"click"+Z+".data-api",FOCUS_DATA_API:"focus"+Z+".data-api",BLUR_DATA_API:"blur"+Z+".data-api"},at=function(){function t(t){this._element=t,E.setData(t,z,this)}var e=t.prototype;return e.toggle=function(){var t=!0,e=!0,n=U.closest(this._element,nt);if(n){var i=U.findOne(it,this._element);if(i){if("radio"===i.type)if(i.checked&&this._element.classList.contains($))t=!1;else{var o=U.findOne(ot,n);o&&o.classList.remove($)}if(t){if(i.hasAttribute("disabled")||n.hasAttribute("disabled")||i.classList.contains("disabled")||n.classList.contains("disabled"))return;i.checked=!this._element.classList.contains($),R.trigger(i,"change")}i.focus(),e=!1}}e&&this._element.setAttribute("aria-pressed",!this._element.classList.contains($)),t&&this._element.classList.toggle($)},e.dispose=function(){E.removeData(this._element,z),this._element=null},t._jQueryInterface=function(e){return this.each(function(){var n=E.getData(this,z);n||(n=new t(this)),"toggle"===e&&n[e]()})},t._getInstance=function(t){return E.getData(t,z)},n(t,null,[{key:"VERSION",get:function(){return"4.3.1"}}]),t}();if(R.on(document,st.CLICK_DATA_API,et,function(t){t.preventDefault();var e=t.target;e.classList.contains(J)||(e=U.closest(e,rt));var n=E.getData(e,z);n||(n=new at(e),E.setData(e,z,n)),n.toggle()}),R.on(document,st.FOCUS_DATA_API,et,function(t){U.closest(t.target,rt).classList.add(tt)}),R.on(document,st.BLUR_DATA_API,et,function(t){U.closest(t.target,rt).classList.remove(tt)}),void 0!==l){var lt=l.fn.button;l.fn.button=at._jQueryInterface,l.fn.button.Constructor=at,l.fn.button.noConflict=function(){return l.fn.button=lt,at._jQueryInterface}}function ct(t){return"true"===t||"false"!==t&&(t===Number(t).toString()?Number(t):""===t||"null"===t?null:t)}function ft(t){return t.replace(/[A-Z]/g,function(t){return t.toLowerCase()})}var ut={setDataAttribute:function(t,e,n){t.setAttribute("data-"+ft(e),n)},removeDataAttribute:function(t,e){t.removeAttribute("data-"+ft(e))},getDataAttributes:function(t){if(!t)return{};var e=o({},t.dataset);return Object.keys(e).forEach(function(t){e[t]=ct(e[t])}),e},getDataAttribute:function(t,e){return ct(t.getAttribute("data-"+ft(e)))},offset:function(t){var e=t.getBoundingClientRect();return{top:e.top+document.body.scrollTop,left:e.left+document.body.scrollLeft}},position:function(t){return{top:t.offsetTop,left:t.offsetLeft}},toggleClass:function(t,e){t&&(t.classList.contains(e)?t.classList.remove(e):t.classList.add(e))}},ht="carousel",dt="bs.carousel",pt="."+dt,gt={interval:5e3,keyboard:!0,slide:!1,pause:"hover",wrap:!0,touch:!0},mt={interval:"(number|boolean)",keyboard:"boolean",slide:"(boolean|string)",pause:"(string|boolean)",wrap:"boolean",touch:"boolean"},_t="next",vt="prev",bt="left",yt="right",Et={SLIDE:"slide"+pt,SLID:"slid"+pt,KEYDOWN:"keydown"+pt,MOUSEENTER:"mouseenter"+pt,MOUSELEAVE:"mouseleave"+pt,TOUCHSTART:"touchstart"+pt,TOUCHMOVE:"touchmove"+pt,TOUCHEND:"touchend"+pt,POINTERDOWN:"pointerdown"+pt,POINTERUP:"pointerup"+pt,DRAG_START:"dragstart"+pt,LOAD_DATA_API:"load"+pt+".data-api",CLICK_DATA_API:"click"+pt+".data-api"},wt="carousel",Dt="active",Tt="slide",It="carousel-item-right",At="carousel-item-left",Ot="carousel-item-next",St="carousel-item-prev",Lt="pointer-event",Ct={ACTIVE:".active",ACTIVE_ITEM:".active.carousel-item",ITEM:".carousel-item",ITEM_IMG:".carousel-item img",NEXT_PREV:".carousel-item-next, .carousel-item-prev",INDICATORS:".carousel-indicators",DATA_SLIDE:"[data-slide], [data-slide-to]",DATA_RIDE:'[data-ride="carousel"]'},Nt={TOUCH:"touch",PEN:"pen"},kt=function(){function t(t,e){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=U.findOne(Ct.INDICATORS,this._element),this._touchSupported="ontouchstart"in document.documentElement||navigator.maxTouchPoints>0,this._pointerEvent=Boolean(window.PointerEvent||window.MSPointerEvent),this._addEventListeners(),E.setData(t,dt,this)}var e=t.prototype;return e.next=function(){this._isSliding||this._slide(_t)},e.nextWhenVisible=function(){!document.hidden&&_(this._element)&&this.next()},e.prev=function(){this._isSliding||this._slide(vt)},e.pause=function(t){t||(this._isPaused=!0),U.findOne(Ct.NEXT_PREV,this._element)&&(h(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null},e.cycle=function(t){t||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config&&this._config.interval&&!this._isPaused&&(this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))},e.to=function(t){var e=this;this._activeElement=U.findOne(Ct.ACTIVE_ITEM,this._element);var n=this._getItemIndex(this._activeElement);if(!(t>this._items.length-1||t<0))if(this._isSliding)R.one(this._element,Et.SLID,function(){return e.to(t)});else{if(n===t)return this.pause(),void this.cycle();var i=t>n?_t:vt;this._slide(i,this._items[t])}},e.dispose=function(){R.off(this._element,pt),E.removeData(this._element,dt),this._items=null,this._config=null,this._element=null,this._interval=null,this._isPaused=null,this._isSliding=null,this._activeElement=null,this._indicatorsElement=null},e._getConfig=function(t){return t=o({},gt,t),g(ht,t,mt),t},e._handleSwipe=function(){var t=Math.abs(this.touchDeltaX);if(!(t<=40)){var e=t/this.touchDeltaX;e>0&&this.prev(),e<0&&this.next()}},e._addEventListeners=function(){var t=this;this._config.keyboard&&R.on(this._element,Et.KEYDOWN,function(e){return t._keydown(e)}),"hover"===this._config.pause&&(R.on(this._element,Et.MOUSEENTER,function(e){return t.pause(e)}),R.on(this._element,Et.MOUSELEAVE,function(e){return t.cycle(e)})),this._config.touch&&this._addTouchEventListeners()},e._addTouchEventListeners=function(){var t=this;if(this._touchSupported){var e=function(e){t._pointerEvent&&Nt[e.pointerType.toUpperCase()]?t.touchStartX=e.clientX:t._pointerEvent||(t.touchStartX=e.touches[0].clientX)},n=function(e){t._pointerEvent&&Nt[e.pointerType.toUpperCase()]&&(t.touchDeltaX=e.clientX-t.touchStartX),t._handleSwipe(),"hover"===t._config.pause&&(t.pause(),t.touchTimeout&&clearTimeout(t.touchTimeout),t.touchTimeout=setTimeout(function(e){return t.cycle(e)},500+t._config.interval))};m(U.find(Ct.ITEM_IMG,this._element)).forEach(function(t){R.on(t,Et.DRAG_START,function(t){return t.preventDefault()})}),this._pointerEvent?(R.on(this._element,Et.POINTERDOWN,function(t){return e(t)}),R.on(this._element,Et.POINTERUP,function(t){return n(t)}),this._element.classList.add(Lt)):(R.on(this._element,Et.TOUCHSTART,function(t){return e(t)}),R.on(this._element,Et.TOUCHMOVE,function(e){return function(e){e.touches&&e.touches.length>1?t.touchDeltaX=0:t.touchDeltaX=e.touches[0].clientX-t.touchStartX}(e)}),R.on(this._element,Et.TOUCHEND,function(t){return n(t)}))}},e._keydown=function(t){if(!/input|textarea/i.test(t.target.tagName))switch(t.which){case 37:t.preventDefault(),this.prev();break;case 39:t.preventDefault(),this.next()}},e._getItemIndex=function(t){return this._items=t&&t.parentNode?m(U.find(Ct.ITEM,t.parentNode)):[],this._items.indexOf(t)},e._getItemByDirection=function(t,e){var n=t===_t,i=t===vt,o=this._getItemIndex(e),r=this._items.length-1;if((i&&0===o||n&&o===r)&&!this._config.wrap)return e;var s=(o+(t===vt?-1:1))%this._items.length;return-1===s?this._items[this._items.length-1]:this._items[s]},e._triggerSlideEvent=function(t,e){var n=this._getItemIndex(t),i=this._getItemIndex(U.findOne(Ct.ACTIVE_ITEM,this._element));return R.trigger(this._element,Et.SLIDE,{relatedTarget:t,direction:e,from:i,to:n})},e._setActiveIndicatorElement=function(t){if(this._indicatorsElement){for(var e=U.find(Ct.ACTIVE,this._indicatorsElement),n=0;n0)for(var i=0;i=0){Zt=1;break}var Jt=Xt&&window.Promise?function(t){var e=!1;return function(){e||(e=!0,window.Promise.resolve().then(function(){e=!1,t()}))}}:function(t){var e=!1;return function(){e||(e=!0,setTimeout(function(){e=!1,t()},Zt))}};function te(t){return t&&"[object Function]"==={}.toString.call(t)}function ee(t,e){if(1!==t.nodeType)return[];var n=t.ownerDocument.defaultView.getComputedStyle(t,null);return e?n[e]:n}function ne(t){return"HTML"===t.nodeName?t:t.parentNode||t.host}function ie(t){if(!t)return document.body;switch(t.nodeName){case"HTML":case"BODY":return t.ownerDocument.body;case"#document":return t.body}var e=ee(t),n=e.overflow,i=e.overflowX,o=e.overflowY;return/(auto|scroll|overlay)/.test(n+o+i)?t:ie(ne(t))}var oe=Xt&&!(!window.MSInputMethodContext||!document.documentMode),re=Xt&&/MSIE 10/.test(navigator.userAgent);function se(t){return 11===t?oe:10===t?re:oe||re}function ae(t){if(!t)return document.documentElement;for(var e=se(10)?document.body:null,n=t.offsetParent||null;n===e&&t.nextElementSibling;)n=(t=t.nextElementSibling).offsetParent;var i=n&&n.nodeName;return i&&"BODY"!==i&&"HTML"!==i?-1!==["TH","TD","TABLE"].indexOf(n.nodeName)&&"static"===ee(n,"position")?ae(n):n:t?t.ownerDocument.documentElement:document.documentElement}function le(t){return null!==t.parentNode?le(t.parentNode):t}function ce(t,e){if(!(t&&t.nodeType&&e&&e.nodeType))return document.documentElement;var n=t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_FOLLOWING,i=n?t:e,o=n?e:t,r=document.createRange();r.setStart(i,0),r.setEnd(o,0);var s,a,l=r.commonAncestorContainer;if(t!==l&&e!==l||i.contains(o))return"BODY"===(a=(s=l).nodeName)||"HTML"!==a&&ae(s.firstElementChild)!==s?ae(l):l;var c=le(t);return c.host?ce(c.host,e):ce(t,le(e).host)}function fe(t){var e="top"===(arguments.length>1&&void 0!==arguments[1]?arguments[1]:"top")?"scrollTop":"scrollLeft",n=t.nodeName;if("BODY"===n||"HTML"===n){var i=t.ownerDocument.documentElement;return(t.ownerDocument.scrollingElement||i)[e]}return t[e]}function ue(t,e){var n="x"===e?"Left":"Top",i="Left"===n?"Right":"Bottom";return parseFloat(t["border"+n+"Width"],10)+parseFloat(t["border"+i+"Width"],10)}function he(t,e,n,i){return Math.max(e["offset"+t],e["scroll"+t],n["client"+t],n["offset"+t],n["scroll"+t],se(10)?parseInt(n["offset"+t])+parseInt(i["margin"+("Height"===t?"Top":"Left")])+parseInt(i["margin"+("Height"===t?"Bottom":"Right")]):0)}function de(t){var e=t.body,n=t.documentElement,i=se(10)&&getComputedStyle(n);return{height:he("Height",e,n,i),width:he("Width",e,n,i)}}var pe=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},ge=function(){function t(t,e){for(var n=0;n2&&void 0!==arguments[2]&&arguments[2],i=se(10),o="HTML"===e.nodeName,r=be(t),s=be(e),a=ie(t),l=ee(e),c=parseFloat(l.borderTopWidth,10),f=parseFloat(l.borderLeftWidth,10);n&&o&&(s.top=Math.max(s.top,0),s.left=Math.max(s.left,0));var u=ve({top:r.top-s.top-c,left:r.left-s.left-f,width:r.width,height:r.height});if(u.marginTop=0,u.marginLeft=0,!i&&o){var h=parseFloat(l.marginTop,10),d=parseFloat(l.marginLeft,10);u.top-=c-h,u.bottom-=c-h,u.left-=f-d,u.right-=f-d,u.marginTop=h,u.marginLeft=d}return(i&&!n?e.contains(a):e===a&&"BODY"!==a.nodeName)&&(u=function(t,e){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=fe(e,"top"),o=fe(e,"left"),r=n?-1:1;return t.top+=i*r,t.bottom+=i*r,t.left+=o*r,t.right+=o*r,t}(u,e)),u}function Ee(t){if(!t||!t.parentElement||se())return document.documentElement;for(var e=t.parentElement;e&&"none"===ee(e,"transform");)e=e.parentElement;return e||document.documentElement}function we(t,e,n,i){var o=arguments.length>4&&void 0!==arguments[4]&&arguments[4],r={top:0,left:0},s=o?Ee(t):ce(t,e);if("viewport"===i)r=function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=t.ownerDocument.documentElement,i=ye(t,n),o=Math.max(n.clientWidth,window.innerWidth||0),r=Math.max(n.clientHeight,window.innerHeight||0),s=e?0:fe(n),a=e?0:fe(n,"left");return ve({top:s-i.top+i.marginTop,left:a-i.left+i.marginLeft,width:o,height:r})}(s,o);else{var a=void 0;"scrollParent"===i?"BODY"===(a=ie(ne(e))).nodeName&&(a=t.ownerDocument.documentElement):a="window"===i?t.ownerDocument.documentElement:i;var l=ye(a,s,o);if("HTML"!==a.nodeName||function t(e){var n=e.nodeName;if("BODY"===n||"HTML"===n)return!1;if("fixed"===ee(e,"position"))return!0;var i=ne(e);return!!i&&t(i)}(s))r=l;else{var c=de(t.ownerDocument),f=c.height,u=c.width;r.top+=l.top-l.marginTop,r.bottom=f+l.top,r.left+=l.left-l.marginLeft,r.right=u+l.left}}var h="number"==typeof(n=n||0);return r.left+=h?n:n.left||0,r.top+=h?n:n.top||0,r.right-=h?n:n.right||0,r.bottom-=h?n:n.bottom||0,r}function De(t,e,n,i,o){var r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0;if(-1===t.indexOf("auto"))return t;var s=we(n,i,r,o),a={top:{width:s.width,height:e.top-s.top},right:{width:s.right-e.right,height:s.height},bottom:{width:s.width,height:s.bottom-e.bottom},left:{width:e.left-s.left,height:s.height}},l=Object.keys(a).map(function(t){return _e({key:t},a[t],{area:(e=a[t],e.width*e.height)});var e}).sort(function(t,e){return e.area-t.area}),c=l.filter(function(t){var e=t.width,i=t.height;return e>=n.clientWidth&&i>=n.clientHeight}),f=c.length>0?c[0].key:l[0].key,u=t.split("-")[1];return f+(u?"-"+u:"")}function Te(t,e,n){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;return ye(n,i?Ee(e):ce(e,n),i)}function Ie(t){var e=t.ownerDocument.defaultView.getComputedStyle(t),n=parseFloat(e.marginTop||0)+parseFloat(e.marginBottom||0),i=parseFloat(e.marginLeft||0)+parseFloat(e.marginRight||0);return{width:t.offsetWidth+i,height:t.offsetHeight+n}}function Ae(t){var e={left:"right",right:"left",bottom:"top",top:"bottom"};return t.replace(/left|right|bottom|top/g,function(t){return e[t]})}function Oe(t,e,n){n=n.split("-")[0];var i=Ie(t),o={width:i.width,height:i.height},r=-1!==["right","left"].indexOf(n),s=r?"top":"left",a=r?"left":"top",l=r?"height":"width",c=r?"width":"height";return o[s]=e[s]+e[l]/2-i[l]/2,o[a]=n===a?e[a]-i[c]:e[Ae(a)],o}function Se(t,e){return Array.prototype.find?t.find(e):t.filter(e)[0]}function Le(t,e,n){return(void 0===n?t:t.slice(0,function(t,e,n){if(Array.prototype.findIndex)return t.findIndex(function(t){return t[e]===n});var i=Se(t,function(t){return t[e]===n});return t.indexOf(i)}(t,"name",n))).forEach(function(t){t.function&&console.warn("`modifier.function` is deprecated, use `modifier.fn`!");var n=t.function||t.fn;t.enabled&&te(n)&&(e.offsets.popper=ve(e.offsets.popper),e.offsets.reference=ve(e.offsets.reference),e=n(e,t))}),e}function Ce(t,e){return t.some(function(t){var n=t.name;return t.enabled&&n===e})}function Ne(t){for(var e=[!1,"ms","Webkit","Moz","O"],n=t.charAt(0).toUpperCase()+t.slice(1),i=0;i1&&void 0!==arguments[1]&&arguments[1],n=Fe.indexOf(t),i=Fe.slice(n+1).concat(Fe.slice(0,n));return e?i.reverse():i}var Be={FLIP:"flip",CLOCKWISE:"clockwise",COUNTERCLOCKWISE:"counterclockwise"};function Ke(t,e,n,i){var o=[0,0],r=-1!==["right","left"].indexOf(i),s=t.split(/(\+|\-)/).map(function(t){return t.trim()}),a=s.indexOf(Se(s,function(t){return-1!==t.search(/,|\s/)}));s[a]&&-1===s[a].indexOf(",")&&console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead.");var l=/\s*,\s*|\s+/,c=-1!==a?[s.slice(0,a).concat([s[a].split(l)[0]]),[s[a].split(l)[1]].concat(s.slice(a+1))]:[s];return(c=c.map(function(t,i){var o=(1===i?!r:r)?"height":"width",s=!1;return t.reduce(function(t,e){return""===t[t.length-1]&&-1!==["+","-"].indexOf(e)?(t[t.length-1]=e,s=!0,t):s?(t[t.length-1]+=e,s=!1,t):t.concat(e)},[]).map(function(t){return function(t,e,n,i){var o=t.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),r=+o[1],s=o[2];if(!r)return t;if(0===s.indexOf("%")){var a=void 0;switch(s){case"%p":a=n;break;case"%":case"%r":default:a=i}return ve(a)[e]/100*r}if("vh"===s||"vw"===s)return("vh"===s?Math.max(document.documentElement.clientHeight,window.innerHeight||0):Math.max(document.documentElement.clientWidth,window.innerWidth||0))/100*r;return r}(t,o,e,n)})})).forEach(function(t,e){t.forEach(function(n,i){He(n)&&(o[e]+=n*("-"===t[i-1]?-1:1))})}),o}var Ve={placement:"bottom",positionFixed:!1,eventsEnabled:!0,removeOnDestroy:!1,onCreate:function(){},onUpdate:function(){},modifiers:{shift:{order:100,enabled:!0,fn:function(t){var e=t.placement,n=e.split("-")[0],i=e.split("-")[1];if(i){var o=t.offsets,r=o.reference,s=o.popper,a=-1!==["bottom","top"].indexOf(n),l=a?"left":"top",c=a?"width":"height",f={start:me({},l,r[l]),end:me({},l,r[l]+r[c]-s[c])};t.offsets.popper=_e({},s,f[i])}return t}},offset:{order:200,enabled:!0,fn:function(t,e){var n=e.offset,i=t.placement,o=t.offsets,r=o.popper,s=o.reference,a=i.split("-")[0],l=void 0;return l=He(+n)?[+n,0]:Ke(n,r,s,a),"left"===a?(r.top+=l[0],r.left-=l[1]):"right"===a?(r.top+=l[0],r.left+=l[1]):"top"===a?(r.left+=l[0],r.top-=l[1]):"bottom"===a&&(r.left+=l[0],r.top+=l[1]),t.popper=r,t},offset:0},preventOverflow:{order:300,enabled:!0,fn:function(t,e){var n=e.boundariesElement||ae(t.instance.popper);t.instance.reference===n&&(n=ae(n));var i=Ne("transform"),o=t.instance.popper.style,r=o.top,s=o.left,a=o[i];o.top="",o.left="",o[i]="";var l=we(t.instance.popper,t.instance.reference,e.padding,n,t.positionFixed);o.top=r,o.left=s,o[i]=a,e.boundaries=l;var c=e.priority,f=t.offsets.popper,u={primary:function(t){var n=f[t];return f[t]l[t]&&!e.escapeWithReference&&(i=Math.min(f[n],l[t]-("right"===t?f.width:f.height))),me({},n,i)}};return c.forEach(function(t){var e=-1!==["left","top"].indexOf(t)?"primary":"secondary";f=_e({},f,u[e](t))}),t.offsets.popper=f,t},priority:["left","right","top","bottom"],padding:5,boundariesElement:"scrollParent"},keepTogether:{order:400,enabled:!0,fn:function(t){var e=t.offsets,n=e.popper,i=e.reference,o=t.placement.split("-")[0],r=Math.floor,s=-1!==["top","bottom"].indexOf(o),a=s?"right":"bottom",l=s?"left":"top",c=s?"width":"height";return n[a]r(i[a])&&(t.offsets.popper[l]=r(i[a])),t}},arrow:{order:500,enabled:!0,fn:function(t,e){var n;if(!Re(t.instance.modifiers,"arrow","keepTogether"))return t;var i=e.element;if("string"==typeof i){if(!(i=t.instance.popper.querySelector(i)))return t}else if(!t.instance.popper.contains(i))return console.warn("WARNING: `arrow.element` must be child of its popper element!"),t;var o=t.placement.split("-")[0],r=t.offsets,s=r.popper,a=r.reference,l=-1!==["left","right"].indexOf(o),c=l?"height":"width",f=l?"Top":"Left",u=f.toLowerCase(),h=l?"left":"top",d=l?"bottom":"right",p=Ie(i)[c];a[d]-ps[d]&&(t.offsets.popper[u]+=a[u]+p-s[d]),t.offsets.popper=ve(t.offsets.popper);var g=a[u]+a[c]/2-p/2,m=ee(t.instance.popper),_=parseFloat(m["margin"+f],10),v=parseFloat(m["border"+f+"Width"],10),b=g-t.offsets.popper[u]-_-v;return b=Math.max(Math.min(s[c]-p,b),0),t.arrowElement=i,t.offsets.arrow=(me(n={},u,Math.round(b)),me(n,h,""),n),t},element:"[x-arrow]"},flip:{order:600,enabled:!0,fn:function(t,e){if(Ce(t.instance.modifiers,"inner"))return t;if(t.flipped&&t.placement===t.originalPlacement)return t;var n=we(t.instance.popper,t.instance.reference,e.padding,e.boundariesElement,t.positionFixed),i=t.placement.split("-")[0],o=Ae(i),r=t.placement.split("-")[1]||"",s=[];switch(e.behavior){case Be.FLIP:s=[i,o];break;case Be.CLOCKWISE:s=Ue(i);break;case Be.COUNTERCLOCKWISE:s=Ue(i,!0);break;default:s=e.behavior}return s.forEach(function(a,l){if(i!==a||s.length===l+1)return t;i=t.placement.split("-")[0],o=Ae(i);var c=t.offsets.popper,f=t.offsets.reference,u=Math.floor,h="left"===i&&u(c.right)>u(f.left)||"right"===i&&u(c.left)u(f.top)||"bottom"===i&&u(c.top)u(n.right),g=u(c.top)u(n.bottom),_="left"===i&&d||"right"===i&&p||"top"===i&&g||"bottom"===i&&m,v=-1!==["top","bottom"].indexOf(i),b=!!e.flipVariations&&(v&&"start"===r&&d||v&&"end"===r&&p||!v&&"start"===r&&g||!v&&"end"===r&&m);(h||_||b)&&(t.flipped=!0,(h||_)&&(i=s[l+1]),b&&(r=function(t){return"end"===t?"start":"start"===t?"end":t}(r)),t.placement=i+(r?"-"+r:""),t.offsets.popper=_e({},t.offsets.popper,Oe(t.instance.popper,t.offsets.reference,t.placement)),t=Le(t.instance.modifiers,t,"flip"))}),t},behavior:"flip",padding:5,boundariesElement:"viewport"},inner:{order:700,enabled:!1,fn:function(t){var e=t.placement,n=e.split("-")[0],i=t.offsets,o=i.popper,r=i.reference,s=-1!==["left","right"].indexOf(n),a=-1===["top","left"].indexOf(n);return o[s?"left":"top"]=r[n]-(a?o[s?"width":"height"]:0),t.placement=Ae(e),t.offsets.popper=ve(o),t}},hide:{order:800,enabled:!0,fn:function(t){if(!Re(t.instance.modifiers,"hide","preventOverflow"))return t;var e=t.offsets.reference,n=Se(t.instance.modifiers,function(t){return"preventOverflow"===t.name}).boundaries;if(e.bottomn.right||e.top>n.bottom||e.right2&&void 0!==arguments[2]?arguments[2]:{};pe(this,t),this.scheduleUpdate=function(){return requestAnimationFrame(i.update)},this.update=Jt(this.update.bind(this)),this.options=_e({},t.Defaults,o),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=e&&e.jquery?e[0]:e,this.popper=n&&n.jquery?n[0]:n,this.options.modifiers={},Object.keys(_e({},t.Defaults.modifiers,o.modifiers)).forEach(function(e){i.options.modifiers[e]=_e({},t.Defaults.modifiers[e]||{},o.modifiers?o.modifiers[e]:{})}),this.modifiers=Object.keys(this.options.modifiers).map(function(t){return _e({name:t},i.options.modifiers[t])}).sort(function(t,e){return t.order-e.order}),this.modifiers.forEach(function(t){t.enabled&&te(t.onLoad)&&t.onLoad(i.reference,i.popper,i.options,t,i.state)}),this.update();var r=this.options.eventsEnabled;r&&this.enableEventListeners(),this.state.eventsEnabled=r}return ge(t,[{key:"update",value:function(){return function(){if(!this.state.isDestroyed){var t={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};t.offsets.reference=Te(this.state,this.popper,this.reference,this.options.positionFixed),t.placement=De(this.options.placement,t.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),t.originalPlacement=t.placement,t.positionFixed=this.options.positionFixed,t.offsets.popper=Oe(this.popper,t.offsets.reference,t.placement),t.offsets.popper.position=this.options.positionFixed?"fixed":"absolute",t=Le(this.modifiers,t),this.state.isCreated?this.options.onUpdate(t):(this.state.isCreated=!0,this.options.onCreate(t))}}.call(this)}},{key:"destroy",value:function(){return function(){return this.state.isDestroyed=!0,Ce(this.modifiers,"applyStyle")&&(this.popper.removeAttribute("x-placement"),this.popper.style.position="",this.popper.style.top="",this.popper.style.left="",this.popper.style.right="",this.popper.style.bottom="",this.popper.style.willChange="",this.popper.style[Ne("transform")]=""),this.disableEventListeners(),this.options.removeOnDestroy&&this.popper.parentNode.removeChild(this.popper),this}.call(this)}},{key:"enableEventListeners",value:function(){return function(){this.state.eventsEnabled||(this.state=Pe(this.reference,this.options,this.state,this.scheduleUpdate))}.call(this)}},{key:"disableEventListeners",value:function(){return xe.call(this)}}]),t}();Ye.Utils=("undefined"!=typeof window?window:global).PopperUtils,Ye.placements=We,Ye.Defaults=Ve;var Qe="dropdown",Ge="bs.dropdown",qe="."+Ge,Xe=new RegExp("38|40|27"),ze={HIDE:"hide"+qe,HIDDEN:"hidden"+qe,SHOW:"show"+qe,SHOWN:"shown"+qe,CLICK:"click"+qe,CLICK_DATA_API:"click"+qe+".data-api",KEYDOWN_DATA_API:"keydown"+qe+".data-api",KEYUP_DATA_API:"keyup"+qe+".data-api"},Ze="disabled",$e="show",Je="dropup",tn="dropright",en="dropleft",nn="dropdown-menu-right",on="position-static",rn='[data-toggle="dropdown"]',sn=".dropdown form",an=".dropdown-menu",ln=".navbar-nav",cn=".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",fn="top-start",un="top-end",hn="bottom-start",dn="bottom-end",pn="right-start",gn="left-start",mn={offset:0,flip:!0,boundary:"scrollParent",reference:"toggle",display:"dynamic"},_n={offset:"(number|string|function)",flip:"boolean",boundary:"(string|element)",reference:"(string|element)",display:"string"},vn=function(){function t(t,e){this._element=t,this._popper=null,this._config=this._getConfig(e),this._menu=this._getMenuElement(),this._inNavbar=this._detectNavbar(),this._addEventListeners(),E.setData(t,Ge,this)}var e=t.prototype;return e.toggle=function(){if(!this._element.disabled&&!this._element.classList.contains(Ze)){var e=t._getParentFromElement(this._element),n=this._menu.classList.contains($e);if(t._clearMenus(),!n){var i={relatedTarget:this._element};if(!R.trigger(e,ze.SHOW,i).defaultPrevented){if(!this._inNavbar){if(void 0===Ye)throw new TypeError("Bootstrap's dropdowns require Popper.js (https://popper.js.org)");var o=this._element;"parent"===this._config.reference?o=e:d(this._config.reference)&&(o=this._config.reference,void 0!==this._config.reference.jquery&&(o=this._config.reference[0])),"scrollParent"!==this._config.boundary&&e.classList.add(on),this._popper=new Ye(o,this._menu,this._getPopperConfig())}"ontouchstart"in document.documentElement&&!m(U.closest(e,ln)).length&&m(document.body.children).forEach(function(t){return R.on(t,"mouseover",null,function(){})}),this._element.focus(),this._element.setAttribute("aria-expanded",!0),ut.toggleClass(this._menu,$e),ut.toggleClass(e,$e),R.trigger(e,ze.SHOWN,i)}}}},e.show=function(){if(!(this._element.disabled||this._element.classList.contains(Ze)||this._menu.classList.contains($e))){var e=t._getParentFromElement(this._element),n={relatedTarget:this._element};R.trigger(e,ze.SHOW,n).defaultPrevented||(ut.toggleClass(this._menu,$e),ut.toggleClass(e,$e),R.trigger(e,ze.SHOWN,n))}},e.hide=function(){if(!this._element.disabled&&!this._element.classList.contains(Ze)&&this._menu.classList.contains($e)){var e=t._getParentFromElement(this._element),n={relatedTarget:this._element};R.trigger(e,ze.HIDE,n).defaultPrevented||(ut.toggleClass(this._menu,$e),ut.toggleClass(e,$e),R.trigger(e,ze.HIDDEN,n))}},e.dispose=function(){E.removeData(this._element,Ge),R.off(this._element,qe),this._element=null,this._menu=null,null!==this._popper&&(this._popper.destroy(),this._popper=null)},e.update=function(){this._inNavbar=this._detectNavbar(),null!==this._popper&&this._popper.scheduleUpdate()},e._addEventListeners=function(){var t=this;R.on(this._element,ze.CLICK,function(e){e.preventDefault(),e.stopPropagation(),t.toggle()})},e._getConfig=function(t){return t=o({},this.constructor.Default,ut.getDataAttributes(this._element),t),g(Qe,t,this.constructor.DefaultType),t},e._getMenuElement=function(){if(!this._menu){var e=t._getParentFromElement(this._element);e&&(this._menu=U.findOne(an,e))}return this._menu},e._getPlacement=function(){var t=this._element.parentNode,e=hn;return t.classList.contains(Je)?(e=fn,this._menu.classList.contains(nn)&&(e=un)):t.classList.contains(tn)?e=pn:t.classList.contains(en)?e=gn:this._menu.classList.contains(nn)&&(e=dn),e},e._detectNavbar=function(){return Boolean(U.closest(this._element,".navbar"))},e._getOffset=function(){var t=this,e={};return"function"==typeof this._config.offset?e.fn=function(e){return e.offsets=o({},e.offsets,t._config.offset(e.offsets,t._element)||{}),e}:e.offset=this._config.offset,e},e._getPopperConfig=function(){var t={placement:this._getPlacement(),modifiers:{offset:this._getOffset(),flip:{enabled:this._config.flip},preventOverflow:{boundariesElement:this._config.boundary}}};return"static"===this._config.display&&(t.modifiers.applyStyle={enabled:!1}),t},t._dropdownInterface=function(e,n){var i=E.getData(e,Ge);if(i||(i=new t(e,"object"==typeof n?n:null)),"string"==typeof n){if(void 0===i[n])throw new Error('No method named "'+n+'"');i[n]()}},t._jQueryInterface=function(e){return this.each(function(){t._dropdownInterface(this,e)})},t._clearMenus=function(e){if(!e||3!==e.which&&("keyup"!==e.type||9===e.which))for(var n=m(U.find(rn)),i=0,o=n.length;i0&&r--,40===e.which&&rdocument.documentElement.clientHeight;!this._isBodyOverflowing&&t&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),this._isBodyOverflowing&&!t&&(this._element.style.paddingRight=this._scrollbarWidth+"px")},e._resetAdjustments=function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""},e._checkScrollbar=function(){var t=document.body.getBoundingClientRect();this._isBodyOverflowing=t.left+t.right
',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:Rn},Qn="show",Gn="out",qn={HIDE:"hide.bs.tooltip",HIDDEN:"hidden.bs.tooltip",SHOW:"show.bs.tooltip",SHOWN:"shown.bs.tooltip",INSERTED:"inserted.bs.tooltip",CLICK:"click.bs.tooltip",FOCUSIN:"focusin.bs.tooltip",FOCUSOUT:"focusout.bs.tooltip",MOUSEENTER:"mouseenter.bs.tooltip",MOUSELEAVE:"mouseleave.bs.tooltip"},Xn="fade",zn="show",Zn=".tooltip-inner",$n=".tooltip-arrow",Jn="hover",ti="focus",ei="click",ni="manual",ii=function(){function t(t,e){if(void 0===Ye)throw new TypeError("Bootstrap's tooltips require Popper.js (https://popper.js.org)");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(),E.setData(t,this.constructor.DATA_KEY,this)}var e=t.prototype;return e.enable=function(){this._isEnabled=!0},e.disable=function(){this._isEnabled=!1},e.toggleEnabled=function(){this._isEnabled=!this._isEnabled},e.toggle=function(t){if(this._isEnabled)if(t){var e=this.constructor.DATA_KEY,n=E.getData(t.delegateTarget,e);n||(n=new this.constructor(t.delegateTarget,this._getDelegateConfig()),E.setData(t.delegateTarget,e,n)),n._activeTrigger.click=!n._activeTrigger.click,n._isWithActiveTrigger()?n._enter(null,n):n._leave(null,n)}else{if(this.getTipElement().classList.contains(zn))return void this._leave(null,this);this._enter(null,this)}},e.dispose=function(){clearTimeout(this._timeout),E.removeData(this.element,this.constructor.DATA_KEY),R.off(this.element,this.constructor.EVENT_KEY),R.off(U.closest(this.element,".modal"),"hide.bs.modal"),this.tip&&this.tip.parentNode.removeChild(this.tip),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},e.show=function(){var t=this;if("none"===this.element.style.display)throw new Error("Please use show on visible elements");if(this.isWithContent()&&this._isEnabled){var e=R.trigger(this.element,this.constructor.Event.SHOW),n=function t(e){if(!document.documentElement.attachShadow)return null;if("function"==typeof e.getRootNode){var n=e.getRootNode();return n instanceof ShadowRoot?n:null}return e instanceof ShadowRoot?e:e.parentNode?t(e.parentNode):null}(this.element),i=null!==n?n.contains(this.element):this.element.ownerDocument.documentElement.contains(this.element);if(e.defaultPrevented||!i)return;var o=this.getTipElement(),r=c(this.constructor.NAME);o.setAttribute("id",r),this.element.setAttribute("aria-describedby",r),this.setContent(),this.config.animation&&o.classList.add(Xn);var s="function"==typeof this.config.placement?this.config.placement.call(this,o,this.element):this.config.placement,l=this._getAttachment(s);this.addAttachmentClass(l);var f=this._getContainer();E.setData(o,this.constructor.DATA_KEY,this),this.element.ownerDocument.documentElement.contains(this.tip)||f.appendChild(o),R.trigger(this.element,this.constructor.Event.INSERTED),this._popper=new Ye(this.element,o,{placement:l,modifiers:{offset:this._getOffset(),flip:{behavior:this.config.fallbackPlacement},arrow:{element:$n},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(e){e.originalPlacement!==e.placement&&t._handlePopperPlacementChange(e)},onUpdate:function(e){return t._handlePopperPlacementChange(e)}}),o.classList.add(zn),"ontouchstart"in document.documentElement&&m(document.body.children).forEach(function(t){R.on(t,"mouseover",function(){})});var h=function(){t.config.animation&&t._fixTransition();var e=t._hoverState;t._hoverState=null,R.trigger(t.element,t.constructor.Event.SHOWN),e===Gn&&t._leave(null,t)};if(this.tip.classList.contains(Xn)){var d=u(this.tip);R.one(this.tip,a,h),p(this.tip,d)}else h()}},e.hide=function(t){var e=this,n=this.getTipElement(),i=function(){e._hoverState!==Qn&&n.parentNode&&n.parentNode.removeChild(n),e._cleanTipClass(),e.element.removeAttribute("aria-describedby"),R.trigger(e.element,e.constructor.Event.HIDDEN),null!==e._popper&&e._popper.destroy(),t&&t()};if(!R.trigger(this.element,this.constructor.Event.HIDE).defaultPrevented){if(n.classList.remove(zn),"ontouchstart"in document.documentElement&&m(document.body.children).forEach(function(t){return R.off(t,"mouseover",v)}),this._activeTrigger[ei]=!1,this._activeTrigger[ti]=!1,this._activeTrigger[Jn]=!1,this.tip.classList.contains(Xn)){var o=u(n);R.one(n,a,i),p(n,o)}else i();this._hoverState=""}},e.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},e.isWithContent=function(){return Boolean(this.getTitle())},e.addAttachmentClass=function(t){this.getTipElement().classList.add("bs-tooltip-"+t)},e.getTipElement=function(){if(this.tip)return this.tip;var t=document.createElement("div");return t.innerHTML=this.config.template,this.tip=t.children[0],this.tip},e.setContent=function(){var t=this.getTipElement();this.setElementContent(U.findOne(Zn,t),this.getTitle()),t.classList.remove(Xn),t.classList.remove(zn)},e.setElementContent=function(t,e){if(null!==t)return"object"==typeof e&&(e.nodeType||e.jquery)?(e.jquery&&(e=e[0]),void(this.config.html?e.parentNode!==t&&(t.innerHTML="",t.appendChild(e)):t.innerText=e.textContent)):void(this.config.html?(this.config.sanitize&&(e=Wn(e,this.config.whiteList,this.config.sanitizeFn)),t.innerHTML=e):t.innerText=e)},e.getTitle=function(){var t=this.element.getAttribute("data-original-title");return t||(t="function"==typeof this.config.title?this.config.title.call(this.element):this.config.title),t},e._getOffset=function(){var t=this,e={};return"function"==typeof this.config.offset?e.fn=function(e){return e.offsets=o({},e.offsets,t.config.offset(e.offsets,t.element)||{}),e}:e.offset=this.config.offset,e},e._getContainer=function(){return!1===this.config.container?document.body:d(this.config.container)?this.config.container:U.findOne(this.config.container)},e._getAttachment=function(t){return Vn[t.toUpperCase()]},e._setListeners=function(){var t=this;this.config.trigger.split(" ").forEach(function(e){if("click"===e)R.on(t.element,t.constructor.Event.CLICK,t.config.selector,function(e){return t.toggle(e)});else if(e!==ni){var n=e===Jn?t.constructor.Event.MOUSEENTER:t.constructor.Event.FOCUSIN,i=e===Jn?t.constructor.Event.MOUSELEAVE:t.constructor.Event.FOCUSOUT;R.on(t.element,n,t.config.selector,function(e){return t._enter(e)}),R.on(t.element,i,t.config.selector,function(e){return t._leave(e)})}}),R.on(U.closest(this.element,".modal"),"hide.bs.modal",function(){t.element&&t.hide()}),this.config.selector?this.config=o({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},e._fixTitle=function(){var t=typeof this.element.getAttribute("data-original-title");(this.element.getAttribute("title")||"string"!==t)&&(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))},e._enter=function(t,e){var n=this.constructor.DATA_KEY;(e=e||E.getData(t.delegateTarget,n))||(e=new this.constructor(t.delegateTarget,this._getDelegateConfig()),E.setData(t.delegateTarget,n,e)),t&&(e._activeTrigger["focusin"===t.type?ti:Jn]=!0),e.getTipElement().classList.contains(zn)||e._hoverState===Qn?e._hoverState=Qn:(clearTimeout(e._timeout),e._hoverState=Qn,e.config.delay&&e.config.delay.show?e._timeout=setTimeout(function(){e._hoverState===Qn&&e.show()},e.config.delay.show):e.show())},e._leave=function(t,e){var n=this.constructor.DATA_KEY;(e=e||E.getData(t.delegateTarget,n))||(e=new this.constructor(t.delegateTarget,this._getDelegateConfig()),E.setData(t.delegateTarget,n,e)),t&&(e._activeTrigger["focusout"===t.type?ti:Jn]=!1),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState=Gn,e.config.delay&&e.config.delay.hide?e._timeout=setTimeout(function(){e._hoverState===Gn&&e.hide()},e.config.delay.hide):e.hide())},e._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},e._getConfig=function(t){var e=ut.getDataAttributes(this.element);return Object.keys(e).forEach(function(t){-1!==Bn.indexOf(t)&&delete e[t]}),t&&"object"==typeof t.container&&t.container.jquery&&(t.container=t.container[0]),"number"==typeof(t=o({},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()),g(Fn,t,this.constructor.DefaultType),t.sanitize&&(t.template=Wn(t.template,t.whiteList,t.sanitizeFn)),t},e._getDelegateConfig=function(){var t={};if(this.config)for(var e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t},e._cleanTipClass=function(){var t=this.getTipElement(),e=t.getAttribute("class").match(Un);null!==e&&e.length&&e.map(function(t){return t.trim()}).forEach(function(e){return t.classList.remove(e)})},e._handlePopperPlacementChange=function(t){var e=t.instance;this.tip=e.popper,this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(t.placement))},e._fixTransition=function(){var t=this.getTipElement(),e=this.config.animation;null===t.getAttribute("x-placement")&&(t.classList.remove(Xn),this.config.animation=!1,this.hide(),this.show(),this.config.animation=e)},t._jQueryInterface=function(e){return this.each(function(){var n=E.getData(this,"bs.tooltip"),i="object"==typeof e&&e;if((n||!/dispose|hide/.test(e))&&(n||(n=new t(this,i)),"string"==typeof e)){if(void 0===n[e])throw new TypeError('No method named "'+e+'"');n[e]()}})},t._getInstance=function(t){return E.getData(t,"bs.tooltip")},n(t,null,[{key:"VERSION",get:function(){return"4.3.1"}},{key:"Default",get:function(){return Yn}},{key:"NAME",get:function(){return Fn}},{key:"DATA_KEY",get:function(){return"bs.tooltip"}},{key:"Event",get:function(){return qn}},{key:"EVENT_KEY",get:function(){return".bs.tooltip"}},{key:"DefaultType",get:function(){return Kn}}]),t}();if(void 0!==l){var oi=l.fn.tooltip;l.fn.tooltip=ii._jQueryInterface,l.fn.tooltip.Constructor=ii,l.fn.tooltip.noConflict=function(){return l.fn.tooltip=oi,ii._jQueryInterface}}var ri="popover",si=new RegExp("(^|\\s)bs-popover\\S+","g"),ai=o({},ii.Default,{placement:"right",trigger:"click",content:"",template:''}),li=o({},ii.DefaultType,{content:"(string|element|function)"}),ci="fade",fi="show",ui=".popover-header",hi=".popover-body",di={HIDE:"hide.bs.popover",HIDDEN:"hidden.bs.popover",SHOW:"show.bs.popover",SHOWN:"shown.bs.popover",INSERTED:"inserted.bs.popover",CLICK:"click.bs.popover",FOCUSIN:"focusin.bs.popover",FOCUSOUT:"focusout.bs.popover",MOUSEENTER:"mouseenter.bs.popover",MOUSELEAVE:"mouseleave.bs.popover"},pi=function(t){var e,i;function o(){return t.apply(this,arguments)||this}i=t,(e=o).prototype=Object.create(i.prototype),e.prototype.constructor=e,e.__proto__=i;var r=o.prototype;return r.isWithContent=function(){return this.getTitle()||this._getContent()},r.addAttachmentClass=function(t){this.getTipElement().classList.add("bs-popover-"+t)},r.setContent=function(){var t=this.getTipElement();this.setElementContent(U.findOne(ui,t),this.getTitle());var e=this._getContent();"function"==typeof e&&(e=e.call(this.element)),this.setElementContent(U.findOne(hi,t),e),t.classList.remove(ci),t.classList.remove(fi)},r._getContent=function(){return this.element.getAttribute("data-content")||this.config.content},r._cleanTipClass=function(){var t=this.getTipElement(),e=t.getAttribute("class").match(si);null!==e&&e.length>0&&e.map(function(t){return t.trim()}).forEach(function(e){return t.classList.remove(e)})},o._jQueryInterface=function(t){return this.each(function(){var e=E.getData(this,"bs.popover"),n="object"==typeof t?t:null;if((e||!/dispose|hide/.test(t))&&(e||(e=new o(this,n),E.setData(this,"bs.popover",e)),"string"==typeof t)){if(void 0===e[t])throw new TypeError('No method named "'+t+'"');e[t]()}})},o._getInstance=function(t){return E.getData(t,"bs.popover")},n(o,null,[{key:"VERSION",get:function(){return"4.3.1"}},{key:"Default",get:function(){return ai}},{key:"NAME",get:function(){return ri}},{key:"DATA_KEY",get:function(){return"bs.popover"}},{key:"Event",get:function(){return di}},{key:"EVENT_KEY",get:function(){return".bs.popover"}},{key:"DefaultType",get:function(){return li}}]),o}(ii);if(void 0!==l){var gi=l.fn.popover;l.fn.popover=pi._jQueryInterface,l.fn.popover.Constructor=pi,l.fn.popover.noConflict=function(){return l.fn.popover=gi,pi._jQueryInterface}}var mi="scrollspy",_i="bs.scrollspy",vi="."+_i,bi={offset:10,method:"auto",target:""},yi={offset:"number",method:"string",target:"(string|element)"},Ei={ACTIVATE:"activate"+vi,SCROLL:"scroll"+vi,LOAD_DATA_API:"load"+vi+".data-api"},wi="dropdown-item",Di="active",Ti={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"},Ii="offset",Ai="position",Oi=function(){function t(t,e){var n=this;this._element=t,this._scrollElement="BODY"===t.tagName?window:t,this._config=this._getConfig(e),this._selector=this._config.target+" "+Ti.NAV_LINKS+","+this._config.target+" "+Ti.LIST_ITEMS+","+this._config.target+" "+Ti.DROPDOWN_ITEMS,this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,R.on(this._scrollElement,Ei.SCROLL,function(t){return n._process(t)}),this.refresh(),this._process(),E.setData(t,_i,this)}var e=t.prototype;return e.refresh=function(){var t=this,e=this._scrollElement===this._scrollElement.window?Ii:Ai,n="auto"===this._config.method?e:this._config.method,i=n===Ai?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),m(U.find(this._selector)).map(function(t){var e,o=f(t);if(o&&(e=U.findOne(o)),e){var r=e.getBoundingClientRect();if(r.width||r.height)return[ut[n](e).top+i,o]}return null}).filter(function(t){return t}).sort(function(t,e){return t[0]-e[0]}).forEach(function(e){t._offsets.push(e[0]),t._targets.push(e[1])})},e.dispose=function(){E.removeData(this._element,_i),R.off(this._scrollElement,vi),this._element=null,this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null},e._getConfig=function(t){if("string"!=typeof(t=o({},bi,"object"==typeof t&&t?t:{})).target){var e=t.target.id;e||(e=c(mi),t.target.id=e),t.target="#"+e}return g(mi,t,yi),t},e._getScrollTop=function(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop},e._getScrollHeight=function(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)},e._getOffsetHeight=function(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height},e._process=function(){var t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),n=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),t>=n){var i=this._targets[this._targets.length-1];this._activeTarget!==i&&this._activate(i)}else{if(this._activeTarget&&t0)return this._activeTarget=null,void this._clear();for(var o=this._offsets.length;o--;){this._activeTarget!==this._targets[o]&&t>=this._offsets[o]&&(void 0===this._offsets[o+1]||t-1||(r=t),[i,o,r]}function H(t,e,n,i,o){if("string"==typeof e&&t){n||(n=i,i=null);var r=x(e,n,i),s=r[0],a=r[1],l=r[2],c=N(t),f=c[l]||(c[l]={}),u=P(f,a,s?n:null);if(u)u.oneOff=u.oneOff&&o;else{var h=C(a,e.replace(w,"")),d=s?function(t,e,n){return function i(o){for(var r=t.querySelectorAll(e),s=o.target;s&&s!==this;s=s.parentNode)for(var a=r.length;a--;)if(r[a]===s)return k(o,s),i.oneOff&&j.off(t,o.type,n),n.apply(s,[o]);return null}}(t,n,i):function(t,e){return function n(i){return k(i,t),n.oneOff&&j.off(t,i.type,e),e.apply(t,[i])}}(t,n);d.delegationSelector=s?n:null,d.originalHandler=a,d.oneOff=o,d.uidEvent=h,f[h]=d,t.addEventListener(l,d,s)}}}function M(t,e,n,i,o){var r=P(e[n],i,o);null!==r&&(t.removeEventListener(n,r,Boolean(o)),delete e[n][r.uidEvent])}var j={on:function(t,e,n,i){H(t,e,n,i,!1)},one:function(t,e,n,i){H(t,e,n,i,!0)},off:function(t,e,n,i){if("string"==typeof e&&t){var o=x(e,n,i),r=o[0],s=o[1],a=o[2],l=a!==e,c=N(t),f="."===e.charAt(0);if(void 0===s){f&&Object.keys(c).forEach(function(n){!function(t,e,n,i){var o=e[n]||{};Object.keys(o).forEach(function(r){if(r.indexOf(i)>-1){var s=o[r];M(t,e,n,s.originalHandler,s.delegationSelector)}})}(t,c,n,e.substr(1))});var u=c[a]||{};Object.keys(u).forEach(function(n){var i=n.replace(I,"");if(!l||e.indexOf(i)>-1){var o=u[n];M(t,c,a,o.originalHandler,o.delegationSelector)}})}else{if(!c||!c[a])return;M(t,c,a,s,r?n:null)}}},trigger:function(t,e,n){if("string"!=typeof e||!t)return null;var i,o=e.replace(D,""),r=e!==o,s=S.indexOf(o)>-1,l=!0,c=!0,f=!1,u=null;return r&&void 0!==a&&(i=a.Event(e,n),a(t).trigger(i),l=!i.isPropagationStopped(),c=!i.isImmediatePropagationStopped(),f=i.isDefaultPrevented()),s?(u=document.createEvent("HTMLEvents")).initEvent(o,l,!0):u=new CustomEvent(e,{bubbles:l,cancelable:!0}),void 0!==n&&Object.keys(n).forEach(function(t){Object.defineProperty(u,t,{get:function(){return n[t]}})}),f&&(u.preventDefault(),y.defaultPreventedPreservedOnDispatch||Object.defineProperty(u,"defaultPrevented",{get:function(){return!0}})),c&&t.dispatchEvent(u),u.defaultPrevented&&void 0!==i&&i.preventDefault(),u}},R=y.find,W=y.findOne,F={matches:function(t,e){return t.matches(e)},find:function(t,e){return void 0===e&&(e=document.documentElement),"string"!=typeof t?null:R.call(e,t)},findOne:function(t,e){return void 0===e&&(e=document.documentElement),"string"!=typeof t?null:W.call(e,t)},children:function(t,e){var n=this;if("string"!=typeof e)return null;var i=g(t.children);return i.filter(function(t){return n.matches(t,e)})},parents:function(t,e){if("string"!=typeof e)return null;for(var n=[],i=t.parentNode;i&&i.nodeType===Node.ELEMENT_NODE&&3!==i.nodeType;)this.matches(i,e)&&n.push(i),i=i.parentNode;return n},closest:function(t,e){return"string"!=typeof e?null:t.closest(e)},prev:function(t,e){if("string"!=typeof e)return null;for(var n=[],i=t.previousSibling;i&&i.nodeType===Node.ELEMENT_NODE&&3!==i.nodeType;)this.matches(i,e)&&n.push(i),i=i.previousSibling;return n}},U="bs.alert",B="."+U,K={CLOSE:"close"+B,CLOSED:"closed"+B,CLICK_DATA_API:"click"+B+".data-api"},V="alert",Y="fade",Q="show",G=function(){function t(t){this._element=t,this._element&&E.setData(t,U,this)}var n=t.prototype;return n.close=function(t){var e=this._element;t&&(e=this._getRootElement(t));var n=this._triggerCloseEvent(e);null===n||n.defaultPrevented||this._removeElement(e)},n.dispose=function(){E.removeData(this._element,U),this._element=null},n._getRootElement=function(t){var e=c(t),n=!1;return e&&(n=F.findOne(e)),n||(n=F.closest(t,"."+V)),n},n._triggerCloseEvent=function(t){return j.trigger(t,K.CLOSE)},n._removeElement=function(t){var e=this;if(t.classList.remove(Q),t.classList.contains(Y)){var n=f(t);j.one(t,s,function(n){return e._destroyElement(t,n)}),d(t,n)}else this._destroyElement(t)},n._destroyElement=function(t){t.parentNode&&t.parentNode.removeChild(t),j.trigger(t,K.CLOSED)},t._jQueryInterface=function(e){return this.each(function(){var n=E.getData(this,U);n||(n=new t(this)),"close"===e&&n[e](this)})},t._handleDismiss=function(t){return function(e){e&&e.preventDefault(),t.close(this)}},t._getInstance=function(t){return E.getData(t,U)},e(t,null,[{key:"VERSION",get:function(){return"4.3.1"}}]),t}();if(j.on(document,K.CLICK_DATA_API,'[data-dismiss="alert"]',G._handleDismiss(new G)),void 0!==a){var q=a.fn.alert;a.fn.alert=G._jQueryInterface,a.fn.alert.Constructor=G,a.fn.alert.noConflict=function(){return a.fn.alert=q,G._jQueryInterface}}var X="bs.button",z="."+X,Z="active",$="btn",J="focus",tt='[data-toggle^="button"]',et='[data-toggle="buttons"]',nt='input:not([type="hidden"])',it=".active",ot=".btn",rt={CLICK_DATA_API:"click"+z+".data-api",FOCUS_DATA_API:"focus"+z+".data-api",BLUR_DATA_API:"blur"+z+".data-api"},st=function(){function t(t){this._element=t,E.setData(t,X,this)}var n=t.prototype;return n.toggle=function(){var t=!0,e=!0,n=F.closest(this._element,et);if(n){var i=F.findOne(nt,this._element);if(i){if("radio"===i.type)if(i.checked&&this._element.classList.contains(Z))t=!1;else{var o=F.findOne(it,n);o&&o.classList.remove(Z)}if(t){if(i.hasAttribute("disabled")||n.hasAttribute("disabled")||i.classList.contains("disabled")||n.classList.contains("disabled"))return;i.checked=!this._element.classList.contains(Z),j.trigger(i,"change")}i.focus(),e=!1}}e&&this._element.setAttribute("aria-pressed",!this._element.classList.contains(Z)),t&&this._element.classList.toggle(Z)},n.dispose=function(){E.removeData(this._element,X),this._element=null},t._jQueryInterface=function(e){return this.each(function(){var n=E.getData(this,X);n||(n=new t(this)),"toggle"===e&&n[e]()})},t._getInstance=function(t){return E.getData(t,X)},e(t,null,[{key:"VERSION",get:function(){return"4.3.1"}}]),t}();if(j.on(document,rt.CLICK_DATA_API,tt,function(t){t.preventDefault();var e=t.target;e.classList.contains($)||(e=F.closest(e,ot));var n=E.getData(e,X);n||(n=new st(e),E.setData(e,X,n)),n.toggle()}),j.on(document,rt.FOCUS_DATA_API,tt,function(t){F.closest(t.target,ot).classList.add(J)}),j.on(document,rt.BLUR_DATA_API,tt,function(t){F.closest(t.target,ot).classList.remove(J)}),void 0!==a){var at=a.fn.button;a.fn.button=st._jQueryInterface,a.fn.button.Constructor=st,a.fn.button.noConflict=function(){return a.fn.button=at,st._jQueryInterface}}function lt(t){return"true"===t||"false"!==t&&(t===Number(t).toString()?Number(t):""===t||"null"===t?null:t)}function ct(t){return t.replace(/[A-Z]/g,function(t){return t.toLowerCase()})}var ft={setDataAttribute:function(t,e,n){t.setAttribute("data-"+ct(e),n)},removeDataAttribute:function(t,e){t.removeAttribute("data-"+ct(e))},getDataAttributes:function(t){if(!t)return{};var e=i({},t.dataset);return Object.keys(e).forEach(function(t){e[t]=lt(e[t])}),e},getDataAttribute:function(t,e){return lt(t.getAttribute("data-"+ct(e)))},offset:function(t){var e=t.getBoundingClientRect();return{top:e.top+document.body.scrollTop,left:e.left+document.body.scrollLeft}},position:function(t){return{top:t.offsetTop,left:t.offsetLeft}},toggleClass:function(t,e){t&&(t.classList.contains(e)?t.classList.remove(e):t.classList.add(e))}},ut="carousel",ht="bs.carousel",dt="."+ht,pt={interval:5e3,keyboard:!0,slide:!1,pause:"hover",wrap:!0,touch:!0},gt={interval:"(number|boolean)",keyboard:"boolean",slide:"(boolean|string)",pause:"(string|boolean)",wrap:"boolean",touch:"boolean"},mt="next",_t="prev",vt="left",bt="right",Et={SLIDE:"slide"+dt,SLID:"slid"+dt,KEYDOWN:"keydown"+dt,MOUSEENTER:"mouseenter"+dt,MOUSELEAVE:"mouseleave"+dt,TOUCHSTART:"touchstart"+dt,TOUCHMOVE:"touchmove"+dt,TOUCHEND:"touchend"+dt,POINTERDOWN:"pointerdown"+dt,POINTERUP:"pointerup"+dt,DRAG_START:"dragstart"+dt,LOAD_DATA_API:"load"+dt+".data-api",CLICK_DATA_API:"click"+dt+".data-api"},yt="carousel",wt="active",Dt="slide",Tt="carousel-item-right",It="carousel-item-left",At="carousel-item-next",Ot="carousel-item-prev",Lt="pointer-event",St={ACTIVE:".active",ACTIVE_ITEM:".active.carousel-item",ITEM:".carousel-item",ITEM_IMG:".carousel-item img",NEXT_PREV:".carousel-item-next, .carousel-item-prev",INDICATORS:".carousel-indicators",DATA_SLIDE:"[data-slide], [data-slide-to]",DATA_RIDE:'[data-ride="carousel"]'},Ct={TOUCH:"touch",PEN:"pen"},Nt=function(){function t(t,e){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=F.findOne(St.INDICATORS,this._element),this._touchSupported="ontouchstart"in document.documentElement||navigator.maxTouchPoints>0,this._pointerEvent=Boolean(window.PointerEvent||window.MSPointerEvent),this._addEventListeners(),E.setData(t,ht,this)}var n=t.prototype;return n.next=function(){this._isSliding||this._slide(mt)},n.nextWhenVisible=function(){!document.hidden&&m(this._element)&&this.next()},n.prev=function(){this._isSliding||this._slide(_t)},n.pause=function(t){t||(this._isPaused=!0),F.findOne(St.NEXT_PREV,this._element)&&(u(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null},n.cycle=function(t){t||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config&&this._config.interval&&!this._isPaused&&(this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))},n.to=function(t){var e=this;this._activeElement=F.findOne(St.ACTIVE_ITEM,this._element);var n=this._getItemIndex(this._activeElement);if(!(t>this._items.length-1||t<0))if(this._isSliding)j.one(this._element,Et.SLID,function(){return e.to(t)});else{if(n===t)return this.pause(),void this.cycle();var i=t>n?mt:_t;this._slide(i,this._items[t])}},n.dispose=function(){j.off(this._element,dt),E.removeData(this._element,ht),this._items=null,this._config=null,this._element=null,this._interval=null,this._isPaused=null,this._isSliding=null,this._activeElement=null,this._indicatorsElement=null},n._getConfig=function(t){return t=i({},pt,t),p(ut,t,gt),t},n._handleSwipe=function(){var t=Math.abs(this.touchDeltaX);if(!(t<=40)){var e=t/this.touchDeltaX;e>0&&this.prev(),e<0&&this.next()}},n._addEventListeners=function(){var t=this;this._config.keyboard&&j.on(this._element,Et.KEYDOWN,function(e){return t._keydown(e)}),"hover"===this._config.pause&&(j.on(this._element,Et.MOUSEENTER,function(e){return t.pause(e)}),j.on(this._element,Et.MOUSELEAVE,function(e){return t.cycle(e)})),this._config.touch&&this._addTouchEventListeners()},n._addTouchEventListeners=function(){var t=this;if(this._touchSupported){var e=function(e){t._pointerEvent&&Ct[e.pointerType.toUpperCase()]?t.touchStartX=e.clientX:t._pointerEvent||(t.touchStartX=e.touches[0].clientX)},n=function(e){t._pointerEvent&&Ct[e.pointerType.toUpperCase()]&&(t.touchDeltaX=e.clientX-t.touchStartX),t._handleSwipe(),"hover"===t._config.pause&&(t.pause(),t.touchTimeout&&clearTimeout(t.touchTimeout),t.touchTimeout=setTimeout(function(e){return t.cycle(e)},500+t._config.interval))};g(F.find(St.ITEM_IMG,this._element)).forEach(function(t){j.on(t,Et.DRAG_START,function(t){return t.preventDefault()})}),this._pointerEvent?(j.on(this._element,Et.POINTERDOWN,function(t){return e(t)}),j.on(this._element,Et.POINTERUP,function(t){return n(t)}),this._element.classList.add(Lt)):(j.on(this._element,Et.TOUCHSTART,function(t){return e(t)}),j.on(this._element,Et.TOUCHMOVE,function(e){return function(e){e.touches&&e.touches.length>1?t.touchDeltaX=0:t.touchDeltaX=e.touches[0].clientX-t.touchStartX}(e)}),j.on(this._element,Et.TOUCHEND,function(t){return n(t)}))}},n._keydown=function(t){if(!/input|textarea/i.test(t.target.tagName))switch(t.which){case 37:t.preventDefault(),this.prev();break;case 39:t.preventDefault(),this.next()}},n._getItemIndex=function(t){return this._items=t&&t.parentNode?g(F.find(St.ITEM,t.parentNode)):[],this._items.indexOf(t)},n._getItemByDirection=function(t,e){var n=t===mt,i=t===_t,o=this._getItemIndex(e),r=this._items.length-1;if((i&&0===o||n&&o===r)&&!this._config.wrap)return e;var s=(o+(t===_t?-1:1))%this._items.length;return-1===s?this._items[this._items.length-1]:this._items[s]},n._triggerSlideEvent=function(t,e){var n=this._getItemIndex(t),i=this._getItemIndex(F.findOne(St.ACTIVE_ITEM,this._element));return j.trigger(this._element,Et.SLIDE,{relatedTarget:t,direction:e,from:i,to:n})},n._setActiveIndicatorElement=function(t){if(this._indicatorsElement){for(var e=F.find(St.ACTIVE,this._indicatorsElement),n=0;n0)for(var i=0;i=0){zt=1;break}var $t=qt&&window.Promise?function(t){var e=!1;return function(){e||(e=!0,window.Promise.resolve().then(function(){e=!1,t()}))}}:function(t){var e=!1;return function(){e||(e=!0,setTimeout(function(){e=!1,t()},zt))}};function Jt(t){return t&&"[object Function]"==={}.toString.call(t)}function te(t,e){if(1!==t.nodeType)return[];var n=t.ownerDocument.defaultView.getComputedStyle(t,null);return e?n[e]:n}function ee(t){return"HTML"===t.nodeName?t:t.parentNode||t.host}function ne(t){if(!t)return document.body;switch(t.nodeName){case"HTML":case"BODY":return t.ownerDocument.body;case"#document":return t.body}var e=te(t),n=e.overflow,i=e.overflowX,o=e.overflowY;return/(auto|scroll|overlay)/.test(n+o+i)?t:ne(ee(t))}var ie=qt&&!(!window.MSInputMethodContext||!document.documentMode),oe=qt&&/MSIE 10/.test(navigator.userAgent);function re(t){return 11===t?ie:10===t?oe:ie||oe}function se(t){if(!t)return document.documentElement;for(var e=re(10)?document.body:null,n=t.offsetParent||null;n===e&&t.nextElementSibling;)n=(t=t.nextElementSibling).offsetParent;var i=n&&n.nodeName;return i&&"BODY"!==i&&"HTML"!==i?-1!==["TH","TD","TABLE"].indexOf(n.nodeName)&&"static"===te(n,"position")?se(n):n:t?t.ownerDocument.documentElement:document.documentElement}function ae(t){return null!==t.parentNode?ae(t.parentNode):t}function le(t,e){if(!(t&&t.nodeType&&e&&e.nodeType))return document.documentElement;var n=t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_FOLLOWING,i=n?t:e,o=n?e:t,r=document.createRange();r.setStart(i,0),r.setEnd(o,0);var s,a,l=r.commonAncestorContainer;if(t!==l&&e!==l||i.contains(o))return"BODY"===(a=(s=l).nodeName)||"HTML"!==a&&se(s.firstElementChild)!==s?se(l):l;var c=ae(t);return c.host?le(c.host,e):le(t,ae(e).host)}function ce(t){var e="top"===(arguments.length>1&&void 0!==arguments[1]?arguments[1]:"top")?"scrollTop":"scrollLeft",n=t.nodeName;if("BODY"===n||"HTML"===n){var i=t.ownerDocument.documentElement;return(t.ownerDocument.scrollingElement||i)[e]}return t[e]}function fe(t,e){var n="x"===e?"Left":"Top",i="Left"===n?"Right":"Bottom";return parseFloat(t["border"+n+"Width"],10)+parseFloat(t["border"+i+"Width"],10)}function ue(t,e,n,i){return Math.max(e["offset"+t],e["scroll"+t],n["client"+t],n["offset"+t],n["scroll"+t],re(10)?parseInt(n["offset"+t])+parseInt(i["margin"+("Height"===t?"Top":"Left")])+parseInt(i["margin"+("Height"===t?"Bottom":"Right")]):0)}function he(t){var e=t.body,n=t.documentElement,i=re(10)&&getComputedStyle(n);return{height:ue("Height",e,n,i),width:ue("Width",e,n,i)}}var de=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},pe=function(){function t(t,e){for(var n=0;n2&&void 0!==arguments[2]&&arguments[2],i=re(10),o="HTML"===e.nodeName,r=ve(t),s=ve(e),a=ne(t),l=te(e),c=parseFloat(l.borderTopWidth,10),f=parseFloat(l.borderLeftWidth,10);n&&o&&(s.top=Math.max(s.top,0),s.left=Math.max(s.left,0));var u=_e({top:r.top-s.top-c,left:r.left-s.left-f,width:r.width,height:r.height});if(u.marginTop=0,u.marginLeft=0,!i&&o){var h=parseFloat(l.marginTop,10),d=parseFloat(l.marginLeft,10);u.top-=c-h,u.bottom-=c-h,u.left-=f-d,u.right-=f-d,u.marginTop=h,u.marginLeft=d}return(i&&!n?e.contains(a):e===a&&"BODY"!==a.nodeName)&&(u=function(t,e){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=ce(e,"top"),o=ce(e,"left"),r=n?-1:1;return t.top+=i*r,t.bottom+=i*r,t.left+=o*r,t.right+=o*r,t}(u,e)),u}function Ee(t){if(!t||!t.parentElement||re())return document.documentElement;for(var e=t.parentElement;e&&"none"===te(e,"transform");)e=e.parentElement;return e||document.documentElement}function ye(t,e,n,i){var o=arguments.length>4&&void 0!==arguments[4]&&arguments[4],r={top:0,left:0},s=o?Ee(t):le(t,e);if("viewport"===i)r=function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=t.ownerDocument.documentElement,i=be(t,n),o=Math.max(n.clientWidth,window.innerWidth||0),r=Math.max(n.clientHeight,window.innerHeight||0),s=e?0:ce(n),a=e?0:ce(n,"left");return _e({top:s-i.top+i.marginTop,left:a-i.left+i.marginLeft,width:o,height:r})}(s,o);else{var a=void 0;"scrollParent"===i?"BODY"===(a=ne(ee(e))).nodeName&&(a=t.ownerDocument.documentElement):a="window"===i?t.ownerDocument.documentElement:i;var l=be(a,s,o);if("HTML"!==a.nodeName||function t(e){var n=e.nodeName;if("BODY"===n||"HTML"===n)return!1;if("fixed"===te(e,"position"))return!0;var i=ee(e);return!!i&&t(i)}(s))r=l;else{var c=he(t.ownerDocument),f=c.height,u=c.width;r.top+=l.top-l.marginTop,r.bottom=f+l.top,r.left+=l.left-l.marginLeft,r.right=u+l.left}}var h="number"==typeof(n=n||0);return r.left+=h?n:n.left||0,r.top+=h?n:n.top||0,r.right-=h?n:n.right||0,r.bottom-=h?n:n.bottom||0,r}function we(t,e,n,i,o){var r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0;if(-1===t.indexOf("auto"))return t;var s=ye(n,i,r,o),a={top:{width:s.width,height:e.top-s.top},right:{width:s.right-e.right,height:s.height},bottom:{width:s.width,height:s.bottom-e.bottom},left:{width:e.left-s.left,height:s.height}},l=Object.keys(a).map(function(t){return me({key:t},a[t],{area:(e=a[t],e.width*e.height)});var e}).sort(function(t,e){return e.area-t.area}),c=l.filter(function(t){var e=t.width,i=t.height;return e>=n.clientWidth&&i>=n.clientHeight}),f=c.length>0?c[0].key:l[0].key,u=t.split("-")[1];return f+(u?"-"+u:"")}function De(t,e,n){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;return be(n,i?Ee(e):le(e,n),i)}function Te(t){var e=t.ownerDocument.defaultView.getComputedStyle(t),n=parseFloat(e.marginTop||0)+parseFloat(e.marginBottom||0),i=parseFloat(e.marginLeft||0)+parseFloat(e.marginRight||0);return{width:t.offsetWidth+i,height:t.offsetHeight+n}}function Ie(t){var e={left:"right",right:"left",bottom:"top",top:"bottom"};return t.replace(/left|right|bottom|top/g,function(t){return e[t]})}function Ae(t,e,n){n=n.split("-")[0];var i=Te(t),o={width:i.width,height:i.height},r=-1!==["right","left"].indexOf(n),s=r?"top":"left",a=r?"left":"top",l=r?"height":"width",c=r?"width":"height";return o[s]=e[s]+e[l]/2-i[l]/2,o[a]=n===a?e[a]-i[c]:e[Ie(a)],o}function Oe(t,e){return Array.prototype.find?t.find(e):t.filter(e)[0]}function Le(t,e,n){return(void 0===n?t:t.slice(0,function(t,e,n){if(Array.prototype.findIndex)return t.findIndex(function(t){return t[e]===n});var i=Oe(t,function(t){return t[e]===n});return t.indexOf(i)}(t,"name",n))).forEach(function(t){t.function&&console.warn("`modifier.function` is deprecated, use `modifier.fn`!");var n=t.function||t.fn;t.enabled&&Jt(n)&&(e.offsets.popper=_e(e.offsets.popper),e.offsets.reference=_e(e.offsets.reference),e=n(e,t))}),e}function Se(t,e){return t.some(function(t){var n=t.name;return t.enabled&&n===e})}function Ce(t){for(var e=[!1,"ms","Webkit","Moz","O"],n=t.charAt(0).toUpperCase()+t.slice(1),i=0;i1&&void 0!==arguments[1]&&arguments[1],n=We.indexOf(t),i=We.slice(n+1).concat(We.slice(0,n));return e?i.reverse():i}var Ue={FLIP:"flip",CLOCKWISE:"clockwise",COUNTERCLOCKWISE:"counterclockwise"};function Be(t,e,n,i){var o=[0,0],r=-1!==["right","left"].indexOf(i),s=t.split(/(\+|\-)/).map(function(t){return t.trim()}),a=s.indexOf(Oe(s,function(t){return-1!==t.search(/,|\s/)}));s[a]&&-1===s[a].indexOf(",")&&console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead.");var l=/\s*,\s*|\s+/,c=-1!==a?[s.slice(0,a).concat([s[a].split(l)[0]]),[s[a].split(l)[1]].concat(s.slice(a+1))]:[s];return(c=c.map(function(t,i){var o=(1===i?!r:r)?"height":"width",s=!1;return t.reduce(function(t,e){return""===t[t.length-1]&&-1!==["+","-"].indexOf(e)?(t[t.length-1]=e,s=!0,t):s?(t[t.length-1]+=e,s=!1,t):t.concat(e)},[]).map(function(t){return function(t,e,n,i){var o=t.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),r=+o[1],s=o[2];if(!r)return t;if(0===s.indexOf("%")){var a=void 0;switch(s){case"%p":a=n;break;case"%":case"%r":default:a=i}return _e(a)[e]/100*r}if("vh"===s||"vw"===s)return("vh"===s?Math.max(document.documentElement.clientHeight,window.innerHeight||0):Math.max(document.documentElement.clientWidth,window.innerWidth||0))/100*r;return r}(t,o,e,n)})})).forEach(function(t,e){t.forEach(function(n,i){xe(n)&&(o[e]+=n*("-"===t[i-1]?-1:1))})}),o}var Ke={placement:"bottom",positionFixed:!1,eventsEnabled:!0,removeOnDestroy:!1,onCreate:function(){},onUpdate:function(){},modifiers:{shift:{order:100,enabled:!0,fn:function(t){var e=t.placement,n=e.split("-")[0],i=e.split("-")[1];if(i){var o=t.offsets,r=o.reference,s=o.popper,a=-1!==["bottom","top"].indexOf(n),l=a?"left":"top",c=a?"width":"height",f={start:ge({},l,r[l]),end:ge({},l,r[l]+r[c]-s[c])};t.offsets.popper=me({},s,f[i])}return t}},offset:{order:200,enabled:!0,fn:function(t,e){var n=e.offset,i=t.placement,o=t.offsets,r=o.popper,s=o.reference,a=i.split("-")[0],l=void 0;return l=xe(+n)?[+n,0]:Be(n,r,s,a),"left"===a?(r.top+=l[0],r.left-=l[1]):"right"===a?(r.top+=l[0],r.left+=l[1]):"top"===a?(r.left+=l[0],r.top-=l[1]):"bottom"===a&&(r.left+=l[0],r.top+=l[1]),t.popper=r,t},offset:0},preventOverflow:{order:300,enabled:!0,fn:function(t,e){var n=e.boundariesElement||se(t.instance.popper);t.instance.reference===n&&(n=se(n));var i=Ce("transform"),o=t.instance.popper.style,r=o.top,s=o.left,a=o[i];o.top="",o.left="",o[i]="";var l=ye(t.instance.popper,t.instance.reference,e.padding,n,t.positionFixed);o.top=r,o.left=s,o[i]=a,e.boundaries=l;var c=e.priority,f=t.offsets.popper,u={primary:function(t){var n=f[t];return f[t]l[t]&&!e.escapeWithReference&&(i=Math.min(f[n],l[t]-("right"===t?f.width:f.height))),ge({},n,i)}};return c.forEach(function(t){var e=-1!==["left","top"].indexOf(t)?"primary":"secondary";f=me({},f,u[e](t))}),t.offsets.popper=f,t},priority:["left","right","top","bottom"],padding:5,boundariesElement:"scrollParent"},keepTogether:{order:400,enabled:!0,fn:function(t){var e=t.offsets,n=e.popper,i=e.reference,o=t.placement.split("-")[0],r=Math.floor,s=-1!==["top","bottom"].indexOf(o),a=s?"right":"bottom",l=s?"left":"top",c=s?"width":"height";return n[a]r(i[a])&&(t.offsets.popper[l]=r(i[a])),t}},arrow:{order:500,enabled:!0,fn:function(t,e){var n;if(!je(t.instance.modifiers,"arrow","keepTogether"))return t;var i=e.element;if("string"==typeof i){if(!(i=t.instance.popper.querySelector(i)))return t}else if(!t.instance.popper.contains(i))return console.warn("WARNING: `arrow.element` must be child of its popper element!"),t;var o=t.placement.split("-")[0],r=t.offsets,s=r.popper,a=r.reference,l=-1!==["left","right"].indexOf(o),c=l?"height":"width",f=l?"Top":"Left",u=f.toLowerCase(),h=l?"left":"top",d=l?"bottom":"right",p=Te(i)[c];a[d]-ps[d]&&(t.offsets.popper[u]+=a[u]+p-s[d]),t.offsets.popper=_e(t.offsets.popper);var g=a[u]+a[c]/2-p/2,m=te(t.instance.popper),_=parseFloat(m["margin"+f],10),v=parseFloat(m["border"+f+"Width"],10),b=g-t.offsets.popper[u]-_-v;return b=Math.max(Math.min(s[c]-p,b),0),t.arrowElement=i,t.offsets.arrow=(ge(n={},u,Math.round(b)),ge(n,h,""),n),t},element:"[x-arrow]"},flip:{order:600,enabled:!0,fn:function(t,e){if(Se(t.instance.modifiers,"inner"))return t;if(t.flipped&&t.placement===t.originalPlacement)return t;var n=ye(t.instance.popper,t.instance.reference,e.padding,e.boundariesElement,t.positionFixed),i=t.placement.split("-")[0],o=Ie(i),r=t.placement.split("-")[1]||"",s=[];switch(e.behavior){case Ue.FLIP:s=[i,o];break;case Ue.CLOCKWISE:s=Fe(i);break;case Ue.COUNTERCLOCKWISE:s=Fe(i,!0);break;default:s=e.behavior}return s.forEach(function(a,l){if(i!==a||s.length===l+1)return t;i=t.placement.split("-")[0],o=Ie(i);var c=t.offsets.popper,f=t.offsets.reference,u=Math.floor,h="left"===i&&u(c.right)>u(f.left)||"right"===i&&u(c.left)u(f.top)||"bottom"===i&&u(c.top)u(n.right),g=u(c.top)u(n.bottom),_="left"===i&&d||"right"===i&&p||"top"===i&&g||"bottom"===i&&m,v=-1!==["top","bottom"].indexOf(i),b=!!e.flipVariations&&(v&&"start"===r&&d||v&&"end"===r&&p||!v&&"start"===r&&g||!v&&"end"===r&&m);(h||_||b)&&(t.flipped=!0,(h||_)&&(i=s[l+1]),b&&(r=function(t){return"end"===t?"start":"start"===t?"end":t}(r)),t.placement=i+(r?"-"+r:""),t.offsets.popper=me({},t.offsets.popper,Ae(t.instance.popper,t.offsets.reference,t.placement)),t=Le(t.instance.modifiers,t,"flip"))}),t},behavior:"flip",padding:5,boundariesElement:"viewport"},inner:{order:700,enabled:!1,fn:function(t){var e=t.placement,n=e.split("-")[0],i=t.offsets,o=i.popper,r=i.reference,s=-1!==["left","right"].indexOf(n),a=-1===["top","left"].indexOf(n);return o[s?"left":"top"]=r[n]-(a?o[s?"width":"height"]:0),t.placement=Ie(e),t.offsets.popper=_e(o),t}},hide:{order:800,enabled:!0,fn:function(t){if(!je(t.instance.modifiers,"hide","preventOverflow"))return t;var e=t.offsets.reference,n=Oe(t.instance.modifiers,function(t){return"preventOverflow"===t.name}).boundaries;if(e.bottomn.right||e.top>n.bottom||e.right2&&void 0!==arguments[2]?arguments[2]:{};de(this,t),this.scheduleUpdate=function(){return requestAnimationFrame(i.update)},this.update=$t(this.update.bind(this)),this.options=me({},t.Defaults,o),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=e&&e.jquery?e[0]:e,this.popper=n&&n.jquery?n[0]:n,this.options.modifiers={},Object.keys(me({},t.Defaults.modifiers,o.modifiers)).forEach(function(e){i.options.modifiers[e]=me({},t.Defaults.modifiers[e]||{},o.modifiers?o.modifiers[e]:{})}),this.modifiers=Object.keys(this.options.modifiers).map(function(t){return me({name:t},i.options.modifiers[t])}).sort(function(t,e){return t.order-e.order}),this.modifiers.forEach(function(t){t.enabled&&Jt(t.onLoad)&&t.onLoad(i.reference,i.popper,i.options,t,i.state)}),this.update();var r=this.options.eventsEnabled;r&&this.enableEventListeners(),this.state.eventsEnabled=r}return pe(t,[{key:"update",value:function(){return function(){if(!this.state.isDestroyed){var t={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};t.offsets.reference=De(this.state,this.popper,this.reference,this.options.positionFixed),t.placement=we(this.options.placement,t.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),t.originalPlacement=t.placement,t.positionFixed=this.options.positionFixed,t.offsets.popper=Ae(this.popper,t.offsets.reference,t.placement),t.offsets.popper.position=this.options.positionFixed?"fixed":"absolute",t=Le(this.modifiers,t),this.state.isCreated?this.options.onUpdate(t):(this.state.isCreated=!0,this.options.onCreate(t))}}.call(this)}},{key:"destroy",value:function(){return function(){return this.state.isDestroyed=!0,Se(this.modifiers,"applyStyle")&&(this.popper.removeAttribute("x-placement"),this.popper.style.position="",this.popper.style.top="",this.popper.style.left="",this.popper.style.right="",this.popper.style.bottom="",this.popper.style.willChange="",this.popper.style[Ce("transform")]=""),this.disableEventListeners(),this.options.removeOnDestroy&&this.popper.parentNode.removeChild(this.popper),this}.call(this)}},{key:"enableEventListeners",value:function(){return function(){this.state.eventsEnabled||(this.state=ke(this.reference,this.options,this.state,this.scheduleUpdate))}.call(this)}},{key:"disableEventListeners",value:function(){return Pe.call(this)}}]),t}();Ve.Utils=("undefined"!=typeof window?window:global).PopperUtils,Ve.placements=Re,Ve.Defaults=Ke;var Ye="dropdown",Qe="bs.dropdown",Ge="."+Qe,qe=new RegExp("38|40|27"),Xe={HIDE:"hide"+Ge,HIDDEN:"hidden"+Ge,SHOW:"show"+Ge,SHOWN:"shown"+Ge,CLICK:"click"+Ge,CLICK_DATA_API:"click"+Ge+".data-api",KEYDOWN_DATA_API:"keydown"+Ge+".data-api",KEYUP_DATA_API:"keyup"+Ge+".data-api"},ze="disabled",Ze="show",$e="dropup",Je="dropright",tn="dropleft",en="dropdown-menu-right",nn="position-static",on='[data-toggle="dropdown"]',rn=".dropdown form",sn=".dropdown-menu",an=".navbar-nav",ln=".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",cn="top-start",fn="top-end",un="bottom-start",hn="bottom-end",dn="right-start",pn="left-start",gn={offset:0,flip:!0,boundary:"scrollParent",reference:"toggle",display:"dynamic"},mn={offset:"(number|string|function)",flip:"boolean",boundary:"(string|element)",reference:"(string|element)",display:"string"},_n=function(){function t(t,e){this._element=t,this._popper=null,this._config=this._getConfig(e),this._menu=this._getMenuElement(),this._inNavbar=this._detectNavbar(),this._addEventListeners(),E.setData(t,Qe,this)}var n=t.prototype;return n.toggle=function(){if(!this._element.disabled&&!this._element.classList.contains(ze)){var e=t._getParentFromElement(this._element),n=this._menu.classList.contains(Ze);if(t._clearMenus(),!n){var i={relatedTarget:this._element};if(!j.trigger(e,Xe.SHOW,i).defaultPrevented){if(!this._inNavbar){if(void 0===Ve)throw new TypeError("Bootstrap's dropdowns require Popper.js (https://popper.js.org)");var o=this._element;"parent"===this._config.reference?o=e:h(this._config.reference)&&(o=this._config.reference,void 0!==this._config.reference.jquery&&(o=this._config.reference[0])),"scrollParent"!==this._config.boundary&&e.classList.add(nn),this._popper=new Ve(o,this._menu,this._getPopperConfig())}"ontouchstart"in document.documentElement&&!g(F.closest(e,an)).length&&g(document.body.children).forEach(function(t){return j.on(t,"mouseover",null,function(){})}),this._element.focus(),this._element.setAttribute("aria-expanded",!0),ft.toggleClass(this._menu,Ze),ft.toggleClass(e,Ze),j.trigger(e,Xe.SHOWN,i)}}}},n.show=function(){if(!(this._element.disabled||this._element.classList.contains(ze)||this._menu.classList.contains(Ze))){var e=t._getParentFromElement(this._element),n={relatedTarget:this._element};j.trigger(e,Xe.SHOW,n).defaultPrevented||(ft.toggleClass(this._menu,Ze),ft.toggleClass(e,Ze),j.trigger(e,Xe.SHOWN,n))}},n.hide=function(){if(!this._element.disabled&&!this._element.classList.contains(ze)&&this._menu.classList.contains(Ze)){var e=t._getParentFromElement(this._element),n={relatedTarget:this._element};j.trigger(e,Xe.HIDE,n).defaultPrevented||(ft.toggleClass(this._menu,Ze),ft.toggleClass(e,Ze),j.trigger(e,Xe.HIDDEN,n))}},n.dispose=function(){E.removeData(this._element,Qe),j.off(this._element,Ge),this._element=null,this._menu=null,null!==this._popper&&(this._popper.destroy(),this._popper=null)},n.update=function(){this._inNavbar=this._detectNavbar(),null!==this._popper&&this._popper.scheduleUpdate()},n._addEventListeners=function(){var t=this;j.on(this._element,Xe.CLICK,function(e){e.preventDefault(),e.stopPropagation(),t.toggle()})},n._getConfig=function(t){return t=i({},this.constructor.Default,ft.getDataAttributes(this._element),t),p(Ye,t,this.constructor.DefaultType),t},n._getMenuElement=function(){if(!this._menu){var e=t._getParentFromElement(this._element);e&&(this._menu=F.findOne(sn,e))}return this._menu},n._getPlacement=function(){var t=this._element.parentNode,e=un;return t.classList.contains($e)?(e=cn,this._menu.classList.contains(en)&&(e=fn)):t.classList.contains(Je)?e=dn:t.classList.contains(tn)?e=pn:this._menu.classList.contains(en)&&(e=hn),e},n._detectNavbar=function(){return Boolean(F.closest(this._element,".navbar"))},n._getOffset=function(){var t=this,e={};return"function"==typeof this._config.offset?e.fn=function(e){return e.offsets=i({},e.offsets,t._config.offset(e.offsets,t._element)||{}),e}:e.offset=this._config.offset,e},n._getPopperConfig=function(){var t={placement:this._getPlacement(),modifiers:{offset:this._getOffset(),flip:{enabled:this._config.flip},preventOverflow:{boundariesElement:this._config.boundary}}};return"static"===this._config.display&&(t.modifiers.applyStyle={enabled:!1}),t},t._dropdownInterface=function(e,n){var i=E.getData(e,Qe);if(i||(i=new t(e,"object"==typeof n?n:null)),"string"==typeof n){if(void 0===i[n])throw new TypeError('No method named "'+n+'"');i[n]()}},t._jQueryInterface=function(e){return this.each(function(){t._dropdownInterface(this,e)})},t._clearMenus=function(e){if(!e||3!==e.which&&("keyup"!==e.type||9===e.which))for(var n=g(F.find(on)),i=0,o=n.length;i0&&r--,40===e.which&&rdocument.documentElement.clientHeight;!this._isBodyOverflowing&&t&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),this._isBodyOverflowing&&!t&&(this._element.style.paddingRight=this._scrollbarWidth+"px")},n._resetAdjustments=function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""},n._checkScrollbar=function(){var t=document.body.getBoundingClientRect();this._isBodyOverflowing=t.left+t.right
',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:jn},Yn="show",Qn="out",Gn={HIDE:"hide.bs.tooltip",HIDDEN:"hidden.bs.tooltip",SHOW:"show.bs.tooltip",SHOWN:"shown.bs.tooltip",INSERTED:"inserted.bs.tooltip",CLICK:"click.bs.tooltip",FOCUSIN:"focusin.bs.tooltip",FOCUSOUT:"focusout.bs.tooltip",MOUSEENTER:"mouseenter.bs.tooltip",MOUSELEAVE:"mouseleave.bs.tooltip"},qn="fade",Xn="show",zn=".tooltip-inner",Zn=".tooltip-arrow",$n="hover",Jn="focus",ti="click",ei="manual",ni=function(){function t(t,e){if(void 0===Ve)throw new TypeError("Bootstrap's tooltips require Popper.js (https://popper.js.org)");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(),E.setData(t,this.constructor.DATA_KEY,this)}var n=t.prototype;return n.enable=function(){this._isEnabled=!0},n.disable=function(){this._isEnabled=!1},n.toggleEnabled=function(){this._isEnabled=!this._isEnabled},n.toggle=function(t){if(this._isEnabled)if(t){var e=this.constructor.DATA_KEY,n=E.getData(t.delegateTarget,e);n||(n=new this.constructor(t.delegateTarget,this._getDelegateConfig()),E.setData(t.delegateTarget,e,n)),n._activeTrigger.click=!n._activeTrigger.click,n._isWithActiveTrigger()?n._enter(null,n):n._leave(null,n)}else{if(this.getTipElement().classList.contains(Xn))return void this._leave(null,this);this._enter(null,this)}},n.dispose=function(){clearTimeout(this._timeout),E.removeData(this.element,this.constructor.DATA_KEY),j.off(this.element,this.constructor.EVENT_KEY),j.off(F.closest(this.element,".modal"),"hide.bs.modal"),this.tip&&this.tip.parentNode.removeChild(this.tip),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},n.show=function(){var t=this;if("none"===this.element.style.display)throw new Error("Please use show on visible elements");if(this.isWithContent()&&this._isEnabled){var e=j.trigger(this.element,this.constructor.Event.SHOW),n=function t(e){if(!document.documentElement.attachShadow)return null;if("function"==typeof e.getRootNode){var n=e.getRootNode();return n instanceof ShadowRoot?n:null}return e instanceof ShadowRoot?e:e.parentNode?t(e.parentNode):null}(this.element),i=null===n?this.element.ownerDocument.documentElement.contains(this.element):n.contains(this.element);if(e.defaultPrevented||!i)return;var o=this.getTipElement(),r=l(this.constructor.NAME);o.setAttribute("id",r),this.element.setAttribute("aria-describedby",r),this.setContent(),this.config.animation&&o.classList.add(qn);var a="function"==typeof this.config.placement?this.config.placement.call(this,o,this.element):this.config.placement,c=this._getAttachment(a);this.addAttachmentClass(c);var u=this._getContainer();E.setData(o,this.constructor.DATA_KEY,this),this.element.ownerDocument.documentElement.contains(this.tip)||u.appendChild(o),j.trigger(this.element,this.constructor.Event.INSERTED),this._popper=new Ve(this.element,o,{placement:c,modifiers:{offset:this._getOffset(),flip:{behavior:this.config.fallbackPlacement},arrow:{element:Zn},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(e){e.originalPlacement!==e.placement&&t._handlePopperPlacementChange(e)},onUpdate:function(e){return t._handlePopperPlacementChange(e)}}),o.classList.add(Xn),"ontouchstart"in document.documentElement&&g(document.body.children).forEach(function(t){j.on(t,"mouseover",function(){})});var h=function(){t.config.animation&&t._fixTransition();var e=t._hoverState;t._hoverState=null,j.trigger(t.element,t.constructor.Event.SHOWN),e===Qn&&t._leave(null,t)};if(this.tip.classList.contains(qn)){var p=f(this.tip);j.one(this.tip,s,h),d(this.tip,p)}else h()}},n.hide=function(t){var e=this,n=this.getTipElement(),i=function(){e._hoverState!==Yn&&n.parentNode&&n.parentNode.removeChild(n),e._cleanTipClass(),e.element.removeAttribute("aria-describedby"),j.trigger(e.element,e.constructor.Event.HIDDEN),null!==e._popper&&e._popper.destroy(),t&&t()};if(!j.trigger(this.element,this.constructor.Event.HIDE).defaultPrevented){if(n.classList.remove(Xn),"ontouchstart"in document.documentElement&&g(document.body.children).forEach(function(t){return j.off(t,"mouseover",_)}),this._activeTrigger[ti]=!1,this._activeTrigger[Jn]=!1,this._activeTrigger[$n]=!1,this.tip.classList.contains(qn)){var o=f(n);j.one(n,s,i),d(n,o)}else i();this._hoverState=""}},n.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},n.isWithContent=function(){return Boolean(this.getTitle())},n.addAttachmentClass=function(t){this.getTipElement().classList.add("bs-tooltip-"+t)},n.getTipElement=function(){if(this.tip)return this.tip;var t=document.createElement("div");return t.innerHTML=this.config.template,this.tip=t.children[0],this.tip},n.setContent=function(){var t=this.getTipElement();this.setElementContent(F.findOne(zn,t),this.getTitle()),t.classList.remove(qn),t.classList.remove(Xn)},n.setElementContent=function(t,e){if(null!==t)return"object"==typeof e&&(e.nodeType||e.jquery)?(e.jquery&&(e=e[0]),void(this.config.html?e.parentNode!==t&&(t.innerHTML="",t.appendChild(e)):t.innerText=e.textContent)):void(this.config.html?(this.config.sanitize&&(e=Rn(e,this.config.whiteList,this.config.sanitizeFn)),t.innerHTML=e):t.innerText=e)},n.getTitle=function(){var t=this.element.getAttribute("data-original-title");return t||(t="function"==typeof this.config.title?this.config.title.call(this.element):this.config.title),t},n._getOffset=function(){var t=this,e={};return"function"==typeof this.config.offset?e.fn=function(e){return e.offsets=i({},e.offsets,t.config.offset(e.offsets,t.element)||{}),e}:e.offset=this.config.offset,e},n._getContainer=function(){return!1===this.config.container?document.body:h(this.config.container)?this.config.container:F.findOne(this.config.container)},n._getAttachment=function(t){return Kn[t.toUpperCase()]},n._setListeners=function(){var t=this;this.config.trigger.split(" ").forEach(function(e){if("click"===e)j.on(t.element,t.constructor.Event.CLICK,t.config.selector,function(e){return t.toggle(e)});else if(e!==ei){var n=e===$n?t.constructor.Event.MOUSEENTER:t.constructor.Event.FOCUSIN,i=e===$n?t.constructor.Event.MOUSELEAVE:t.constructor.Event.FOCUSOUT;j.on(t.element,n,t.config.selector,function(e){return t._enter(e)}),j.on(t.element,i,t.config.selector,function(e){return t._leave(e)})}}),j.on(F.closest(this.element,".modal"),"hide.bs.modal",function(){t.element&&t.hide()}),this.config.selector?this.config=i({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},n._fixTitle=function(){var t=typeof this.element.getAttribute("data-original-title");(this.element.getAttribute("title")||"string"!==t)&&(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))},n._enter=function(t,e){var n=this.constructor.DATA_KEY;(e=e||E.getData(t.delegateTarget,n))||(e=new this.constructor(t.delegateTarget,this._getDelegateConfig()),E.setData(t.delegateTarget,n,e)),t&&(e._activeTrigger["focusin"===t.type?Jn:$n]=!0),e.getTipElement().classList.contains(Xn)||e._hoverState===Yn?e._hoverState=Yn:(clearTimeout(e._timeout),e._hoverState=Yn,e.config.delay&&e.config.delay.show?e._timeout=setTimeout(function(){e._hoverState===Yn&&e.show()},e.config.delay.show):e.show())},n._leave=function(t,e){var n=this.constructor.DATA_KEY;(e=e||E.getData(t.delegateTarget,n))||(e=new this.constructor(t.delegateTarget,this._getDelegateConfig()),E.setData(t.delegateTarget,n,e)),t&&(e._activeTrigger["focusout"===t.type?Jn:$n]=!1),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState=Qn,e.config.delay&&e.config.delay.hide?e._timeout=setTimeout(function(){e._hoverState===Qn&&e.hide()},e.config.delay.hide):e.hide())},n._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},n._getConfig=function(t){var e=ft.getDataAttributes(this.element);return Object.keys(e).forEach(function(t){-1!==Un.indexOf(t)&&delete e[t]}),t&&"object"==typeof t.container&&t.container.jquery&&(t.container=t.container[0]),"number"==typeof(t=i({},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()),p(Wn,t,this.constructor.DefaultType),t.sanitize&&(t.template=Rn(t.template,t.whiteList,t.sanitizeFn)),t},n._getDelegateConfig=function(){var t={};if(this.config)for(var e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t},n._cleanTipClass=function(){var t=this.getTipElement(),e=t.getAttribute("class").match(Fn);null!==e&&e.length&&e.map(function(t){return t.trim()}).forEach(function(e){return t.classList.remove(e)})},n._handlePopperPlacementChange=function(t){var e=t.instance;this.tip=e.popper,this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(t.placement))},n._fixTransition=function(){var t=this.getTipElement(),e=this.config.animation;null===t.getAttribute("x-placement")&&(t.classList.remove(qn),this.config.animation=!1,this.hide(),this.show(),this.config.animation=e)},t._jQueryInterface=function(e){return this.each(function(){var n=E.getData(this,"bs.tooltip"),i="object"==typeof e&&e;if((n||!/dispose|hide/.test(e))&&(n||(n=new t(this,i)),"string"==typeof e)){if(void 0===n[e])throw new TypeError('No method named "'+e+'"');n[e]()}})},t._getInstance=function(t){return E.getData(t,"bs.tooltip")},e(t,null,[{key:"VERSION",get:function(){return"4.3.1"}},{key:"Default",get:function(){return Vn}},{key:"NAME",get:function(){return Wn}},{key:"DATA_KEY",get:function(){return"bs.tooltip"}},{key:"Event",get:function(){return Gn}},{key:"EVENT_KEY",get:function(){return".bs.tooltip"}},{key:"DefaultType",get:function(){return Bn}}]),t}();if(void 0!==a){var ii=a.fn.tooltip;a.fn.tooltip=ni._jQueryInterface,a.fn.tooltip.Constructor=ni,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=ii,ni._jQueryInterface}}var oi="popover",ri=new RegExp("(^|\\s)bs-popover\\S+","g"),si=i({},ni.Default,{placement:"right",trigger:"click",content:"",template:''}),ai=i({},ni.DefaultType,{content:"(string|element|function)"}),li="fade",ci="show",fi=".popover-header",ui=".popover-body",hi={HIDE:"hide.bs.popover",HIDDEN:"hidden.bs.popover",SHOW:"show.bs.popover",SHOWN:"shown.bs.popover",INSERTED:"inserted.bs.popover",CLICK:"click.bs.popover",FOCUSIN:"focusin.bs.popover",FOCUSOUT:"focusout.bs.popover",MOUSEENTER:"mouseenter.bs.popover",MOUSELEAVE:"mouseleave.bs.popover"},di=function(t){var n,i;function o(){return t.apply(this,arguments)||this}i=t,(n=o).prototype=Object.create(i.prototype),n.prototype.constructor=n,n.__proto__=i;var r=o.prototype;return r.isWithContent=function(){return this.getTitle()||this._getContent()},r.addAttachmentClass=function(t){this.getTipElement().classList.add("bs-popover-"+t)},r.setContent=function(){var t=this.getTipElement();this.setElementContent(F.findOne(fi,t),this.getTitle());var e=this._getContent();"function"==typeof e&&(e=e.call(this.element)),this.setElementContent(F.findOne(ui,t),e),t.classList.remove(li),t.classList.remove(ci)},r._getContent=function(){return this.element.getAttribute("data-content")||this.config.content},r._cleanTipClass=function(){var t=this.getTipElement(),e=t.getAttribute("class").match(ri);null!==e&&e.length>0&&e.map(function(t){return t.trim()}).forEach(function(e){return t.classList.remove(e)})},o._jQueryInterface=function(t){return this.each(function(){var e=E.getData(this,"bs.popover"),n="object"==typeof t?t:null;if((e||!/dispose|hide/.test(t))&&(e||(e=new o(this,n),E.setData(this,"bs.popover",e)),"string"==typeof t)){if(void 0===e[t])throw new TypeError('No method named "'+t+'"');e[t]()}})},o._getInstance=function(t){return E.getData(t,"bs.popover")},e(o,null,[{key:"VERSION",get:function(){return"4.3.1"}},{key:"Default",get:function(){return si}},{key:"NAME",get:function(){return oi}},{key:"DATA_KEY",get:function(){return"bs.popover"}},{key:"Event",get:function(){return hi}},{key:"EVENT_KEY",get:function(){return".bs.popover"}},{key:"DefaultType",get:function(){return ai}}]),o}(ni);if(void 0!==a){var pi=a.fn.popover;a.fn.popover=di._jQueryInterface,a.fn.popover.Constructor=di,a.fn.popover.noConflict=function(){return a.fn.popover=pi,di._jQueryInterface}}var gi="scrollspy",mi="bs.scrollspy",_i="."+mi,vi={offset:10,method:"auto",target:""},bi={offset:"number",method:"string",target:"(string|element)"},Ei={ACTIVATE:"activate"+_i,SCROLL:"scroll"+_i,LOAD_DATA_API:"load"+_i+".data-api"},yi={DROPDOWN_ITEM:"dropdown-item",ACTIVE:"active"},wi={DATA_SPY:'[data-spy="scroll"]',NAV_LIST_GROUP:".nav, .list-group",NAV_LINKS:".nav-link",NAV_ITEMS:".nav-item",LIST_ITEMS:".list-group-item",DROPDOWN:".dropdown",DROPDOWN_TOGGLE:".dropdown-toggle"},Di="offset",Ti="position",Ii=function(){function t(t,e){var n=this;this._element=t,this._scrollElement="BODY"===t.tagName?window:t,this._config=this._getConfig(e),this._selector=this._config.target+" "+wi.NAV_LINKS+","+this._config.target+" "+wi.LIST_ITEMS+","+this._config.target+" ."+yi.DROPDOWN_ITEM,this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,j.on(this._scrollElement,Ei.SCROLL,function(t){return n._process(t)}),this.refresh(),this._process(),E.setData(t,mi,this)}var n=t.prototype;return n.refresh=function(){var t=this,e=this._scrollElement===this._scrollElement.window?Di:Ti,n="auto"===this._config.method?e:this._config.method,i=n===Ti?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),g(F.find(this._selector)).map(function(t){var e,o=c(t);if(o&&(e=F.findOne(o)),e){var r=e.getBoundingClientRect();if(r.width||r.height)return[ft[n](e).top+i,o]}return null}).filter(function(t){return t}).sort(function(t,e){return t[0]-e[0]}).forEach(function(e){t._offsets.push(e[0]),t._targets.push(e[1])})},n.dispose=function(){E.removeData(this._element,mi),j.off(this._scrollElement,_i),this._element=null,this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null},n._getConfig=function(t){if("string"!=typeof(t=i({},vi,"object"==typeof t&&t?t:{})).target){var e=t.target.id;e||(e=l(gi),t.target.id=e),t.target="#"+e}return p(gi,t,bi),t},n._getScrollTop=function(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop},n._getScrollHeight=function(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)},n._getOffsetHeight=function(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height},n._process=function(){var t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),n=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),t>=n){var i=this._targets[this._targets.length-1];this._activeTarget!==i&&this._activate(i)}else{if(this._activeTarget&&t0)return this._activeTarget=null,void this._clear();for(var o=this._offsets.length;o--;){this._activeTarget!==this._targets[o]&&t>=this._offsets[o]&&(void 0===this._offsets[o+1]||t ({}).toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase(); +/** + * -------------------------------------------------------------------------- + * Public Util Api + * -------------------------------------------------------------------------- + */ + + +const getUID = prefix => { + do { + // eslint-disable-next-line no-bitwise + prefix += ~~(Math.random() * MAX_UID); // "~~" acts like a faster Math.floor() here + } while (document.getElementById(prefix)); + + return prefix; +}; + +const getSelectorFromElement = element => { + let selector = element.getAttribute('data-target'); + + if (!selector || selector === '#') { + const hrefAttr = element.getAttribute('href'); + selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : ''; + } + + try { + return document.querySelector(selector) ? selector : null; + } catch (error) { + return null; + } +}; + +const getTransitionDurationFromElement = element => { + if (!element) { + return 0; + } // Get transition-duration of the element + + + let _window$getComputedSt = window.getComputedStyle(element), + transitionDuration = _window$getComputedSt.transitionDuration, + transitionDelay = _window$getComputedSt.transitionDelay; + + const floatTransitionDuration = parseFloat(transitionDuration); + const floatTransitionDelay = parseFloat(transitionDelay); // Return 0 if element or transition duration is not found + + if (!floatTransitionDuration && !floatTransitionDelay) { + return 0; + } // If multiple durations are defined, take the first + + + transitionDuration = transitionDuration.split(',')[0]; + transitionDelay = transitionDelay.split(',')[0]; + return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER; +}; + +const triggerTransitionEnd = element => { + element.dispatchEvent(new Event(TRANSITION_END)); +}; + +const isElement = obj => (obj[0] || obj).nodeType; + +const emulateTransitionEnd = (element, duration) => { + let called = false; + const durationPadding = 5; + const emulatedDuration = duration + durationPadding; + + function listener() { + called = true; + element.removeEventListener(TRANSITION_END, listener); + } + + element.addEventListener(TRANSITION_END, listener); + setTimeout(() => { + if (!called) { + triggerTransitionEnd(element); + } + }, emulatedDuration); +}; + +const typeCheckConfig = (componentName, config, configTypes) => { + Object.keys(configTypes).forEach(property => { + const expectedTypes = configTypes[property]; + const value = config[property]; + const valueType = value && isElement(value) ? 'element' : toType(value); + + if (!new RegExp(expectedTypes).test(valueType)) { + throw new Error(`${componentName.toUpperCase()}: ` + `Option "${property}" provided type "${valueType}" ` + `but expected type "${expectedTypes}".`); + } + }); +}; + +const makeArray = nodeList => { + if (!nodeList) { + return []; + } + + return [].slice.call(nodeList); +}; + +const isVisible = element => { + if (!element) { + return false; + } + + if (element.style && element.parentNode && element.parentNode.style) { + return element.style.display !== 'none' && element.parentNode.style.display !== 'none' && element.style.visibility !== 'hidden'; + } + + return false; +}; + +const findShadowRoot = element => { + if (!document.documentElement.attachShadow) { + return null; + } // Can find the shadow root otherwise it'll return the document + + + if (typeof element.getRootNode === 'function') { + const root = element.getRootNode(); + return root instanceof ShadowRoot ? root : null; + } + + if (element instanceof ShadowRoot) { + return element; + } // when we don't find a shadow root + + + if (!element.parentNode) { + return null; + } + + return findShadowRoot(element.parentNode); +}; // eslint-disable-next-line no-empty-function + + +const noop = () => function () {}; + +const reflow = element => element.offsetHeight; + +/** + * -------------------------------------------------------------------------- + * Bootstrap (v4.3.1): dom/data.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + +/** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ +const mapData = (() => { + const storeData = {}; + let id = 1; + return { + set(element, key, data) { + if (typeof element.key === 'undefined') { + element.key = { + key, + id + }; + id++; + } + + storeData[element.key.id] = data; + }, + + get(element, key) { + if (!element || typeof element.key === 'undefined') { + return null; + } + + const keyProperties = element.key; + + if (keyProperties.key === key) { + return storeData[keyProperties.id]; + } + + return null; + }, + + delete(element, key) { + if (typeof element.key === 'undefined') { + return; + } + + const keyProperties = element.key; + + if (keyProperties.key === key) { + delete storeData[keyProperties.id]; + delete element.key; + } + } + + }; +})(); + +const Data = { + setData(instance, key, data) { + mapData.set(instance, key, data); + }, + + getData(instance, key) { + return mapData.get(instance, key); + }, + + removeData(instance, key) { + mapData.delete(instance, key); + } + +}; + +/** + * -------------------------------------------------------------------------- + * Bootstrap (v4.3.1): dom/polyfill.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ +/* istanbul ignore next */ + +const Polyfill = (() => { + // MSEdge resets defaultPrevented flag upon dispatchEvent call if at least one listener is attached + const defaultPreventedPreservedOnDispatch = (() => { + const e = new CustomEvent('Bootstrap', { + cancelable: true + }); + const element = document.createElement('div'); + element.addEventListener('Bootstrap', () => null); + e.preventDefault(); + element.dispatchEvent(e); + return e.defaultPrevented; + })(); + + let find = Element.prototype.querySelectorAll; + let findOne = Element.prototype.querySelector; + const scopeSelectorRegex = /:scope\b/; + + const supportScopeQuery = (() => { + const element = document.createElement('div'); + + try { + element.querySelectorAll(':scope *'); + } catch (error) { + return false; + } + + return true; + })(); + + if (!supportScopeQuery) { + find = function find(selector) { + if (!scopeSelectorRegex.test(selector)) { + return this.querySelectorAll(selector); + } + + const hasId = Boolean(this.id); + + if (!hasId) { + this.id = getUID('scope'); + } + + let nodeList = null; + + try { + selector = selector.replace(scopeSelectorRegex, `#${this.id}`); + nodeList = this.querySelectorAll(selector); + } finally { + if (!hasId) { + this.removeAttribute('id'); + } + } + + return nodeList; + }; + + findOne = function findOne(selector) { + if (!scopeSelectorRegex.test(selector)) { + return this.querySelector(selector); + } + + const matches = find.call(this, selector); + + if (typeof matches[0] !== 'undefined') { + return matches[0]; + } + + return null; + }; + } + + return { + defaultPreventedPreservedOnDispatch, + find, + findOne + }; +})(); + +/** + * -------------------------------------------------------------------------- + * Bootstrap (v4.3.1): dom/eventHandler.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ +/** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + +const namespaceRegex = /[^.]*(?=\..*)\.|.*/; +const stripNameRegex = /\..*/; +const keyEventRegex = /^key/; +const stripUidRegex = /::\d+$/; +const eventRegistry = {}; // Events storage + +let uidEvent = 1; +const customEvents = { + mouseenter: 'mouseover', + mouseleave: 'mouseout' +}; +const nativeEvents = ['click', 'dblclick', 'mouseup', 'mousedown', 'contextmenu', 'mousewheel', 'DOMMouseScroll', 'mouseover', 'mouseout', 'mousemove', 'selectstart', 'selectend', 'keydown', 'keypress', 'keyup', 'orientationchange', 'touchstart', 'touchmove', 'touchend', 'touchcancel', 'pointerdown', 'pointermove', 'pointerup', 'pointerleave', 'pointercancel', 'gesturestart', 'gesturechange', 'gestureend', 'focus', 'blur', 'change', 'reset', 'select', 'submit', 'focusin', 'focusout', 'load', 'unload', 'beforeunload', 'resize', 'move', 'DOMContentLoaded', 'readystatechange', 'error', 'abort', 'scroll']; +/** + * ------------------------------------------------------------------------ + * Private methods + * ------------------------------------------------------------------------ + */ + +function getUidEvent(element, uid) { + return uid && `${uid}::${uidEvent++}` || element.uidEvent || uidEvent++; +} + +function getEvent(element) { + const uid = getUidEvent(element); + element.uidEvent = uid; + eventRegistry[uid] = eventRegistry[uid] || {}; + return eventRegistry[uid]; +} + +function fixEvent(event, element) { + // Add which for key events + if (event.which === null && keyEventRegex.test(event.type)) { + event.which = event.charCode === null ? event.keyCode : event.charCode; + } + + event.delegateTarget = element; +} + +function bootstrapHandler(element, fn) { + return function handler(event) { + fixEvent(event, element); + + if (handler.oneOff) { + EventHandler.off(element, event.type, fn); + } + + return fn.apply(element, [event]); + }; +} + +function bootstrapDelegationHandler(element, selector, fn) { + return function handler(event) { + const domElements = element.querySelectorAll(selector); + + for (let target = event.target; target && target !== this; target = target.parentNode) { + for (let i = domElements.length; i--;) { + if (domElements[i] === target) { + fixEvent(event, target); + + if (handler.oneOff) { + EventHandler.off(element, event.type, fn); + } + + return fn.apply(target, [event]); + } + } + } // To please ESLint + + + return null; + }; +} + +function findHandler(events, handler, delegationSelector) { + if (delegationSelector === void 0) { + delegationSelector = null; + } + + const uidList = Object.keys(events); + + for (let i = 0; i < uidList.length; i++) { + const uid = uidList[i]; + const event = events[uid]; + + if (event.originalHandler === handler && event.delegationSelector === delegationSelector) { + return events[uid]; + } + } + + return null; +} + +function normalizeParams(originalTypeEvent, handler, delegationFn) { + const delegation = typeof handler === 'string'; + const originalHandler = delegation ? delegationFn : handler; // allow to get the native events from namespaced events ('click.bs.button' --> 'click') + + let typeEvent = originalTypeEvent.replace(stripNameRegex, ''); + const custom = customEvents[typeEvent]; + + if (custom) { + typeEvent = custom; + } + + const isNative = nativeEvents.indexOf(typeEvent) > -1; + + if (!isNative) { + typeEvent = originalTypeEvent; + } + + return [delegation, originalHandler, typeEvent]; +} + +function addHandler(element, originalTypeEvent, handler, delegationFn, oneOff) { + if (typeof originalTypeEvent !== 'string' || !element) { + return; + } + + if (!handler) { + handler = delegationFn; + delegationFn = null; + } + + const _normalizeParams = normalizeParams(originalTypeEvent, handler, delegationFn), + delegation = _normalizeParams[0], + originalHandler = _normalizeParams[1], + typeEvent = _normalizeParams[2]; + + const events = getEvent(element); + const handlers = events[typeEvent] || (events[typeEvent] = {}); + const previousFn = findHandler(handlers, originalHandler, delegation ? handler : null); + + if (previousFn) { + previousFn.oneOff = previousFn.oneOff && oneOff; + return; + } + + const uid = getUidEvent(originalHandler, originalTypeEvent.replace(namespaceRegex, '')); + const fn = delegation ? bootstrapDelegationHandler(element, handler, delegationFn) : bootstrapHandler(element, handler); + fn.delegationSelector = delegation ? handler : null; + fn.originalHandler = originalHandler; + fn.oneOff = oneOff; + fn.uidEvent = uid; + handlers[uid] = fn; + element.addEventListener(typeEvent, fn, delegation); +} + +function removeHandler(element, events, typeEvent, handler, delegationSelector) { + const fn = findHandler(events[typeEvent], handler, delegationSelector); + + if (fn === null) { + return; + } + + element.removeEventListener(typeEvent, fn, Boolean(delegationSelector)); + delete events[typeEvent][fn.uidEvent]; +} + +function removeNamespacedHandlers(element, events, typeEvent, namespace) { + const storeElementEvent = events[typeEvent] || {}; + Object.keys(storeElementEvent).forEach(handlerKey => { + if (handlerKey.indexOf(namespace) > -1) { + const event = storeElementEvent[handlerKey]; + removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector); + } + }); +} + +const EventHandler = { + on(element, event, handler, delegationFn) { + addHandler(element, event, handler, delegationFn, false); + }, + + one(element, event, handler, delegationFn) { + addHandler(element, event, handler, delegationFn, true); + }, + + off(element, originalTypeEvent, handler, delegationFn) { + if (typeof originalTypeEvent !== 'string' || !element) { + return; + } + + const _normalizeParams2 = normalizeParams(originalTypeEvent, handler, delegationFn), + delegation = _normalizeParams2[0], + originalHandler = _normalizeParams2[1], + typeEvent = _normalizeParams2[2]; + + const inNamespace = typeEvent !== originalTypeEvent; + const events = getEvent(element); + const isNamespace = originalTypeEvent.charAt(0) === '.'; + + if (typeof originalHandler !== 'undefined') { + // Simplest case: handler is passed, remove that listener ONLY. + if (!events || !events[typeEvent]) { + return; + } + + removeHandler(element, events, typeEvent, originalHandler, delegation ? handler : null); + return; + } + + if (isNamespace) { + Object.keys(events).forEach(elementEvent => { + removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.substr(1)); + }); + } + + const storeElementEvent = events[typeEvent] || {}; + Object.keys(storeElementEvent).forEach(keyHandlers => { + const handlerKey = keyHandlers.replace(stripUidRegex, ''); + + if (!inNamespace || originalTypeEvent.indexOf(handlerKey) > -1) { + const event = storeElementEvent[keyHandlers]; + removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector); + } + }); + }, + + trigger(element, event, args) { + if (typeof event !== 'string' || !element) { + return null; + } + + const typeEvent = event.replace(stripNameRegex, ''); + const inNamespace = event !== typeEvent; + const isNative = nativeEvents.indexOf(typeEvent) > -1; + let jQueryEvent; + let bubbles = true; + let nativeDispatch = true; + let defaultPrevented = false; + let evt = null; + + if (inNamespace && typeof jQuery !== 'undefined') { + jQueryEvent = jQuery.Event(event, args); + jQuery(element).trigger(jQueryEvent); + bubbles = !jQueryEvent.isPropagationStopped(); + nativeDispatch = !jQueryEvent.isImmediatePropagationStopped(); + defaultPrevented = jQueryEvent.isDefaultPrevented(); + } + + if (isNative) { + evt = document.createEvent('HTMLEvents'); + evt.initEvent(typeEvent, bubbles, true); + } else { + evt = new CustomEvent(event, { + bubbles, + cancelable: true + }); + } // merge custom informations in our event + + + if (typeof args !== 'undefined') { + Object.keys(args).forEach(key => { + Object.defineProperty(evt, key, { + get() { + return args[key]; + } + + }); + }); + } + + if (defaultPrevented) { + evt.preventDefault(); + + if (!Polyfill.defaultPreventedPreservedOnDispatch) { + Object.defineProperty(evt, 'defaultPrevented', { + get: () => true + }); + } + } + + if (nativeDispatch) { + element.dispatchEvent(evt); + } + + if (evt.defaultPrevented && typeof jQueryEvent !== 'undefined') { + jQueryEvent.preventDefault(); + } + + return evt; + } + +}; + +/** + * -------------------------------------------------------------------------- + * Bootstrap (v4.3.1): dom/selectorEngine.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ +/** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + +const findFn = Polyfill.find, + findOne = Polyfill.findOne; +const NODE_TEXT = 3; +const SelectorEngine = { + matches(element, selector) { + return element.matches(selector); + }, + + find(selector, element) { + if (element === void 0) { + element = document.documentElement; + } + + if (typeof selector !== 'string') { + return null; + } + + return findFn.call(element, selector); + }, + + findOne(selector, element) { + if (element === void 0) { + element = document.documentElement; + } + + if (typeof selector !== 'string') { + return null; + } + + return findOne.call(element, selector); + }, + + children(element, selector) { + if (typeof selector !== 'string') { + return null; + } + + const children = makeArray(element.children); + return children.filter(child => this.matches(child, selector)); + }, + + parents(element, selector) { + if (typeof selector !== 'string') { + return null; + } + + const parents = []; + let ancestor = element.parentNode; + + while (ancestor && ancestor.nodeType === Node.ELEMENT_NODE && ancestor.nodeType !== NODE_TEXT) { + if (this.matches(ancestor, selector)) { + parents.push(ancestor); + } + + ancestor = ancestor.parentNode; + } + + return parents; + }, + + closest(element, selector) { + if (typeof selector !== 'string') { + return null; + } + + return element.closest(selector); + }, + + prev(element, selector) { + if (typeof selector !== 'string') { + return null; + } + + const siblings = []; + let previous = element.previousSibling; + + while (previous && previous.nodeType === Node.ELEMENT_NODE && previous.nodeType !== NODE_TEXT) { + if (this.matches(previous, selector)) { + siblings.push(previous); + } + + previous = previous.previousSibling; + } + + return siblings; + } + +}; + +/** + * -------------------------------------------------------------------------- + * Bootstrap (v4.3.1): alert.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ +/** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + +const NAME = 'alert'; +const VERSION = '4.3.1'; +const DATA_KEY = 'bs.alert'; +const EVENT_KEY = `.${DATA_KEY}`; +const DATA_API_KEY = '.data-api'; +const Selector = { + DISMISS: '[data-dismiss="alert"]' +}; +const Event$1 = { + CLOSE: `close${EVENT_KEY}`, + CLOSED: `closed${EVENT_KEY}`, + CLICK_DATA_API: `click${EVENT_KEY}${DATA_API_KEY}` +}; +const ClassName = { + ALERT: 'alert', + FADE: 'fade', + SHOW: 'show' + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + +}; + +class Alert { + constructor(element) { + this._element = element; + + if (this._element) { + Data.setData(element, DATA_KEY, this); + } + } // Getters + + + static get VERSION() { + return VERSION; + } // Public + + + close(element) { + let rootElement = this._element; + + if (element) { + rootElement = this._getRootElement(element); + } + + const customEvent = this._triggerCloseEvent(rootElement); + + if (customEvent === null || customEvent.defaultPrevented) { + return; + } + + this._removeElement(rootElement); + } + + dispose() { + Data.removeData(this._element, DATA_KEY); + this._element = null; + } // Private + + + _getRootElement(element) { + const selector = getSelectorFromElement(element); + let parent = false; + + if (selector) { + parent = SelectorEngine.findOne(selector); + } + + if (!parent) { + parent = SelectorEngine.closest(element, `.${ClassName.ALERT}`); + } + + return parent; + } + + _triggerCloseEvent(element) { + return EventHandler.trigger(element, Event$1.CLOSE); + } + + _removeElement(element) { + element.classList.remove(ClassName.SHOW); + + if (!element.classList.contains(ClassName.FADE)) { + this._destroyElement(element); + + return; + } + + const transitionDuration = getTransitionDurationFromElement(element); + EventHandler.one(element, TRANSITION_END, event => this._destroyElement(element, event)); + emulateTransitionEnd(element, transitionDuration); + } + + _destroyElement(element) { + if (element.parentNode) { + element.parentNode.removeChild(element); + } + + EventHandler.trigger(element, Event$1.CLOSED); + } // Static + + + static _jQueryInterface(config) { + return this.each(function () { + let data = Data.getData(this, DATA_KEY); + + if (!data) { + data = new Alert(this); + } + + if (config === 'close') { + data[config](this); + } + }); + } + + static _handleDismiss(alertInstance) { + return function (event) { + if (event) { + event.preventDefault(); + } + + alertInstance.close(this); + }; + } + + static _getInstance(element) { + return Data.getData(element, DATA_KEY); + } + +} +/** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + +EventHandler.on(document, Event$1.CLICK_DATA_API, Selector.DISMISS, Alert._handleDismiss(new Alert())); +/** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + * add .alert to jQuery only if jQuery is present + */ + +if (typeof jQuery !== 'undefined') { + const JQUERY_NO_CONFLICT = jQuery.fn[NAME]; + jQuery.fn[NAME] = Alert._jQueryInterface; + jQuery.fn[NAME].Constructor = Alert; + + jQuery.fn[NAME].noConflict = () => { + jQuery.fn[NAME] = JQUERY_NO_CONFLICT; + return Alert._jQueryInterface; + }; +} + +/** + * -------------------------------------------------------------------------- + * Bootstrap (v4.3.1): button.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ +/** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + +const NAME$1 = 'button'; +const VERSION$1 = '4.3.1'; +const DATA_KEY$1 = 'bs.button'; +const EVENT_KEY$1 = `.${DATA_KEY$1}`; +const DATA_API_KEY$1 = '.data-api'; +const ClassName$1 = { + ACTIVE: 'active', + BUTTON: 'btn', + FOCUS: 'focus' +}; +const Selector$1 = { + DATA_TOGGLE_CARROT: '[data-toggle^="button"]', + DATA_TOGGLE: '[data-toggle="buttons"]', + INPUT: 'input:not([type="hidden"])', + ACTIVE: '.active', + BUTTON: '.btn' +}; +const Event$2 = { + CLICK_DATA_API: `click${EVENT_KEY$1}${DATA_API_KEY$1}`, + FOCUS_DATA_API: `focus${EVENT_KEY$1}${DATA_API_KEY$1}`, + BLUR_DATA_API: `blur${EVENT_KEY$1}${DATA_API_KEY$1}` + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + +}; + +class Button { + constructor(element) { + this._element = element; + Data.setData(element, DATA_KEY$1, this); + } // Getters + + + static get VERSION() { + return VERSION$1; + } // Public + + + toggle() { + let triggerChangeEvent = true; + let addAriaPressed = true; + const rootElement = SelectorEngine.closest(this._element, Selector$1.DATA_TOGGLE); + + if (rootElement) { + const input = SelectorEngine.findOne(Selector$1.INPUT, this._element); + + if (input) { + if (input.type === 'radio') { + if (input.checked && this._element.classList.contains(ClassName$1.ACTIVE)) { + triggerChangeEvent = false; + } else { + const activeElement = SelectorEngine.findOne(Selector$1.ACTIVE, rootElement); + + if (activeElement) { + activeElement.classList.remove(ClassName$1.ACTIVE); + } + } + } + + if (triggerChangeEvent) { + if (input.hasAttribute('disabled') || rootElement.hasAttribute('disabled') || input.classList.contains('disabled') || rootElement.classList.contains('disabled')) { + return; + } + + input.checked = !this._element.classList.contains(ClassName$1.ACTIVE); + EventHandler.trigger(input, 'change'); + } + + input.focus(); + addAriaPressed = false; + } + } + + if (addAriaPressed) { + this._element.setAttribute('aria-pressed', !this._element.classList.contains(ClassName$1.ACTIVE)); + } + + if (triggerChangeEvent) { + this._element.classList.toggle(ClassName$1.ACTIVE); + } + } + + dispose() { + Data.removeData(this._element, DATA_KEY$1); + this._element = null; + } // Static + + + static _jQueryInterface(config) { + return this.each(function () { + let data = Data.getData(this, DATA_KEY$1); + + if (!data) { + data = new Button(this); + } + + if (config === 'toggle') { + data[config](); + } + }); + } + + static _getInstance(element) { + return Data.getData(element, DATA_KEY$1); + } + +} +/** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + +EventHandler.on(document, Event$2.CLICK_DATA_API, Selector$1.DATA_TOGGLE_CARROT, event => { + event.preventDefault(); + let button = event.target; + + if (!button.classList.contains(ClassName$1.BUTTON)) { + button = SelectorEngine.closest(button, Selector$1.BUTTON); + } + + let data = Data.getData(button, DATA_KEY$1); + + if (!data) { + data = new Button(button); + Data.setData(button, DATA_KEY$1, data); + } + + data.toggle(); +}); +EventHandler.on(document, Event$2.FOCUS_DATA_API, Selector$1.DATA_TOGGLE_CARROT, event => { + const button = SelectorEngine.closest(event.target, Selector$1.BUTTON); + button.classList.add(ClassName$1.FOCUS); +}); +EventHandler.on(document, Event$2.BLUR_DATA_API, Selector$1.DATA_TOGGLE_CARROT, event => { + const button = SelectorEngine.closest(event.target, Selector$1.BUTTON); + button.classList.remove(ClassName$1.FOCUS); +}); +/** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + * add .button to jQuery only if jQuery is present + */ + +if (typeof jQuery !== 'undefined') { + const JQUERY_NO_CONFLICT = jQuery.fn[NAME$1]; + jQuery.fn[NAME$1] = Button._jQueryInterface; + jQuery.fn[NAME$1].Constructor = Button; + + jQuery.fn[NAME$1].noConflict = () => { + jQuery.fn[NAME$1] = JQUERY_NO_CONFLICT; + return Button._jQueryInterface; + }; +} + +function _extends() { + _extends = Object.assign || function (target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key]; + } + } + } + + return target; + }; + + return _extends.apply(this, arguments); +} + +/** + * -------------------------------------------------------------------------- + * Bootstrap (v4.3.1): dom/manipulator.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ +function normalizeData(val) { + if (val === 'true') { + return true; + } + + if (val === 'false') { + return false; + } + + if (val === Number(val).toString()) { + return Number(val); + } + + if (val === '' || val === 'null') { + return null; + } + + return val; +} + +function normalizeDataKey(key) { + return key.replace(/[A-Z]/g, chr => chr.toLowerCase()); +} + +const Manipulator = { + setDataAttribute(element, key, value) { + element.setAttribute(`data-${normalizeDataKey(key)}`, value); + }, + + removeDataAttribute(element, key) { + element.removeAttribute(`data-${normalizeDataKey(key)}`); + }, + + getDataAttributes(element) { + if (!element) { + return {}; + } + + const attributes = _extends({}, element.dataset); + + Object.keys(attributes).forEach(key => { + attributes[key] = normalizeData(attributes[key]); + }); + return attributes; + }, + + getDataAttribute(element, key) { + return normalizeData(element.getAttribute(`data-${normalizeDataKey(key)}`)); + }, + + offset(element) { + const rect = element.getBoundingClientRect(); + return { + top: rect.top + document.body.scrollTop, + left: rect.left + document.body.scrollLeft + }; + }, + + position(element) { + return { + top: element.offsetTop, + left: element.offsetLeft + }; + }, + + toggleClass(element, className) { + if (!element) { + return; + } + + if (element.classList.contains(className)) { + element.classList.remove(className); + } else { + element.classList.add(className); + } + } + +}; + +/** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + +const NAME$2 = 'carousel'; +const VERSION$2 = '4.3.1'; +const DATA_KEY$2 = 'bs.carousel'; +const EVENT_KEY$2 = `.${DATA_KEY$2}`; +const DATA_API_KEY$2 = '.data-api'; +const ARROW_LEFT_KEYCODE = 37; // KeyboardEvent.which value for left arrow key + +const ARROW_RIGHT_KEYCODE = 39; // KeyboardEvent.which value for right arrow key + +const TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch + +const SWIPE_THRESHOLD = 40; +const Default = { + interval: 5000, + keyboard: true, + slide: false, + pause: 'hover', + wrap: true, + touch: true +}; +const DefaultType = { + interval: '(number|boolean)', + keyboard: 'boolean', + slide: '(boolean|string)', + pause: '(string|boolean)', + wrap: 'boolean', + touch: 'boolean' +}; +const Direction = { + NEXT: 'next', + PREV: 'prev', + LEFT: 'left', + RIGHT: 'right' +}; +const Event$3 = { + SLIDE: `slide${EVENT_KEY$2}`, + SLID: `slid${EVENT_KEY$2}`, + KEYDOWN: `keydown${EVENT_KEY$2}`, + MOUSEENTER: `mouseenter${EVENT_KEY$2}`, + MOUSELEAVE: `mouseleave${EVENT_KEY$2}`, + TOUCHSTART: `touchstart${EVENT_KEY$2}`, + TOUCHMOVE: `touchmove${EVENT_KEY$2}`, + TOUCHEND: `touchend${EVENT_KEY$2}`, + POINTERDOWN: `pointerdown${EVENT_KEY$2}`, + POINTERUP: `pointerup${EVENT_KEY$2}`, + DRAG_START: `dragstart${EVENT_KEY$2}`, + LOAD_DATA_API: `load${EVENT_KEY$2}${DATA_API_KEY$2}`, + CLICK_DATA_API: `click${EVENT_KEY$2}${DATA_API_KEY$2}` +}; +const ClassName$2 = { + 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', + POINTER_EVENT: 'pointer-event' +}; +const Selector$2 = { + ACTIVE: '.active', + ACTIVE_ITEM: '.active.carousel-item', + ITEM: '.carousel-item', + ITEM_IMG: '.carousel-item img', + NEXT_PREV: '.carousel-item-next, .carousel-item-prev', + INDICATORS: '.carousel-indicators', + DATA_SLIDE: '[data-slide], [data-slide-to]', + DATA_RIDE: '[data-ride="carousel"]' +}; +const PointerType = { + TOUCH: 'touch', + PEN: 'pen' + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + +}; + +class Carousel { + constructor(element, config) { + this._items = null; + this._interval = null; + this._activeElement = null; + this._isPaused = false; + this._isSliding = false; + this.touchTimeout = null; + this.touchStartX = 0; + this.touchDeltaX = 0; + this._config = this._getConfig(config); + this._element = element; + this._indicatorsElement = SelectorEngine.findOne(Selector$2.INDICATORS, this._element); + this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0; + this._pointerEvent = Boolean(window.PointerEvent || window.MSPointerEvent); + + this._addEventListeners(); + + Data.setData(element, DATA_KEY$2, this); + } // Getters + + + static get VERSION() { + return VERSION$2; + } + + static get Default() { + return Default; + } // Public + + + next() { + if (!this._isSliding) { + this._slide(Direction.NEXT); + } + } + + nextWhenVisible() { + // Don't call next when the page isn't visible + // or the carousel or its parent isn't visible + if (!document.hidden && isVisible(this._element)) { + this.next(); + } + } + + prev() { + if (!this._isSliding) { + this._slide(Direction.PREV); + } + } + + pause(event) { + if (!event) { + this._isPaused = true; + } + + if (SelectorEngine.findOne(Selector$2.NEXT_PREV, this._element)) { + triggerTransitionEnd(this._element); + this.cycle(true); + } + + clearInterval(this._interval); + this._interval = null; + } + + cycle(event) { + if (!event) { + this._isPaused = false; + } + + if (this._interval) { + clearInterval(this._interval); + this._interval = null; + } + + if (this._config && this._config.interval && !this._isPaused) { + this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval); + } + } + + to(index) { + this._activeElement = SelectorEngine.findOne(Selector$2.ACTIVE_ITEM, this._element); + + const activeIndex = this._getItemIndex(this._activeElement); + + if (index > this._items.length - 1 || index < 0) { + return; + } + + if (this._isSliding) { + EventHandler.one(this._element, Event$3.SLID, () => this.to(index)); + return; + } + + if (activeIndex === index) { + this.pause(); + this.cycle(); + return; + } + + const direction = index > activeIndex ? Direction.NEXT : Direction.PREV; + + this._slide(direction, this._items[index]); + } + + dispose() { + EventHandler.off(this._element, EVENT_KEY$2); + Data.removeData(this._element, DATA_KEY$2); + this._items = null; + this._config = null; + this._element = null; + this._interval = null; + this._isPaused = null; + this._isSliding = null; + this._activeElement = null; + this._indicatorsElement = null; + } // Private + + + _getConfig(config) { + config = _extends({}, Default, config); + typeCheckConfig(NAME$2, config, DefaultType); + return config; + } + + _handleSwipe() { + const absDeltax = Math.abs(this.touchDeltaX); + + if (absDeltax <= SWIPE_THRESHOLD) { + return; + } + + const direction = absDeltax / this.touchDeltaX; // swipe left + + if (direction > 0) { + this.prev(); + } // swipe right + + + if (direction < 0) { + this.next(); + } + } + + _addEventListeners() { + if (this._config.keyboard) { + EventHandler.on(this._element, Event$3.KEYDOWN, event => this._keydown(event)); + } + + if (this._config.pause === 'hover') { + EventHandler.on(this._element, Event$3.MOUSEENTER, event => this.pause(event)); + EventHandler.on(this._element, Event$3.MOUSELEAVE, event => this.cycle(event)); + } + + if (this._config.touch) { + this._addTouchEventListeners(); + } + } + + _addTouchEventListeners() { + if (!this._touchSupported) { + return; + } + + const start = event => { + if (this._pointerEvent && PointerType[event.pointerType.toUpperCase()]) { + this.touchStartX = event.clientX; + } else if (!this._pointerEvent) { + this.touchStartX = event.touches[0].clientX; + } + }; + + const move = event => { + // ensure swiping with one touch and not pinching + if (event.touches && event.touches.length > 1) { + this.touchDeltaX = 0; + } else { + this.touchDeltaX = event.touches[0].clientX - this.touchStartX; + } + }; + + const end = event => { + if (this._pointerEvent && PointerType[event.pointerType.toUpperCase()]) { + this.touchDeltaX = event.clientX - this.touchStartX; + } + + this._handleSwipe(); + + if (this._config.pause === 'hover') { + // If it's a touch-enabled device, mouseenter/leave are fired as + // part of the mouse compatibility events on first tap - the carousel + // would stop cycling until user tapped out of it; + // here, we listen for touchend, explicitly pause the carousel + // (as if it's the second time we tap on it, mouseenter compat event + // is NOT fired) and after a timeout (to allow for mouse compatibility + // events to fire) we explicitly restart cycling + this.pause(); + + if (this.touchTimeout) { + clearTimeout(this.touchTimeout); + } + + this.touchTimeout = setTimeout(event => this.cycle(event), TOUCHEVENT_COMPAT_WAIT + this._config.interval); + } + }; + + makeArray(SelectorEngine.find(Selector$2.ITEM_IMG, this._element)).forEach(itemImg => { + EventHandler.on(itemImg, Event$3.DRAG_START, e => e.preventDefault()); + }); + + if (this._pointerEvent) { + EventHandler.on(this._element, Event$3.POINTERDOWN, event => start(event)); + EventHandler.on(this._element, Event$3.POINTERUP, event => end(event)); + + this._element.classList.add(ClassName$2.POINTER_EVENT); + } else { + EventHandler.on(this._element, Event$3.TOUCHSTART, event => start(event)); + EventHandler.on(this._element, Event$3.TOUCHMOVE, event => move(event)); + EventHandler.on(this._element, Event$3.TOUCHEND, event => end(event)); + } + } + + _keydown(event) { + if (/input|textarea/i.test(event.target.tagName)) { + return; + } + + switch (event.which) { + case ARROW_LEFT_KEYCODE: + event.preventDefault(); + this.prev(); + break; + + case ARROW_RIGHT_KEYCODE: + event.preventDefault(); + this.next(); + break; + + default: + } + } + + _getItemIndex(element) { + this._items = element && element.parentNode ? makeArray(SelectorEngine.find(Selector$2.ITEM, element.parentNode)) : []; + return this._items.indexOf(element); + } + + _getItemByDirection(direction, activeElement) { + const isNextDirection = direction === Direction.NEXT; + const isPrevDirection = direction === Direction.PREV; + + const activeIndex = this._getItemIndex(activeElement); + + const lastItemIndex = this._items.length - 1; + const isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex === lastItemIndex; + + if (isGoingToWrap && !this._config.wrap) { + return activeElement; + } + + const delta = direction === Direction.PREV ? -1 : 1; + const itemIndex = (activeIndex + delta) % this._items.length; + return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex]; + } + + _triggerSlideEvent(relatedTarget, eventDirectionName) { + const targetIndex = this._getItemIndex(relatedTarget); + + const fromIndex = this._getItemIndex(SelectorEngine.findOne(Selector$2.ACTIVE_ITEM, this._element)); + + return EventHandler.trigger(this._element, Event$3.SLIDE, { + relatedTarget, + direction: eventDirectionName, + from: fromIndex, + to: targetIndex + }); + } + + _setActiveIndicatorElement(element) { + if (this._indicatorsElement) { + const indicators = SelectorEngine.find(Selector$2.ACTIVE, this._indicatorsElement); + + for (let i = 0; i < indicators.length; i++) { + indicators[i].classList.remove(ClassName$2.ACTIVE); + } + + const nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)]; + + if (nextIndicator) { + nextIndicator.classList.add(ClassName$2.ACTIVE); + } + } + } + + _slide(direction, element) { + const activeElement = SelectorEngine.findOne(Selector$2.ACTIVE_ITEM, this._element); + + const activeElementIndex = this._getItemIndex(activeElement); + + const nextElement = element || activeElement && this._getItemByDirection(direction, activeElement); + + const nextElementIndex = this._getItemIndex(nextElement); + + const isCycling = Boolean(this._interval); + let directionalClassName; + let orderClassName; + let eventDirectionName; + + if (direction === Direction.NEXT) { + directionalClassName = ClassName$2.LEFT; + orderClassName = ClassName$2.NEXT; + eventDirectionName = Direction.LEFT; + } else { + directionalClassName = ClassName$2.RIGHT; + orderClassName = ClassName$2.PREV; + eventDirectionName = Direction.RIGHT; + } + + if (nextElement && nextElement.classList.contains(ClassName$2.ACTIVE)) { + this._isSliding = false; + return; + } + + const slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName); + + if (slideEvent.defaultPrevented) { + return; + } + + if (!activeElement || !nextElement) { + // Some weirdness is happening, so we bail + return; + } + + this._isSliding = true; + + if (isCycling) { + this.pause(); + } + + this._setActiveIndicatorElement(nextElement); + + if (this._element.classList.contains(ClassName$2.SLIDE)) { + nextElement.classList.add(orderClassName); + reflow(nextElement); + activeElement.classList.add(directionalClassName); + nextElement.classList.add(directionalClassName); + const nextElementInterval = parseInt(nextElement.getAttribute('data-interval'), 10); + + if (nextElementInterval) { + this._config.defaultInterval = this._config.defaultInterval || this._config.interval; + this._config.interval = nextElementInterval; + } else { + this._config.interval = this._config.defaultInterval || this._config.interval; + } + + const transitionDuration = getTransitionDurationFromElement(activeElement); + EventHandler.one(activeElement, TRANSITION_END, () => { + nextElement.classList.remove(directionalClassName); + nextElement.classList.remove(orderClassName); + nextElement.classList.add(ClassName$2.ACTIVE); + activeElement.classList.remove(ClassName$2.ACTIVE); + activeElement.classList.remove(orderClassName); + activeElement.classList.remove(directionalClassName); + this._isSliding = false; + setTimeout(() => { + EventHandler.trigger(this._element, Event$3.SLID, { + relatedTarget: nextElement, + direction: eventDirectionName, + from: activeElementIndex, + to: nextElementIndex + }); + }, 0); + }); + emulateTransitionEnd(activeElement, transitionDuration); + } else { + activeElement.classList.remove(ClassName$2.ACTIVE); + nextElement.classList.add(ClassName$2.ACTIVE); + this._isSliding = false; + EventHandler.trigger(this._element, Event$3.SLID, { + relatedTarget: nextElement, + direction: eventDirectionName, + from: activeElementIndex, + to: nextElementIndex + }); + } + + if (isCycling) { + this.cycle(); + } + } // Static + + + static _carouselInterface(element, config) { + let data = Data.getData(element, DATA_KEY$2); + + let _config = _extends({}, Default, Manipulator.getDataAttributes(element)); + + if (typeof config === 'object') { + _config = _extends({}, _config, config); + } + + const action = typeof config === 'string' ? config : _config.slide; + + if (!data) { + data = new Carousel(element, _config); + } + + if (typeof config === 'number') { + data.to(config); + } else if (typeof action === 'string') { + if (typeof data[action] === 'undefined') { + throw new TypeError(`No method named "${action}"`); + } + + data[action](); + } else if (_config.interval && _config.ride) { + data.pause(); + data.cycle(); + } + } + + static _jQueryInterface(config) { + return this.each(function () { + Carousel._carouselInterface(this, config); + }); + } + + static _dataApiClickHandler(event) { + const selector = getSelectorFromElement(this); + + if (!selector) { + return; + } + + const target = SelectorEngine.findOne(selector); + + if (!target || !target.classList.contains(ClassName$2.CAROUSEL)) { + return; + } + + const config = _extends({}, Manipulator.getDataAttributes(target), Manipulator.getDataAttributes(this)); + + const slideIndex = this.getAttribute('data-slide-to'); + + if (slideIndex) { + config.interval = false; + } + + Carousel._carouselInterface(target, config); + + if (slideIndex) { + Data.getData(target, DATA_KEY$2).to(slideIndex); + } + + event.preventDefault(); + } + + static _getInstance(element) { + return Data.getData(element, DATA_KEY$2); + } + +} +/** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + +EventHandler.on(document, Event$3.CLICK_DATA_API, Selector$2.DATA_SLIDE, Carousel._dataApiClickHandler); +EventHandler.on(window, Event$3.LOAD_DATA_API, () => { + const carousels = makeArray(SelectorEngine.find(Selector$2.DATA_RIDE)); + + for (let i = 0, len = carousels.length; i < len; i++) { + Carousel._carouselInterface(carousels[i], Data.getData(carousels[i], DATA_KEY$2)); + } +}); +/** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + * add .carousel to jQuery only if jQuery is present + */ + +if (typeof jQuery !== 'undefined') { + const JQUERY_NO_CONFLICT = jQuery.fn[NAME$2]; + jQuery.fn[NAME$2] = Carousel._jQueryInterface; + jQuery.fn[NAME$2].Constructor = Carousel; + + jQuery.fn[NAME$2].noConflict = () => { + jQuery.fn[NAME$2] = JQUERY_NO_CONFLICT; + return Carousel._jQueryInterface; + }; +} + +/** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + +const NAME$3 = 'collapse'; +const VERSION$3 = '4.3.1'; +const DATA_KEY$3 = 'bs.collapse'; +const EVENT_KEY$3 = `.${DATA_KEY$3}`; +const DATA_API_KEY$3 = '.data-api'; +const Default$1 = { + toggle: true, + parent: '' +}; +const DefaultType$1 = { + toggle: 'boolean', + parent: '(string|element)' +}; +const Event$4 = { + SHOW: `show${EVENT_KEY$3}`, + SHOWN: `shown${EVENT_KEY$3}`, + HIDE: `hide${EVENT_KEY$3}`, + HIDDEN: `hidden${EVENT_KEY$3}`, + CLICK_DATA_API: `click${EVENT_KEY$3}${DATA_API_KEY$3}` +}; +const ClassName$3 = { + SHOW: 'show', + COLLAPSE: 'collapse', + COLLAPSING: 'collapsing', + COLLAPSED: 'collapsed' +}; +const Dimension = { + WIDTH: 'width', + HEIGHT: 'height' +}; +const Selector$3 = { + ACTIVES: '.show, .collapsing', + DATA_TOGGLE: '[data-toggle="collapse"]' + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + +}; + +class Collapse { + constructor(element, config) { + this._isTransitioning = false; + this._element = element; + this._config = this._getConfig(config); + this._triggerArray = makeArray(SelectorEngine.find(`[data-toggle="collapse"][href="#${element.id}"],` + `[data-toggle="collapse"][data-target="#${element.id}"]`)); + const toggleList = makeArray(SelectorEngine.find(Selector$3.DATA_TOGGLE)); + + for (let i = 0, len = toggleList.length; i < len; i++) { + const elem = toggleList[i]; + const selector = getSelectorFromElement(elem); + const filterElement = makeArray(SelectorEngine.find(selector)).filter(foundElem => foundElem === element); + + if (selector !== null && filterElement.length) { + this._selector = selector; + + this._triggerArray.push(elem); + } + } + + this._parent = this._config.parent ? this._getParent() : null; + + if (!this._config.parent) { + this._addAriaAndCollapsedClass(this._element, this._triggerArray); + } + + if (this._config.toggle) { + this.toggle(); + } + + Data.setData(element, DATA_KEY$3, this); + } // Getters + + + static get VERSION() { + return VERSION$3; + } + + static get Default() { + return Default$1; + } // Public + + + toggle() { + if (this._element.classList.contains(ClassName$3.SHOW)) { + this.hide(); + } else { + this.show(); + } + } + + show() { + if (this._isTransitioning || this._element.classList.contains(ClassName$3.SHOW)) { + return; + } + + let actives; + let activesData; + + if (this._parent) { + actives = makeArray(SelectorEngine.find(Selector$3.ACTIVES, this._parent)).filter(elem => { + if (typeof this._config.parent === 'string') { + return elem.getAttribute('data-parent') === this._config.parent; + } + + return elem.classList.contains(ClassName$3.COLLAPSE); + }); + + if (actives.length === 0) { + actives = null; + } + } + + const container = SelectorEngine.findOne(this._selector); + + if (actives) { + const tempActiveData = actives.filter(elem => container !== elem); + activesData = tempActiveData[0] ? Data.getData(tempActiveData[0], DATA_KEY$3) : null; + + if (activesData && activesData._isTransitioning) { + return; + } + } + + const startEvent = EventHandler.trigger(this._element, Event$4.SHOW); + + if (startEvent.defaultPrevented) { + return; + } + + if (actives) { + actives.forEach(elemActive => { + if (container !== elemActive) { + Collapse._collapseInterface(elemActive, 'hide'); + } + + if (!activesData) { + Data.setData(elemActive, DATA_KEY$3, null); + } + }); + } + + const dimension = this._getDimension(); + + this._element.classList.remove(ClassName$3.COLLAPSE); + + this._element.classList.add(ClassName$3.COLLAPSING); + + this._element.style[dimension] = 0; + + if (this._triggerArray.length) { + this._triggerArray.forEach(element => { + element.classList.remove(ClassName$3.COLLAPSED); + element.setAttribute('aria-expanded', true); + }); + } + + this.setTransitioning(true); + + const complete = () => { + this._element.classList.remove(ClassName$3.COLLAPSING); + + this._element.classList.add(ClassName$3.COLLAPSE); + + this._element.classList.add(ClassName$3.SHOW); + + this._element.style[dimension] = ''; + this.setTransitioning(false); + EventHandler.trigger(this._element, Event$4.SHOWN); + }; + + const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1); + const scrollSize = `scroll${capitalizedDimension}`; + const transitionDuration = getTransitionDurationFromElement(this._element); + EventHandler.one(this._element, TRANSITION_END, complete); + emulateTransitionEnd(this._element, transitionDuration); + this._element.style[dimension] = `${this._element[scrollSize]}px`; + } + + hide() { + if (this._isTransitioning || !this._element.classList.contains(ClassName$3.SHOW)) { + return; + } + + const startEvent = EventHandler.trigger(this._element, Event$4.HIDE); + + if (startEvent.defaultPrevented) { + return; + } + + const dimension = this._getDimension(); + + this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`; + reflow(this._element); + + this._element.classList.add(ClassName$3.COLLAPSING); + + this._element.classList.remove(ClassName$3.COLLAPSE); + + this._element.classList.remove(ClassName$3.SHOW); + + const triggerArrayLength = this._triggerArray.length; + + if (triggerArrayLength > 0) { + for (let i = 0; i < triggerArrayLength; i++) { + const trigger = this._triggerArray[i]; + const selector = getSelectorFromElement(trigger); + + if (selector !== null) { + const elem = SelectorEngine.findOne(selector); + + if (!elem.classList.contains(ClassName$3.SHOW)) { + trigger.classList.add(ClassName$3.COLLAPSED); + trigger.setAttribute('aria-expanded', false); + } + } + } + } + + this.setTransitioning(true); + + const complete = () => { + this.setTransitioning(false); + + this._element.classList.remove(ClassName$3.COLLAPSING); + + this._element.classList.add(ClassName$3.COLLAPSE); + + EventHandler.trigger(this._element, Event$4.HIDDEN); + }; + + this._element.style[dimension] = ''; + const transitionDuration = getTransitionDurationFromElement(this._element); + EventHandler.one(this._element, TRANSITION_END, complete); + emulateTransitionEnd(this._element, transitionDuration); + } + + setTransitioning(isTransitioning) { + this._isTransitioning = isTransitioning; + } + + dispose() { + Data.removeData(this._element, DATA_KEY$3); + this._config = null; + this._parent = null; + this._element = null; + this._triggerArray = null; + this._isTransitioning = null; + } // Private + + + _getConfig(config) { + config = _extends({}, Default$1, config); + config.toggle = Boolean(config.toggle); // Coerce string values + + typeCheckConfig(NAME$3, config, DefaultType$1); + return config; + } + + _getDimension() { + const hasWidth = this._element.classList.contains(Dimension.WIDTH); + + return hasWidth ? Dimension.WIDTH : Dimension.HEIGHT; + } + + _getParent() { + let parent = this._config.parent; + + if (isElement(parent)) { + // it's a jQuery object + if (typeof parent.jquery !== 'undefined' || typeof parent[0] !== 'undefined') { + parent = parent[0]; + } + } else { + parent = SelectorEngine.findOne(parent); + } + + const selector = `[data-toggle="collapse"][data-parent="${parent}"]`; + makeArray(SelectorEngine.find(selector, parent)).forEach(element => { + this._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]); + }); + return parent; + } + + _addAriaAndCollapsedClass(element, triggerArray) { + if (element) { + const isOpen = element.classList.contains(ClassName$3.SHOW); + + if (triggerArray.length) { + triggerArray.forEach(elem => { + if (isOpen) { + elem.classList.remove(ClassName$3.COLLAPSED); + } else { + elem.classList.add(ClassName$3.COLLAPSED); + } + + elem.setAttribute('aria-expanded', isOpen); + }); + } + } + } // Static + + + static _getTargetFromElement(element) { + const selector = getSelectorFromElement(element); + return selector ? SelectorEngine.findOne(selector) : null; + } + + static _collapseInterface(element, config) { + let data = Data.getData(element, DATA_KEY$3); + + const _config = _extends({}, Default$1, Manipulator.getDataAttributes(element), typeof config === 'object' && config ? config : {}); + + if (!data && _config.toggle && /show|hide/.test(config)) { + _config.toggle = false; + } + + if (!data) { + data = new Collapse(element, _config); + } + + if (typeof config === 'string') { + if (typeof data[config] === 'undefined') { + throw new TypeError(`No method named "${config}"`); + } + + data[config](); + } + } + + static _jQueryInterface(config) { + return this.each(function () { + Collapse._collapseInterface(this, config); + }); + } + + static _getInstance(element) { + return Data.getData(element, DATA_KEY$3); + } + +} +/** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + +EventHandler.on(document, Event$4.CLICK_DATA_API, Selector$3.DATA_TOGGLE, function (event) { + // preventDefault only for elements (which change the URL) not inside the collapsible element + if (event.target.tagName === 'A') { + event.preventDefault(); + } + + const triggerData = Manipulator.getDataAttributes(this); + const selector = getSelectorFromElement(this); + const selectorElements = makeArray(SelectorEngine.find(selector)); + selectorElements.forEach(element => { + const data = Data.getData(element, DATA_KEY$3); + let config; + + if (data) { + // update parent attribute + if (data._parent === null && typeof triggerData.parent === 'string') { + data._config.parent = triggerData.parent; + data._parent = data._getParent(); + } + + config = 'toggle'; + } else { + config = triggerData; + } + + Collapse._collapseInterface(element, config); + }); +}); +/** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + * add .collapse to jQuery only if jQuery is present + */ + +if (typeof jQuery !== 'undefined') { + const JQUERY_NO_CONFLICT = jQuery.fn[NAME$3]; + jQuery.fn[NAME$3] = Collapse._jQueryInterface; + jQuery.fn[NAME$3].Constructor = Collapse; + + jQuery.fn[NAME$3].noConflict = () => { + jQuery.fn[NAME$3] = JQUERY_NO_CONFLICT; + return Collapse._jQueryInterface; + }; +} + +/** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + +const NAME$4 = 'dropdown'; +const VERSION$4 = '4.3.1'; +const DATA_KEY$4 = 'bs.dropdown'; +const EVENT_KEY$4 = `.${DATA_KEY$4}`; +const DATA_API_KEY$4 = '.data-api'; +const ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key + +const SPACE_KEYCODE = 32; // KeyboardEvent.which value for space key + +const TAB_KEYCODE = 9; // KeyboardEvent.which value for tab key + +const ARROW_UP_KEYCODE = 38; // KeyboardEvent.which value for up arrow key + +const ARROW_DOWN_KEYCODE = 40; // KeyboardEvent.which value for down arrow key + +const RIGHT_MOUSE_BUTTON_WHICH = 3; // MouseEvent.which value for the right button (assuming a right-handed mouse) + +const REGEXP_KEYDOWN = new RegExp(`${ARROW_UP_KEYCODE}|${ARROW_DOWN_KEYCODE}|${ESCAPE_KEYCODE}`); +const Event$5 = { + HIDE: `hide${EVENT_KEY$4}`, + HIDDEN: `hidden${EVENT_KEY$4}`, + SHOW: `show${EVENT_KEY$4}`, + SHOWN: `shown${EVENT_KEY$4}`, + CLICK: `click${EVENT_KEY$4}`, + CLICK_DATA_API: `click${EVENT_KEY$4}${DATA_API_KEY$4}`, + KEYDOWN_DATA_API: `keydown${EVENT_KEY$4}${DATA_API_KEY$4}`, + KEYUP_DATA_API: `keyup${EVENT_KEY$4}${DATA_API_KEY$4}` +}; +const ClassName$4 = { + DISABLED: 'disabled', + SHOW: 'show', + DROPUP: 'dropup', + DROPRIGHT: 'dropright', + DROPLEFT: 'dropleft', + MENURIGHT: 'dropdown-menu-right', + POSITION_STATIC: 'position-static' +}; +const Selector$4 = { + DATA_TOGGLE: '[data-toggle="dropdown"]', + FORM_CHILD: '.dropdown form', + MENU: '.dropdown-menu', + NAVBAR_NAV: '.navbar-nav', + VISIBLE_ITEMS: '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)' +}; +const AttachmentMap = { + TOP: 'top-start', + TOPEND: 'top-end', + BOTTOM: 'bottom-start', + BOTTOMEND: 'bottom-end', + RIGHT: 'right-start', + RIGHTEND: 'right-end', + LEFT: 'left-start', + LEFTEND: 'left-end' +}; +const Default$2 = { + offset: 0, + flip: true, + boundary: 'scrollParent', + reference: 'toggle', + display: 'dynamic' +}; +const DefaultType$2 = { + offset: '(number|string|function)', + flip: 'boolean', + boundary: '(string|element)', + reference: '(string|element)', + display: 'string' + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + +}; + +class Dropdown { + constructor(element, config) { + this._element = element; + this._popper = null; + this._config = this._getConfig(config); + this._menu = this._getMenuElement(); + this._inNavbar = this._detectNavbar(); + + this._addEventListeners(); + + Data.setData(element, DATA_KEY$4, this); + } // Getters + + + static get VERSION() { + return VERSION$4; + } + + static get Default() { + return Default$2; + } + + static get DefaultType() { + return DefaultType$2; + } // Public + + + toggle() { + if (this._element.disabled || this._element.classList.contains(ClassName$4.DISABLED)) { + return; + } + + const parent = Dropdown._getParentFromElement(this._element); + + const isActive = this._menu.classList.contains(ClassName$4.SHOW); + + Dropdown._clearMenus(); + + if (isActive) { + return; + } + + const relatedTarget = { + relatedTarget: this._element + }; + const showEvent = EventHandler.trigger(parent, Event$5.SHOW, relatedTarget); + + if (showEvent.defaultPrevented) { + return; + } // Disable totally Popper.js for Dropdown in Navbar + + + if (!this._inNavbar) { + /** + * Check for Popper dependency + * Popper - https://popper.js.org + */ + if (typeof Popper === 'undefined') { + throw new TypeError('Bootstrap\'s dropdowns require Popper.js (https://popper.js.org)'); + } + + let referenceElement = this._element; + + if (this._config.reference === 'parent') { + referenceElement = parent; + } else if (isElement(this._config.reference)) { + referenceElement = this._config.reference; // Check if it's jQuery element + + if (typeof this._config.reference.jquery !== 'undefined') { + referenceElement = this._config.reference[0]; + } + } // If boundary is not `scrollParent`, then set position to `static` + // to allow the menu to "escape" the scroll parent's boundaries + // https://github.com/twbs/bootstrap/issues/24251 + + + if (this._config.boundary !== 'scrollParent') { + parent.classList.add(ClassName$4.POSITION_STATIC); + } + + this._popper = new Popper(referenceElement, this._menu, this._getPopperConfig()); + } // If this is a touch-enabled device we add extra + // empty mouseover listeners to the body's immediate children; + // only needed because of broken event delegation on iOS + // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html + + + if ('ontouchstart' in document.documentElement && !makeArray(SelectorEngine.closest(parent, Selector$4.NAVBAR_NAV)).length) { + makeArray(document.body.children).forEach(elem => EventHandler.on(elem, 'mouseover', null, noop())); + } + + this._element.focus(); + + this._element.setAttribute('aria-expanded', true); + + Manipulator.toggleClass(this._menu, ClassName$4.SHOW); + Manipulator.toggleClass(parent, ClassName$4.SHOW); + EventHandler.trigger(parent, Event$5.SHOWN, relatedTarget); + } + + show() { + if (this._element.disabled || this._element.classList.contains(ClassName$4.DISABLED) || this._menu.classList.contains(ClassName$4.SHOW)) { + return; + } + + const parent = Dropdown._getParentFromElement(this._element); + + const relatedTarget = { + relatedTarget: this._element + }; + const showEvent = EventHandler.trigger(parent, Event$5.SHOW, relatedTarget); + + if (showEvent.defaultPrevented) { + return; + } + + Manipulator.toggleClass(this._menu, ClassName$4.SHOW); + Manipulator.toggleClass(parent, ClassName$4.SHOW); + EventHandler.trigger(parent, Event$5.SHOWN, relatedTarget); + } + + hide() { + if (this._element.disabled || this._element.classList.contains(ClassName$4.DISABLED) || !this._menu.classList.contains(ClassName$4.SHOW)) { + return; + } + + const parent = Dropdown._getParentFromElement(this._element); + + const relatedTarget = { + relatedTarget: this._element + }; + const hideEvent = EventHandler.trigger(parent, Event$5.HIDE, relatedTarget); + + if (hideEvent.defaultPrevented) { + return; + } + + Manipulator.toggleClass(this._menu, ClassName$4.SHOW); + Manipulator.toggleClass(parent, ClassName$4.SHOW); + EventHandler.trigger(parent, Event$5.HIDDEN, relatedTarget); + } + + dispose() { + Data.removeData(this._element, DATA_KEY$4); + EventHandler.off(this._element, EVENT_KEY$4); + this._element = null; + this._menu = null; + + if (this._popper !== null) { + this._popper.destroy(); + + this._popper = null; + } + } + + update() { + this._inNavbar = this._detectNavbar(); + + if (this._popper !== null) { + this._popper.scheduleUpdate(); + } + } // Private + + + _addEventListeners() { + EventHandler.on(this._element, Event$5.CLICK, event => { + event.preventDefault(); + event.stopPropagation(); + this.toggle(); + }); + } + + _getConfig(config) { + config = _extends({}, this.constructor.Default, Manipulator.getDataAttributes(this._element), config); + typeCheckConfig(NAME$4, config, this.constructor.DefaultType); + return config; + } + + _getMenuElement() { + if (!this._menu) { + const parent = Dropdown._getParentFromElement(this._element); + + if (parent) { + this._menu = SelectorEngine.findOne(Selector$4.MENU, parent); + } + } + + return this._menu; + } + + _getPlacement() { + const parentDropdown = this._element.parentNode; + let placement = AttachmentMap.BOTTOM; // Handle dropup + + if (parentDropdown.classList.contains(ClassName$4.DROPUP)) { + placement = AttachmentMap.TOP; + + if (this._menu.classList.contains(ClassName$4.MENURIGHT)) { + placement = AttachmentMap.TOPEND; + } + } else if (parentDropdown.classList.contains(ClassName$4.DROPRIGHT)) { + placement = AttachmentMap.RIGHT; + } else if (parentDropdown.classList.contains(ClassName$4.DROPLEFT)) { + placement = AttachmentMap.LEFT; + } else if (this._menu.classList.contains(ClassName$4.MENURIGHT)) { + placement = AttachmentMap.BOTTOMEND; + } + + return placement; + } + + _detectNavbar() { + return Boolean(SelectorEngine.closest(this._element, '.navbar')); + } + + _getOffset() { + const offset = {}; + + if (typeof this._config.offset === 'function') { + offset.fn = data => { + data.offsets = _extends({}, data.offsets, this._config.offset(data.offsets, this._element) || {}); + return data; + }; + } else { + offset.offset = this._config.offset; + } + + return offset; + } + + _getPopperConfig() { + const popperConfig = { + placement: this._getPlacement(), + modifiers: { + offset: this._getOffset(), + flip: { + enabled: this._config.flip + }, + preventOverflow: { + boundariesElement: this._config.boundary + } + } // Disable Popper.js if we have a static display + + }; + + if (this._config.display === 'static') { + popperConfig.modifiers.applyStyle = { + enabled: false + }; + } + + return popperConfig; + } // Static + + + static _dropdownInterface(element, config) { + let data = Data.getData(element, DATA_KEY$4); + + const _config = typeof config === 'object' ? config : null; + + if (!data) { + data = new Dropdown(element, _config); + } + + if (typeof config === 'string') { + if (typeof data[config] === 'undefined') { + throw new TypeError(`No method named "${config}"`); + } + + data[config](); + } + } + + static _jQueryInterface(config) { + return this.each(function () { + Dropdown._dropdownInterface(this, config); + }); + } + + static _clearMenus(event) { + if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH || event.type === 'keyup' && event.which !== TAB_KEYCODE)) { + return; + } + + const toggles = makeArray(SelectorEngine.find(Selector$4.DATA_TOGGLE)); + + for (let i = 0, len = toggles.length; i < len; i++) { + const parent = Dropdown._getParentFromElement(toggles[i]); + + const context = Data.getData(toggles[i], DATA_KEY$4); + const relatedTarget = { + relatedTarget: toggles[i] + }; + + if (event && event.type === 'click') { + relatedTarget.clickEvent = event; + } + + if (!context) { + continue; + } + + const dropdownMenu = context._menu; + + if (!parent.classList.contains(ClassName$4.SHOW)) { + continue; + } + + if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) && parent.contains(event.target)) { + continue; + } + + const hideEvent = EventHandler.trigger(parent, Event$5.HIDE, relatedTarget); + + if (hideEvent.defaultPrevented) { + continue; + } // If this is a touch-enabled device we remove the extra + // empty mouseover listeners we added for iOS support + + + if ('ontouchstart' in document.documentElement) { + makeArray(document.body.children).forEach(elem => EventHandler.off(elem, 'mouseover', null, noop())); + } + + toggles[i].setAttribute('aria-expanded', 'false'); + dropdownMenu.classList.remove(ClassName$4.SHOW); + parent.classList.remove(ClassName$4.SHOW); + EventHandler.trigger(parent, Event$5.HIDDEN, relatedTarget); + } + } + + static _getParentFromElement(element) { + let parent; + const selector = getSelectorFromElement(element); + + if (selector) { + parent = SelectorEngine.findOne(selector); + } + + return parent || element.parentNode; + } + + static _dataApiKeydownHandler(event) { + // If not input/textarea: + // - And not a key in REGEXP_KEYDOWN => not a dropdown command + // If input/textarea: + // - If space key => not a dropdown command + // - If key is other than escape + // - If key is not up or down => not a dropdown command + // - If trigger inside the menu => not a dropdown command + if (/input|textarea/i.test(event.target.tagName) ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE && (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE || SelectorEngine.closest(event.target, Selector$4.MENU)) : !REGEXP_KEYDOWN.test(event.which)) { + return; + } + + event.preventDefault(); + event.stopPropagation(); + + if (this.disabled || this.classList.contains(ClassName$4.DISABLED)) { + return; + } + + const parent = Dropdown._getParentFromElement(this); + + const isActive = parent.classList.contains(ClassName$4.SHOW); + + if (!isActive || isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) { + if (event.which === ESCAPE_KEYCODE) { + EventHandler.trigger(SelectorEngine.findOne(Selector$4.DATA_TOGGLE, parent), 'focus'); + } + + Dropdown._clearMenus(); + + return; + } + + const items = makeArray(SelectorEngine.find(Selector$4.VISIBLE_ITEMS, parent)); + + if (!items.length) { + return; + } + + let index = items.indexOf(event.target); + + if (event.which === ARROW_UP_KEYCODE && index > 0) { + // Up + index--; + } + + if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) { + // Down + index++; + } + + if (index < 0) { + index = 0; + } + + items[index].focus(); + } + + static _getInstance(element) { + return Data.getData(element, DATA_KEY$4); + } + +} +/** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + +EventHandler.on(document, Event$5.KEYDOWN_DATA_API, Selector$4.DATA_TOGGLE, Dropdown._dataApiKeydownHandler); +EventHandler.on(document, Event$5.KEYDOWN_DATA_API, Selector$4.MENU, Dropdown._dataApiKeydownHandler); +EventHandler.on(document, Event$5.CLICK_DATA_API, Dropdown._clearMenus); +EventHandler.on(document, Event$5.KEYUP_DATA_API, Dropdown._clearMenus); +EventHandler.on(document, Event$5.CLICK_DATA_API, Selector$4.DATA_TOGGLE, function (event) { + event.preventDefault(); + event.stopPropagation(); + + Dropdown._dropdownInterface(this, 'toggle'); +}); +EventHandler.on(document, Event$5.CLICK_DATA_API, Selector$4.FORM_CHILD, e => e.stopPropagation()); +/** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + * add .dropdown to jQuery only if jQuery is present + */ + +if (typeof jQuery !== 'undefined') { + const JQUERY_NO_CONFLICT = jQuery.fn[NAME$4]; + jQuery.fn[NAME$4] = Dropdown._jQueryInterface; + jQuery.fn[NAME$4].Constructor = Dropdown; + + jQuery.fn[NAME$4].noConflict = () => { + jQuery.fn[NAME$4] = JQUERY_NO_CONFLICT; + return Dropdown._jQueryInterface; + }; +} + +/** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + +const NAME$5 = 'modal'; +const VERSION$5 = '4.3.1'; +const DATA_KEY$5 = 'bs.modal'; +const EVENT_KEY$5 = `.${DATA_KEY$5}`; +const DATA_API_KEY$5 = '.data-api'; +const ESCAPE_KEYCODE$1 = 27; // KeyboardEvent.which value for Escape (Esc) key + +const Default$3 = { + backdrop: true, + keyboard: true, + focus: true, + show: true +}; +const DefaultType$3 = { + backdrop: '(boolean|string)', + keyboard: 'boolean', + focus: 'boolean', + show: 'boolean' +}; +const Event$6 = { + HIDE: `hide${EVENT_KEY$5}`, + HIDDEN: `hidden${EVENT_KEY$5}`, + SHOW: `show${EVENT_KEY$5}`, + SHOWN: `shown${EVENT_KEY$5}`, + FOCUSIN: `focusin${EVENT_KEY$5}`, + RESIZE: `resize${EVENT_KEY$5}`, + CLICK_DISMISS: `click.dismiss${EVENT_KEY$5}`, + KEYDOWN_DISMISS: `keydown.dismiss${EVENT_KEY$5}`, + MOUSEUP_DISMISS: `mouseup.dismiss${EVENT_KEY$5}`, + MOUSEDOWN_DISMISS: `mousedown.dismiss${EVENT_KEY$5}`, + CLICK_DATA_API: `click${EVENT_KEY$5}${DATA_API_KEY$5}` +}; +const ClassName$5 = { + SCROLLABLE: 'modal-dialog-scrollable', + SCROLLBAR_MEASURER: 'modal-scrollbar-measure', + BACKDROP: 'modal-backdrop', + OPEN: 'modal-open', + FADE: 'fade', + SHOW: 'show' +}; +const Selector$5 = { + DIALOG: '.modal-dialog', + MODAL_BODY: '.modal-body', + DATA_TOGGLE: '[data-toggle="modal"]', + DATA_DISMISS: '[data-dismiss="modal"]', + FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top', + STICKY_CONTENT: '.sticky-top' + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + +}; + +class Modal { + constructor(element, config) { + this._config = this._getConfig(config); + this._element = element; + this._dialog = SelectorEngine.findOne(Selector$5.DIALOG, element); + this._backdrop = null; + this._isShown = false; + this._isBodyOverflowing = false; + this._ignoreBackdropClick = false; + this._isTransitioning = false; + this._scrollbarWidth = 0; + Data.setData(element, DATA_KEY$5, this); + } // Getters + + + static get VERSION() { + return VERSION$5; + } + + static get Default() { + return Default$3; + } // Public + + + toggle(relatedTarget) { + return this._isShown ? this.hide() : this.show(relatedTarget); + } + + show(relatedTarget) { + if (this._isShown || this._isTransitioning) { + return; + } + + if (this._element.classList.contains(ClassName$5.FADE)) { + this._isTransitioning = true; + } + + const showEvent = EventHandler.trigger(this._element, Event$6.SHOW, { + relatedTarget + }); + + if (this._isShown || showEvent.defaultPrevented) { + return; + } + + this._isShown = true; + + this._checkScrollbar(); + + this._setScrollbar(); + + this._adjustDialog(); + + this._setEscapeEvent(); + + this._setResizeEvent(); + + EventHandler.on(this._element, Event$6.CLICK_DISMISS, Selector$5.DATA_DISMISS, event => this.hide(event)); + EventHandler.on(this._dialog, Event$6.MOUSEDOWN_DISMISS, () => { + EventHandler.one(this._element, Event$6.MOUSEUP_DISMISS, event => { + if (event.target === this._element) { + this._ignoreBackdropClick = true; + } + }); + }); + + this._showBackdrop(() => this._showElement(relatedTarget)); + } + + hide(event) { + if (event) { + event.preventDefault(); + } + + if (!this._isShown || this._isTransitioning) { + return; + } + + const hideEvent = EventHandler.trigger(this._element, Event$6.HIDE); + + if (!this._isShown || hideEvent.defaultPrevented) { + return; + } + + this._isShown = false; + + const transition = this._element.classList.contains(ClassName$5.FADE); + + if (transition) { + this._isTransitioning = true; + } + + this._setEscapeEvent(); + + this._setResizeEvent(); + + EventHandler.off(document, Event$6.FOCUSIN); + + this._element.classList.remove(ClassName$5.SHOW); + + EventHandler.off(this._element, Event$6.CLICK_DISMISS); + EventHandler.off(this._dialog, Event$6.MOUSEDOWN_DISMISS); + + if (transition) { + const transitionDuration = getTransitionDurationFromElement(this._element); + EventHandler.one(this._element, TRANSITION_END, event => this._hideModal(event)); + emulateTransitionEnd(this._element, transitionDuration); + } else { + this._hideModal(); + } + } + + dispose() { + [window, this._element, this._dialog].forEach(htmlElement => EventHandler.off(htmlElement, EVENT_KEY$5)); + /** + * `document` has 2 events `Event.FOCUSIN` and `Event.CLICK_DATA_API` + * Do not move `document` in `htmlElements` array + * It will remove `Event.CLICK_DATA_API` event that should remain + */ + + EventHandler.off(document, Event$6.FOCUSIN); + Data.removeData(this._element, DATA_KEY$5); + 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; + } + + handleUpdate() { + this._adjustDialog(); + } // Private + + + _getConfig(config) { + config = _extends({}, Default$3, config); + typeCheckConfig(NAME$5, config, DefaultType$3); + return config; + } + + _showElement(relatedTarget) { + const transition = this._element.classList.contains(ClassName$5.FADE); + + if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) { + // Don't move modal's DOM position + document.body.appendChild(this._element); + } + + this._element.style.display = 'block'; + + this._element.removeAttribute('aria-hidden'); + + this._element.setAttribute('aria-modal', true); + + if (this._dialog.classList.contains(ClassName$5.SCROLLABLE)) { + SelectorEngine.findOne(Selector$5.MODAL_BODY, this._dialog).scrollTop = 0; + } else { + this._element.scrollTop = 0; + } + + if (transition) { + reflow(this._element); + } + + this._element.classList.add(ClassName$5.SHOW); + + if (this._config.focus) { + this._enforceFocus(); + } + + const transitionComplete = () => { + if (this._config.focus) { + this._element.focus(); + } + + this._isTransitioning = false; + EventHandler.trigger(this._element, Event$6.SHOWN, { + relatedTarget + }); + }; + + if (transition) { + const transitionDuration = getTransitionDurationFromElement(this._dialog); + EventHandler.one(this._dialog, TRANSITION_END, transitionComplete); + emulateTransitionEnd(this._dialog, transitionDuration); + } else { + transitionComplete(); + } + } + + _enforceFocus() { + EventHandler.off(document, Event$6.FOCUSIN); // guard against infinite focus loop + + EventHandler.on(document, Event$6.FOCUSIN, event => { + if (document !== event.target && this._element !== event.target && !this._element.contains(event.target)) { + this._element.focus(); + } + }); + } + + _setEscapeEvent() { + if (this._isShown && this._config.keyboard) { + EventHandler.on(this._element, Event$6.KEYDOWN_DISMISS, event => { + if (event.which === ESCAPE_KEYCODE$1) { + event.preventDefault(); + this.hide(); + } + }); + } else if (!this._isShown) { + EventHandler.off(this._element, Event$6.KEYDOWN_DISMISS); + } + } + + _setResizeEvent() { + if (this._isShown) { + EventHandler.on(window, Event$6.RESIZE, event => this.handleUpdate(event)); + } else { + EventHandler.off(window, Event$6.RESIZE); + } + } + + _hideModal() { + this._element.style.display = 'none'; + + this._element.setAttribute('aria-hidden', true); + + this._element.removeAttribute('aria-modal'); + + this._isTransitioning = false; + + this._showBackdrop(() => { + document.body.classList.remove(ClassName$5.OPEN); + + this._resetAdjustments(); + + this._resetScrollbar(); + + EventHandler.trigger(this._element, Event$6.HIDDEN); + }); + } + + _removeBackdrop() { + if (this._backdrop) { + this._backdrop.parentNode.removeChild(this._backdrop); + + this._backdrop = null; + } + } + + _showBackdrop(callback) { + const animate = this._element.classList.contains(ClassName$5.FADE) ? ClassName$5.FADE : ''; + + if (this._isShown && this._config.backdrop) { + this._backdrop = document.createElement('div'); + this._backdrop.className = ClassName$5.BACKDROP; + + if (animate) { + this._backdrop.classList.add(animate); + } + + document.body.appendChild(this._backdrop); + EventHandler.on(this._element, Event$6.CLICK_DISMISS, event => { + if (this._ignoreBackdropClick) { + this._ignoreBackdropClick = false; + return; + } + + if (event.target !== event.currentTarget) { + return; + } + + if (this._config.backdrop === 'static') { + this._element.focus(); + } else { + this.hide(); + } + }); + + if (animate) { + reflow(this._backdrop); + } + + this._backdrop.classList.add(ClassName$5.SHOW); + + if (!callback) { + return; + } + + if (!animate) { + callback(); + return; + } + + const backdropTransitionDuration = getTransitionDurationFromElement(this._backdrop); + EventHandler.one(this._backdrop, TRANSITION_END, callback); + emulateTransitionEnd(this._backdrop, backdropTransitionDuration); + } else if (!this._isShown && this._backdrop) { + this._backdrop.classList.remove(ClassName$5.SHOW); + + const callbackRemove = () => { + this._removeBackdrop(); + + if (callback) { + callback(); + } + }; + + if (this._element.classList.contains(ClassName$5.FADE)) { + const backdropTransitionDuration = getTransitionDurationFromElement(this._backdrop); + EventHandler.one(this._backdrop, TRANSITION_END, callbackRemove); + emulateTransitionEnd(this._backdrop, backdropTransitionDuration); + } else { + callbackRemove(); + } + } else if (callback) { + callback(); + } + } // ---------------------------------------------------------------------- + // the following methods are used to handle overflowing modals + // ---------------------------------------------------------------------- + + + _adjustDialog() { + const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight; + + if (!this._isBodyOverflowing && isModalOverflowing) { + this._element.style.paddingLeft = `${this._scrollbarWidth}px`; + } + + if (this._isBodyOverflowing && !isModalOverflowing) { + this._element.style.paddingRight = `${this._scrollbarWidth}px`; + } + } + + _resetAdjustments() { + this._element.style.paddingLeft = ''; + this._element.style.paddingRight = ''; + } + + _checkScrollbar() { + const rect = document.body.getBoundingClientRect(); + this._isBodyOverflowing = rect.left + rect.right < window.innerWidth; + this._scrollbarWidth = this._getScrollbarWidth(); + } + + _setScrollbar() { + if (this._isBodyOverflowing) { + // Note: DOMNode.style.paddingRight returns the actual value or '' if not set + // while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set + // Adjust fixed content padding + makeArray(SelectorEngine.find(Selector$5.FIXED_CONTENT)).forEach(element => { + const actualPadding = element.style.paddingRight; + const calculatedPadding = window.getComputedStyle(element)['padding-right']; + Manipulator.setDataAttribute(element, 'padding-right', actualPadding); + element.style.paddingRight = `${parseFloat(calculatedPadding) + this._scrollbarWidth}px`; + }); // Adjust sticky content margin + + makeArray(SelectorEngine.find(Selector$5.STICKY_CONTENT)).forEach(element => { + const actualMargin = element.style.marginRight; + const calculatedMargin = window.getComputedStyle(element)['margin-right']; + Manipulator.setDataAttribute(element, 'margin-right', actualMargin); + element.style.marginRight = `${parseFloat(calculatedMargin) - this._scrollbarWidth}px`; + }); // Adjust body padding + + const actualPadding = document.body.style.paddingRight; + const calculatedPadding = window.getComputedStyle(document.body)['padding-right']; + Manipulator.setDataAttribute(document.body, 'padding-right', actualPadding); + document.body.style.paddingRight = `${parseFloat(calculatedPadding) + this._scrollbarWidth}px`; + } + + document.body.classList.add(ClassName$5.OPEN); + } + + _resetScrollbar() { + // Restore fixed content padding + makeArray(SelectorEngine.find(Selector$5.FIXED_CONTENT)).forEach(element => { + const padding = Manipulator.getDataAttribute(element, 'padding-right'); + + if (typeof padding !== 'undefined') { + Manipulator.removeDataAttribute(element, 'padding-right'); + element.style.paddingRight = padding; + } + }); // Restore sticky content and navbar-toggler margin + + makeArray(SelectorEngine.find(`${Selector$5.STICKY_CONTENT}`)).forEach(element => { + const margin = Manipulator.getDataAttribute(element, 'margin-right'); + + if (typeof margin !== 'undefined') { + Manipulator.removeDataAttribute(element, 'margin-right'); + element.style.marginRight = margin; + } + }); // Restore body padding + + const padding = Manipulator.getDataAttribute(document.body, 'padding-right'); + + if (typeof padding === 'undefined') { + document.body.style.paddingRight = ''; + } else { + Manipulator.removeDataAttribute(document.body, 'padding-right'); + document.body.style.paddingRight = padding; + } + } + + _getScrollbarWidth() { + // thx d.walsh + const scrollDiv = document.createElement('div'); + scrollDiv.className = ClassName$5.SCROLLBAR_MEASURER; + document.body.appendChild(scrollDiv); + const scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth; + document.body.removeChild(scrollDiv); + return scrollbarWidth; + } // Static + + + static _jQueryInterface(config, relatedTarget) { + return this.each(function () { + let data = Data.getData(this, DATA_KEY$5); + + const _config = _extends({}, Default$3, Manipulator.getDataAttributes(this), typeof config === 'object' && config ? config : {}); + + if (!data) { + data = new Modal(this, _config); + } + + if (typeof config === 'string') { + if (typeof data[config] === 'undefined') { + throw new TypeError(`No method named "${config}"`); + } + + data[config](relatedTarget); + } else if (_config.show) { + data.show(relatedTarget); + } + }); + } + + static _getInstance(element) { + return Data.getData(element, DATA_KEY$5); + } + +} +/** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + +EventHandler.on(document, Event$6.CLICK_DATA_API, Selector$5.DATA_TOGGLE, function (event) { + let target; + const selector = getSelectorFromElement(this); + + if (selector) { + target = SelectorEngine.findOne(selector); + } + + const config = Data.getData(target, DATA_KEY$5) ? 'toggle' : _extends({}, Manipulator.getDataAttributes(target), Manipulator.getDataAttributes(this)); + + if (this.tagName === 'A' || this.tagName === 'AREA') { + event.preventDefault(); + } + + EventHandler.one(target, Event$6.SHOW, showEvent => { + if (showEvent.defaultPrevented) { + // only register focus restorer if modal will actually get shown + return; + } + + EventHandler.one(target, Event$6.HIDDEN, () => { + if (isVisible(this)) { + this.focus(); + } + }); + }); + let data = Data.getData(target, DATA_KEY$5); + + if (!data) { + data = new Modal(target, config); + } + + data.show(this); +}); +/** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + +if (typeof jQuery !== 'undefined') { + const JQUERY_NO_CONFLICT = jQuery.fn[NAME$5]; + jQuery.fn[NAME$5] = Modal._jQueryInterface; + jQuery.fn[NAME$5].Constructor = Modal; + + jQuery.fn[NAME$5].noConflict = () => { + jQuery.fn[NAME$5] = JQUERY_NO_CONFLICT; + return Modal._jQueryInterface; + }; +} + +/** + * -------------------------------------------------------------------------- + * Bootstrap (v4.3.1): util/sanitizer.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ +const uriAttrs = ['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href']; +const ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i; +/** + * A pattern that recognizes a commonly useful subset of URLs that are safe. + * + * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts + */ + +const SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi; +/** + * A pattern that matches safe data URLs. Only matches image, video and audio types. + * + * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts + */ + +const DATA_URL_PATTERN = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i; + +const allowedAttribute = (attr, allowedAttributeList) => { + const attrName = attr.nodeName.toLowerCase(); + + if (allowedAttributeList.indexOf(attrName) !== -1) { + if (uriAttrs.indexOf(attrName) !== -1) { + return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN)); + } + + return true; + } + + const regExp = allowedAttributeList.filter(attrRegex => attrRegex instanceof RegExp); // Check if a regular expression validates the attribute. + + for (let i = 0, l = regExp.length; i < l; i++) { + if (attrName.match(regExp[i])) { + return true; + } + } + + return false; +}; + +const DefaultWhitelist = { + // Global attributes allowed on any supplied element below. + '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN], + 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: [] +}; +function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) { + if (!unsafeHtml.length) { + return unsafeHtml; + } + + if (sanitizeFn && typeof sanitizeFn === 'function') { + return sanitizeFn(unsafeHtml); + } + + const domParser = new window.DOMParser(); + const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html'); + const whitelistKeys = Object.keys(whiteList); + const elements = makeArray(createdDocument.body.querySelectorAll('*')); + + for (let i = 0, len = elements.length; i < len; i++) { + const el = elements[i]; + const elName = el.nodeName.toLowerCase(); + + if (whitelistKeys.indexOf(elName) === -1) { + el.parentNode.removeChild(el); + continue; + } + + const attributeList = makeArray(el.attributes); + const whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || []); + attributeList.forEach(attr => { + if (!allowedAttribute(attr, whitelistedAttributes)) { + el.removeAttribute(attr.nodeName); + } + }); + } + + return createdDocument.body.innerHTML; +} + +/** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + +const NAME$6 = 'tooltip'; +const VERSION$6 = '4.3.1'; +const DATA_KEY$6 = 'bs.tooltip'; +const EVENT_KEY$6 = `.${DATA_KEY$6}`; +const CLASS_PREFIX = 'bs-tooltip'; +const BSCLS_PREFIX_REGEX = new RegExp(`(^|\\s)${CLASS_PREFIX}\\S+`, 'g'); +const DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn']; +const DefaultType$4 = { + 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' +}; +const AttachmentMap$1 = { + AUTO: 'auto', + TOP: 'top', + RIGHT: 'right', + BOTTOM: 'bottom', + LEFT: 'left' +}; +const Default$4 = { + animation: true, + template: '', + trigger: 'hover focus', + title: '', + delay: 0, + html: false, + selector: false, + placement: 'top', + offset: 0, + container: false, + fallbackPlacement: 'flip', + boundary: 'scrollParent', + sanitize: true, + sanitizeFn: null, + whiteList: DefaultWhitelist +}; +const HoverState = { + SHOW: 'show', + OUT: 'out' +}; +const Event$7 = { + HIDE: `hide${EVENT_KEY$6}`, + HIDDEN: `hidden${EVENT_KEY$6}`, + SHOW: `show${EVENT_KEY$6}`, + SHOWN: `shown${EVENT_KEY$6}`, + INSERTED: `inserted${EVENT_KEY$6}`, + CLICK: `click${EVENT_KEY$6}`, + FOCUSIN: `focusin${EVENT_KEY$6}`, + FOCUSOUT: `focusout${EVENT_KEY$6}`, + MOUSEENTER: `mouseenter${EVENT_KEY$6}`, + MOUSELEAVE: `mouseleave${EVENT_KEY$6}` +}; +const ClassName$6 = { + FADE: 'fade', + SHOW: 'show' +}; +const Selector$6 = { + TOOLTIP_INNER: '.tooltip-inner', + TOOLTIP_ARROW: '.tooltip-arrow' +}; +const Trigger = { + HOVER: 'hover', + FOCUS: 'focus', + CLICK: 'click', + MANUAL: 'manual' + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + +}; + +class Tooltip { + constructor(element, config) { + /** + * Check for Popper dependency + * Popper - https://popper.js.org + */ + if (typeof Popper === 'undefined') { + throw new TypeError('Bootstrap\'s tooltips require Popper.js (https://popper.js.org)'); + } // private + + + this._isEnabled = true; + this._timeout = 0; + this._hoverState = ''; + this._activeTrigger = {}; + this._popper = null; // Protected + + this.element = element; + this.config = this._getConfig(config); + this.tip = null; + + this._setListeners(); + + Data.setData(element, this.constructor.DATA_KEY, this); + } // Getters + + + static get VERSION() { + return VERSION$6; + } + + static get Default() { + return Default$4; + } + + static get NAME() { + return NAME$6; + } + + static get DATA_KEY() { + return DATA_KEY$6; + } + + static get Event() { + return Event$7; + } + + static get EVENT_KEY() { + return EVENT_KEY$6; + } + + static get DefaultType() { + return DefaultType$4; + } // Public + + + enable() { + this._isEnabled = true; + } + + disable() { + this._isEnabled = false; + } + + toggleEnabled() { + this._isEnabled = !this._isEnabled; + } + + toggle(event) { + if (!this._isEnabled) { + return; + } + + if (event) { + const dataKey = this.constructor.DATA_KEY; + let context = Data.getData(event.delegateTarget, dataKey); + + if (!context) { + context = new this.constructor(event.delegateTarget, this._getDelegateConfig()); + Data.setData(event.delegateTarget, dataKey, context); + } + + context._activeTrigger.click = !context._activeTrigger.click; + + if (context._isWithActiveTrigger()) { + context._enter(null, context); + } else { + context._leave(null, context); + } + } else { + if (this.getTipElement().classList.contains(ClassName$6.SHOW)) { + this._leave(null, this); + + return; + } + + this._enter(null, this); + } + } + + dispose() { + clearTimeout(this._timeout); + Data.removeData(this.element, this.constructor.DATA_KEY); + EventHandler.off(this.element, this.constructor.EVENT_KEY); + EventHandler.off(SelectorEngine.closest(this.element, '.modal'), 'hide.bs.modal'); + + if (this.tip) { + this.tip.parentNode.removeChild(this.tip); + } + + this._isEnabled = null; + this._timeout = null; + this._hoverState = null; + this._activeTrigger = null; + + if (this._popper !== null) { + this._popper.destroy(); + } + + this._popper = null; + this.element = null; + this.config = null; + this.tip = null; + } + + show() { + if (this.element.style.display === 'none') { + throw new Error('Please use show on visible elements'); + } + + if (this.isWithContent() && this._isEnabled) { + const showEvent = EventHandler.trigger(this.element, this.constructor.Event.SHOW); + const shadowRoot = findShadowRoot(this.element); + const isInTheDom = shadowRoot === null ? this.element.ownerDocument.documentElement.contains(this.element) : shadowRoot.contains(this.element); + + if (showEvent.defaultPrevented || !isInTheDom) { + return; + } + + const tip = this.getTipElement(); + const tipId = getUID(this.constructor.NAME); + tip.setAttribute('id', tipId); + this.element.setAttribute('aria-describedby', tipId); + this.setContent(); + + if (this.config.animation) { + tip.classList.add(ClassName$6.FADE); + } + + const placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this.element) : this.config.placement; + + const attachment = this._getAttachment(placement); + + this.addAttachmentClass(attachment); + + const container = this._getContainer(); + + Data.setData(tip, this.constructor.DATA_KEY, this); + + if (!this.element.ownerDocument.documentElement.contains(this.tip)) { + container.appendChild(tip); + } + + EventHandler.trigger(this.element, this.constructor.Event.INSERTED); + this._popper = new Popper(this.element, tip, { + placement: attachment, + modifiers: { + offset: this._getOffset(), + flip: { + behavior: this.config.fallbackPlacement + }, + arrow: { + element: Selector$6.TOOLTIP_ARROW + }, + preventOverflow: { + boundariesElement: this.config.boundary + } + }, + onCreate: data => { + if (data.originalPlacement !== data.placement) { + this._handlePopperPlacementChange(data); + } + }, + onUpdate: data => this._handlePopperPlacementChange(data) + }); + tip.classList.add(ClassName$6.SHOW); // If this is a touch-enabled device we add extra + // empty mouseover listeners to the body's immediate children; + // only needed because of broken event delegation on iOS + // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html + + if ('ontouchstart' in document.documentElement) { + makeArray(document.body.children).forEach(element => { + EventHandler.on(element, 'mouseover', noop()); + }); + } + + const complete = () => { + if (this.config.animation) { + this._fixTransition(); + } + + const prevHoverState = this._hoverState; + this._hoverState = null; + EventHandler.trigger(this.element, this.constructor.Event.SHOWN); + + if (prevHoverState === HoverState.OUT) { + this._leave(null, this); + } + }; + + if (this.tip.classList.contains(ClassName$6.FADE)) { + const transitionDuration = getTransitionDurationFromElement(this.tip); + EventHandler.one(this.tip, TRANSITION_END, complete); + emulateTransitionEnd(this.tip, transitionDuration); + } else { + complete(); + } + } + } + + hide(callback) { + const tip = this.getTipElement(); + + const complete = () => { + if (this._hoverState !== HoverState.SHOW && tip.parentNode) { + tip.parentNode.removeChild(tip); + } + + this._cleanTipClass(); + + this.element.removeAttribute('aria-describedby'); + EventHandler.trigger(this.element, this.constructor.Event.HIDDEN); + + if (this._popper !== null) { + this._popper.destroy(); + } + + if (callback) { + callback(); + } + }; + + const hideEvent = EventHandler.trigger(this.element, this.constructor.Event.HIDE); + + if (hideEvent.defaultPrevented) { + return; + } + + tip.classList.remove(ClassName$6.SHOW); // If this is a touch-enabled device we remove the extra + // empty mouseover listeners we added for iOS support + + if ('ontouchstart' in document.documentElement) { + makeArray(document.body.children).forEach(element => EventHandler.off(element, 'mouseover', noop)); + } + + this._activeTrigger[Trigger.CLICK] = false; + this._activeTrigger[Trigger.FOCUS] = false; + this._activeTrigger[Trigger.HOVER] = false; + + if (this.tip.classList.contains(ClassName$6.FADE)) { + const transitionDuration = getTransitionDurationFromElement(tip); + EventHandler.one(tip, TRANSITION_END, complete); + emulateTransitionEnd(tip, transitionDuration); + } else { + complete(); + } + + this._hoverState = ''; + } + + update() { + if (this._popper !== null) { + this._popper.scheduleUpdate(); + } + } // Protected + + + isWithContent() { + return Boolean(this.getTitle()); + } + + addAttachmentClass(attachment) { + this.getTipElement().classList.add(`${CLASS_PREFIX}-${attachment}`); + } + + getTipElement() { + if (this.tip) { + return this.tip; + } + + const element = document.createElement('div'); + element.innerHTML = this.config.template; + this.tip = element.children[0]; + return this.tip; + } + + setContent() { + const tip = this.getTipElement(); + this.setElementContent(SelectorEngine.findOne(Selector$6.TOOLTIP_INNER, tip), this.getTitle()); + tip.classList.remove(ClassName$6.FADE); + tip.classList.remove(ClassName$6.SHOW); + } + + setElementContent(element, content) { + if (element === null) { + return; + } + + if (typeof content === 'object' && (content.nodeType || content.jquery)) { + if (content.jquery) { + content = content[0]; + } // content is a DOM node or a jQuery + + + if (this.config.html) { + if (content.parentNode !== element) { + element.innerHTML = ''; + element.appendChild(content); + } + } else { + element.innerText = content.textContent; + } + + return; + } + + if (this.config.html) { + if (this.config.sanitize) { + content = sanitizeHtml(content, this.config.whiteList, this.config.sanitizeFn); + } + + element.innerHTML = content; + } else { + element.innerText = content; + } + } + + getTitle() { + let title = this.element.getAttribute('data-original-title'); + + if (!title) { + title = typeof this.config.title === 'function' ? this.config.title.call(this.element) : this.config.title; + } + + return title; + } // Private + + + _getOffset() { + const offset = {}; + + if (typeof this.config.offset === 'function') { + offset.fn = data => { + data.offsets = _extends({}, data.offsets, this.config.offset(data.offsets, this.element) || {}); + return data; + }; + } else { + offset.offset = this.config.offset; + } + + return offset; + } + + _getContainer() { + if (this.config.container === false) { + return document.body; + } + + if (isElement(this.config.container)) { + return this.config.container; + } + + return SelectorEngine.findOne(this.config.container); + } + + _getAttachment(placement) { + return AttachmentMap$1[placement.toUpperCase()]; + } + + _setListeners() { + const triggers = this.config.trigger.split(' '); + triggers.forEach(trigger => { + if (trigger === 'click') { + EventHandler.on(this.element, this.constructor.Event.CLICK, this.config.selector, event => this.toggle(event)); + } else if (trigger !== Trigger.MANUAL) { + const eventIn = trigger === Trigger.HOVER ? this.constructor.Event.MOUSEENTER : this.constructor.Event.FOCUSIN; + const eventOut = trigger === Trigger.HOVER ? this.constructor.Event.MOUSELEAVE : this.constructor.Event.FOCUSOUT; + EventHandler.on(this.element, eventIn, this.config.selector, event => this._enter(event)); + EventHandler.on(this.element, eventOut, this.config.selector, event => this._leave(event)); + } + }); + EventHandler.on(SelectorEngine.closest(this.element, '.modal'), 'hide.bs.modal', () => { + if (this.element) { + this.hide(); + } + }); + + if (this.config.selector) { + this.config = _extends({}, this.config, { + trigger: 'manual', + selector: '' + }); + } else { + this._fixTitle(); + } + } + + _fixTitle() { + const titleType = typeof this.element.getAttribute('data-original-title'); + + if (this.element.getAttribute('title') || titleType !== 'string') { + this.element.setAttribute('data-original-title', this.element.getAttribute('title') || ''); + this.element.setAttribute('title', ''); + } + } + + _enter(event, context) { + const dataKey = this.constructor.DATA_KEY; + context = context || Data.getData(event.delegateTarget, dataKey); + + if (!context) { + context = new this.constructor(event.delegateTarget, this._getDelegateConfig()); + Data.setData(event.delegateTarget, dataKey, context); + } + + if (event) { + context._activeTrigger[event.type === 'focusin' ? Trigger.FOCUS : Trigger.HOVER] = true; + } + + if (context.getTipElement().classList.contains(ClassName$6.SHOW) || context._hoverState === HoverState.SHOW) { + context._hoverState = HoverState.SHOW; + return; + } + + clearTimeout(context._timeout); + context._hoverState = HoverState.SHOW; + + if (!context.config.delay || !context.config.delay.show) { + context.show(); + return; + } + + context._timeout = setTimeout(() => { + if (context._hoverState === HoverState.SHOW) { + context.show(); + } + }, context.config.delay.show); + } + + _leave(event, context) { + const dataKey = this.constructor.DATA_KEY; + context = context || Data.getData(event.delegateTarget, dataKey); + + if (!context) { + context = new this.constructor(event.delegateTarget, this._getDelegateConfig()); + Data.setData(event.delegateTarget, dataKey, context); + } + + if (event) { + context._activeTrigger[event.type === 'focusout' ? Trigger.FOCUS : Trigger.HOVER] = false; + } + + if (context._isWithActiveTrigger()) { + return; + } + + clearTimeout(context._timeout); + context._hoverState = HoverState.OUT; + + if (!context.config.delay || !context.config.delay.hide) { + context.hide(); + return; + } + + context._timeout = setTimeout(() => { + if (context._hoverState === HoverState.OUT) { + context.hide(); + } + }, context.config.delay.hide); + } + + _isWithActiveTrigger() { + for (const trigger in this._activeTrigger) { + if (this._activeTrigger[trigger]) { + return true; + } + } + + return false; + } + + _getConfig(config) { + const dataAttributes = Manipulator.getDataAttributes(this.element); + Object.keys(dataAttributes).forEach(dataAttr => { + if (DISALLOWED_ATTRIBUTES.indexOf(dataAttr) !== -1) { + delete dataAttributes[dataAttr]; + } + }); + + if (config && typeof config.container === 'object' && config.container.jquery) { + config.container = config.container[0]; + } + + config = _extends({}, this.constructor.Default, dataAttributes, typeof config === 'object' && config ? config : {}); + + if (typeof config.delay === 'number') { + config.delay = { + show: config.delay, + hide: config.delay + }; + } + + if (typeof config.title === 'number') { + config.title = config.title.toString(); + } + + if (typeof config.content === 'number') { + config.content = config.content.toString(); + } + + typeCheckConfig(NAME$6, config, this.constructor.DefaultType); + + if (config.sanitize) { + config.template = sanitizeHtml(config.template, config.whiteList, config.sanitizeFn); + } + + return config; + } + + _getDelegateConfig() { + const config = {}; + + if (this.config) { + for (const key in this.config) { + if (this.constructor.Default[key] !== this.config[key]) { + config[key] = this.config[key]; + } + } + } + + return config; + } + + _cleanTipClass() { + const tip = this.getTipElement(); + const tabClass = tip.getAttribute('class').match(BSCLS_PREFIX_REGEX); + + if (tabClass !== null && tabClass.length) { + tabClass.map(token => token.trim()).forEach(tClass => tip.classList.remove(tClass)); + } + } + + _handlePopperPlacementChange(popperData) { + const popperInstance = popperData.instance; + this.tip = popperInstance.popper; + + this._cleanTipClass(); + + this.addAttachmentClass(this._getAttachment(popperData.placement)); + } + + _fixTransition() { + const tip = this.getTipElement(); + const initConfigAnimation = this.config.animation; + + if (tip.getAttribute('x-placement') !== null) { + return; + } + + tip.classList.remove(ClassName$6.FADE); + this.config.animation = false; + this.hide(); + this.show(); + this.config.animation = initConfigAnimation; + } // Static + + + static _jQueryInterface(config) { + return this.each(function () { + let data = Data.getData(this, DATA_KEY$6); + + const _config = typeof config === 'object' && config; + + if (!data && /dispose|hide/.test(config)) { + return; + } + + if (!data) { + data = new Tooltip(this, _config); + } + + if (typeof config === 'string') { + if (typeof data[config] === 'undefined') { + throw new TypeError(`No method named "${config}"`); + } + + data[config](); + } + }); + } + + static _getInstance(element) { + return Data.getData(element, DATA_KEY$6); + } + +} +/** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + * add .tooltip to jQuery only if jQuery is present + */ + + +if (typeof jQuery !== 'undefined') { + const JQUERY_NO_CONFLICT = jQuery.fn[NAME$6]; + jQuery.fn[NAME$6] = Tooltip._jQueryInterface; + jQuery.fn[NAME$6].Constructor = Tooltip; + + jQuery.fn[NAME$6].noConflict = () => { + jQuery.fn[NAME$6] = JQUERY_NO_CONFLICT; + return Tooltip._jQueryInterface; + }; +} + +/** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + +const NAME$7 = 'popover'; +const VERSION$7 = '4.3.1'; +const DATA_KEY$7 = 'bs.popover'; +const EVENT_KEY$7 = `.${DATA_KEY$7}`; +const CLASS_PREFIX$1 = 'bs-popover'; +const BSCLS_PREFIX_REGEX$1 = new RegExp(`(^|\\s)${CLASS_PREFIX$1}\\S+`, 'g'); + +const Default$5 = _extends({}, Tooltip.Default, { + placement: 'right', + trigger: 'click', + content: '', + template: '' +}); + +const DefaultType$5 = _extends({}, Tooltip.DefaultType, { + content: '(string|element|function)' +}); + +const ClassName$7 = { + FADE: 'fade', + SHOW: 'show' +}; +const Selector$7 = { + TITLE: '.popover-header', + CONTENT: '.popover-body' +}; +const Event$8 = { + HIDE: `hide${EVENT_KEY$7}`, + HIDDEN: `hidden${EVENT_KEY$7}`, + SHOW: `show${EVENT_KEY$7}`, + SHOWN: `shown${EVENT_KEY$7}`, + INSERTED: `inserted${EVENT_KEY$7}`, + CLICK: `click${EVENT_KEY$7}`, + FOCUSIN: `focusin${EVENT_KEY$7}`, + FOCUSOUT: `focusout${EVENT_KEY$7}`, + MOUSEENTER: `mouseenter${EVENT_KEY$7}`, + MOUSELEAVE: `mouseleave${EVENT_KEY$7}` + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + +}; + +class Popover extends Tooltip { + // Getters + static get VERSION() { + return VERSION$7; + } + + static get Default() { + return Default$5; + } + + static get NAME() { + return NAME$7; + } + + static get DATA_KEY() { + return DATA_KEY$7; + } + + static get Event() { + return Event$8; + } + + static get EVENT_KEY() { + return EVENT_KEY$7; + } + + static get DefaultType() { + return DefaultType$5; + } // Overrides + + + isWithContent() { + return this.getTitle() || this._getContent(); + } + + addAttachmentClass(attachment) { + this.getTipElement().classList.add(`${CLASS_PREFIX$1}-${attachment}`); + } + + setContent() { + const tip = this.getTipElement(); // we use append for html objects to maintain js events + + this.setElementContent(SelectorEngine.findOne(Selector$7.TITLE, tip), this.getTitle()); + + let content = this._getContent(); + + if (typeof content === 'function') { + content = content.call(this.element); + } + + this.setElementContent(SelectorEngine.findOne(Selector$7.CONTENT, tip), content); + tip.classList.remove(ClassName$7.FADE); + tip.classList.remove(ClassName$7.SHOW); + } // Private + + + _getContent() { + return this.element.getAttribute('data-content') || this.config.content; + } + + _cleanTipClass() { + const tip = this.getTipElement(); + const tabClass = tip.getAttribute('class').match(BSCLS_PREFIX_REGEX$1); + + if (tabClass !== null && tabClass.length > 0) { + tabClass.map(token => token.trim()).forEach(tClass => tip.classList.remove(tClass)); + } + } // Static + + + static _jQueryInterface(config) { + return this.each(function () { + let data = Data.getData(this, DATA_KEY$7); + + const _config = typeof config === 'object' ? config : null; + + if (!data && /dispose|hide/.test(config)) { + return; + } + + if (!data) { + data = new Popover(this, _config); + Data.setData(this, DATA_KEY$7, data); + } + + if (typeof config === 'string') { + if (typeof data[config] === 'undefined') { + throw new TypeError(`No method named "${config}"`); + } + + data[config](); + } + }); + } + + static _getInstance(element) { + return Data.getData(element, DATA_KEY$7); + } + +} +/** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + +if (typeof jQuery !== 'undefined') { + const JQUERY_NO_CONFLICT = jQuery.fn[NAME$7]; + jQuery.fn[NAME$7] = Popover._jQueryInterface; + jQuery.fn[NAME$7].Constructor = Popover; + + jQuery.fn[NAME$7].noConflict = () => { + jQuery.fn[NAME$7] = JQUERY_NO_CONFLICT; + return Popover._jQueryInterface; + }; +} + +/** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + +const NAME$8 = 'scrollspy'; +const VERSION$8 = '4.3.1'; +const DATA_KEY$8 = 'bs.scrollspy'; +const EVENT_KEY$8 = `.${DATA_KEY$8}`; +const DATA_API_KEY$6 = '.data-api'; +const Default$6 = { + offset: 10, + method: 'auto', + target: '' +}; +const DefaultType$6 = { + offset: 'number', + method: 'string', + target: '(string|element)' +}; +const Event$9 = { + ACTIVATE: `activate${EVENT_KEY$8}`, + SCROLL: `scroll${EVENT_KEY$8}`, + LOAD_DATA_API: `load${EVENT_KEY$8}${DATA_API_KEY$6}` +}; +const ClassName$8 = { + DROPDOWN_ITEM: 'dropdown-item', + ACTIVE: 'active' +}; +const Selector$8 = { + DATA_SPY: '[data-spy="scroll"]', + NAV_LIST_GROUP: '.nav, .list-group', + NAV_LINKS: '.nav-link', + NAV_ITEMS: '.nav-item', + LIST_ITEMS: '.list-group-item', + DROPDOWN: '.dropdown', + DROPDOWN_TOGGLE: '.dropdown-toggle' +}; +const OffsetMethod = { + OFFSET: 'offset', + POSITION: 'position' + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + +}; + +class ScrollSpy { + constructor(element, config) { + this._element = element; + this._scrollElement = element.tagName === 'BODY' ? window : element; + this._config = this._getConfig(config); + this._selector = `${this._config.target} ${Selector$8.NAV_LINKS},` + `${this._config.target} ${Selector$8.LIST_ITEMS},` + `${this._config.target} .${ClassName$8.DROPDOWN_ITEM}`; + this._offsets = []; + this._targets = []; + this._activeTarget = null; + this._scrollHeight = 0; + EventHandler.on(this._scrollElement, Event$9.SCROLL, event => this._process(event)); + this.refresh(); + + this._process(); + + Data.setData(element, DATA_KEY$8, this); + } // Getters + + + static get VERSION() { + return VERSION$8; + } + + static get Default() { + return Default$6; + } // Public + + + refresh() { + const autoMethod = this._scrollElement === this._scrollElement.window ? OffsetMethod.OFFSET : OffsetMethod.POSITION; + const offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method; + const offsetBase = offsetMethod === OffsetMethod.POSITION ? this._getScrollTop() : 0; + this._offsets = []; + this._targets = []; + this._scrollHeight = this._getScrollHeight(); + const targets = makeArray(SelectorEngine.find(this._selector)); + targets.map(element => { + let target; + const targetSelector = getSelectorFromElement(element); + + if (targetSelector) { + target = SelectorEngine.findOne(targetSelector); + } + + if (target) { + const targetBCR = target.getBoundingClientRect(); + + if (targetBCR.width || targetBCR.height) { + return [Manipulator[offsetMethod](target).top + offsetBase, targetSelector]; + } + } + + return null; + }).filter(item => item).sort((a, b) => a[0] - b[0]).forEach(item => { + this._offsets.push(item[0]); + + this._targets.push(item[1]); + }); + } + + dispose() { + Data.removeData(this._element, DATA_KEY$8); + EventHandler.off(this._scrollElement, EVENT_KEY$8); + this._element = null; + this._scrollElement = null; + this._config = null; + this._selector = null; + this._offsets = null; + this._targets = null; + this._activeTarget = null; + this._scrollHeight = null; + } // Private + + + _getConfig(config) { + config = _extends({}, Default$6, typeof config === 'object' && config ? config : {}); + + if (typeof config.target !== 'string') { + let id = config.target.id; + + if (!id) { + id = getUID(NAME$8); + config.target.id = id; + } + + config.target = `#${id}`; + } + + typeCheckConfig(NAME$8, config, DefaultType$6); + return config; + } + + _getScrollTop() { + return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop; + } + + _getScrollHeight() { + return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight); + } + + _getOffsetHeight() { + return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height; + } + + _process() { + const scrollTop = this._getScrollTop() + this._config.offset; + + const scrollHeight = this._getScrollHeight(); + + const maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight(); + + if (this._scrollHeight !== scrollHeight) { + this.refresh(); + } + + if (scrollTop >= maxScroll) { + const target = this._targets[this._targets.length - 1]; + + if (this._activeTarget !== target) { + this._activate(target); + } + + return; + } + + if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) { + this._activeTarget = null; + + this._clear(); + + return; + } + + const offsetLength = this._offsets.length; + + for (let i = offsetLength; i--;) { + const isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]); + + if (isActiveTarget) { + this._activate(this._targets[i]); + } + } + } + + _activate(target) { + this._activeTarget = target; + + this._clear(); + + const queries = this._selector.split(',').map(selector => `${selector}[data-target="${target}"],${selector}[href="${target}"]`); + + const link = SelectorEngine.findOne(queries.join(',')); + + if (link.classList.contains(ClassName$8.DROPDOWN_ITEM)) { + SelectorEngine.findOne(Selector$8.DROPDOWN_TOGGLE, SelectorEngine.closest(link, Selector$8.DROPDOWN)).classList.add(ClassName$8.ACTIVE); + link.classList.add(ClassName$8.ACTIVE); + } else { + // Set triggered link as active + link.classList.add(ClassName$8.ACTIVE); + SelectorEngine.parents(link, Selector$8.NAV_LIST_GROUP).forEach(listGroup => { + // Set triggered links parents as active + // With both
    and