{"version":3,"file":"main.bundle.js","sources":["../../node_modules/@wko-inhouse/wko-ds/dist/js/wko-ds-bootstrap.bundle.js","../../src/js/main.js"],"sourcesContent":["/*!\n * WKO Design System v0.4.6-develop.2 (https://wko.at/)\n * Copyright 2011-2020 WKO Inhouse Frontend Team (https://www.wko.at/service/dienststelle.html?orgid=20425)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n\ttypeof define === 'function' && define.amd ? define(['exports'], factory) :\n\t(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.bootstrap = {}));\n}(this, (function (exports) { 'use strict';\n\n\tvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\n\tfunction createCommonjsModule(fn, basedir, module) {\n\t\treturn module = {\n\t\t path: basedir,\n\t\t exports: {},\n\t\t require: function (path, base) {\n\t return commonjsRequire(path, (base === undefined || base === null) ? module.path : base);\n\t }\n\t\t}, fn(module, module.exports), module.exports;\n\t}\n\n\tfunction commonjsRequire () {\n\t\tthrow new Error('Dynamic requires are not currently supported by @rollup/plugin-commonjs');\n\t}\n\n\t(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof commonjsRequire&&commonjsRequire;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t);}return n[i].exports}for(var u=\"function\"==typeof commonjsRequire&&commonjsRequire,i=0;i= 0) {\n\t return 1;\n\t }\n\t }\n\t return 0;\n\t}();\n\n\tfunction microtaskDebounce(fn) {\n\t var called = false;\n\t return function () {\n\t if (called) {\n\t return;\n\t }\n\t called = true;\n\t window.Promise.resolve().then(function () {\n\t called = false;\n\t fn();\n\t });\n\t };\n\t}\n\n\tfunction taskDebounce(fn) {\n\t var scheduled = false;\n\t return function () {\n\t if (!scheduled) {\n\t scheduled = true;\n\t setTimeout(function () {\n\t scheduled = false;\n\t fn();\n\t }, timeoutDuration);\n\t }\n\t };\n\t}\n\n\tvar supportsMicroTasks = isBrowser && window.Promise;\n\n\t/**\n\t* Create a debounced version of a method, that's asynchronously deferred\n\t* but called in the minimum time possible.\n\t*\n\t* @method\n\t* @memberof Popper.Utils\n\t* @argument {Function} fn\n\t* @returns {Function}\n\t*/\n\tvar debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce;\n\n\t/**\n\t * Check if the given variable is a function\n\t * @method\n\t * @memberof Popper.Utils\n\t * @argument {Any} functionToCheck - variable to check\n\t * @returns {Boolean} answer to: is a function?\n\t */\n\tfunction isFunction(functionToCheck) {\n\t var getType = {};\n\t return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';\n\t}\n\n\t/**\n\t * Get CSS computed property of the given element\n\t * @method\n\t * @memberof Popper.Utils\n\t * @argument {Eement} element\n\t * @argument {String} property\n\t */\n\tfunction getStyleComputedProperty(element, property) {\n\t if (element.nodeType !== 1) {\n\t return [];\n\t }\n\t // NOTE: 1 DOM access here\n\t var window = element.ownerDocument.defaultView;\n\t var css = window.getComputedStyle(element, null);\n\t return property ? css[property] : css;\n\t}\n\n\t/**\n\t * Returns the parentNode or the host of the element\n\t * @method\n\t * @memberof Popper.Utils\n\t * @argument {Element} element\n\t * @returns {Element} parent\n\t */\n\tfunction getParentNode(element) {\n\t if (element.nodeName === 'HTML') {\n\t return element;\n\t }\n\t return element.parentNode || element.host;\n\t}\n\n\t/**\n\t * Returns the scrolling parent of the given element\n\t * @method\n\t * @memberof Popper.Utils\n\t * @argument {Element} element\n\t * @returns {Element} scroll parent\n\t */\n\tfunction getScrollParent(element) {\n\t // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n\t if (!element) {\n\t return document.body;\n\t }\n\n\t switch (element.nodeName) {\n\t case 'HTML':\n\t case 'BODY':\n\t return element.ownerDocument.body;\n\t case '#document':\n\t return element.body;\n\t }\n\n\t // Firefox want us to check `-x` and `-y` variations as well\n\n\t var _getStyleComputedProp = getStyleComputedProperty(element),\n\t overflow = _getStyleComputedProp.overflow,\n\t overflowX = _getStyleComputedProp.overflowX,\n\t overflowY = _getStyleComputedProp.overflowY;\n\n\t if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {\n\t return element;\n\t }\n\n\t return getScrollParent(getParentNode(element));\n\t}\n\n\t/**\n\t * Returns the reference node of the reference object, or the reference object itself.\n\t * @method\n\t * @memberof Popper.Utils\n\t * @param {Element|Object} reference - the reference element (the popper will be relative to this)\n\t * @returns {Element} parent\n\t */\n\tfunction getReferenceNode(reference) {\n\t return reference && reference.referenceNode ? reference.referenceNode : reference;\n\t}\n\n\tvar isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);\n\tvar isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);\n\n\t/**\n\t * Determines if the browser is Internet Explorer\n\t * @method\n\t * @memberof Popper.Utils\n\t * @param {Number} version to check\n\t * @returns {Boolean} isIE\n\t */\n\tfunction isIE(version) {\n\t if (version === 11) {\n\t return isIE11;\n\t }\n\t if (version === 10) {\n\t return isIE10;\n\t }\n\t return isIE11 || isIE10;\n\t}\n\n\t/**\n\t * Returns the offset parent of the given element\n\t * @method\n\t * @memberof Popper.Utils\n\t * @argument {Element} element\n\t * @returns {Element} offset parent\n\t */\n\tfunction getOffsetParent(element) {\n\t if (!element) {\n\t return document.documentElement;\n\t }\n\n\t var noOffsetParent = isIE(10) ? document.body : null;\n\n\t // NOTE: 1 DOM access here\n\t var offsetParent = element.offsetParent || null;\n\t // Skip hidden elements which don't have an offsetParent\n\t while (offsetParent === noOffsetParent && element.nextElementSibling) {\n\t offsetParent = (element = element.nextElementSibling).offsetParent;\n\t }\n\n\t var nodeName = offsetParent && offsetParent.nodeName;\n\n\t if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n\t return element ? element.ownerDocument.documentElement : document.documentElement;\n\t }\n\n\t // .offsetParent will return the closest TH, TD or TABLE in case\n\t // no offsetParent is present, I hate this job...\n\t if (['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, 'position') === 'static') {\n\t return getOffsetParent(offsetParent);\n\t }\n\n\t return offsetParent;\n\t}\n\n\tfunction isOffsetContainer(element) {\n\t var nodeName = element.nodeName;\n\n\t if (nodeName === 'BODY') {\n\t return false;\n\t }\n\t return nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element;\n\t}\n\n\t/**\n\t * Finds the root node (document, shadowDOM root) of the given element\n\t * @method\n\t * @memberof Popper.Utils\n\t * @argument {Element} node\n\t * @returns {Element} root node\n\t */\n\tfunction getRoot(node) {\n\t if (node.parentNode !== null) {\n\t return getRoot(node.parentNode);\n\t }\n\n\t return node;\n\t}\n\n\t/**\n\t * Finds the offset parent common to the two provided nodes\n\t * @method\n\t * @memberof Popper.Utils\n\t * @argument {Element} element1\n\t * @argument {Element} element2\n\t * @returns {Element} common offset parent\n\t */\n\tfunction findCommonOffsetParent(element1, element2) {\n\t // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n\t if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n\t return document.documentElement;\n\t }\n\n\t // Here we make sure to give as \"start\" the element that comes first in the DOM\n\t var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING;\n\t var start = order ? element1 : element2;\n\t var end = order ? element2 : element1;\n\n\t // Get common ancestor container\n\t var range = document.createRange();\n\t range.setStart(start, 0);\n\t range.setEnd(end, 0);\n\t var commonAncestorContainer = range.commonAncestorContainer;\n\n\t // Both nodes are inside #document\n\n\t if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) {\n\t if (isOffsetContainer(commonAncestorContainer)) {\n\t return commonAncestorContainer;\n\t }\n\n\t return getOffsetParent(commonAncestorContainer);\n\t }\n\n\t // one of the nodes is inside shadowDOM, find which one\n\t var element1root = getRoot(element1);\n\t if (element1root.host) {\n\t return findCommonOffsetParent(element1root.host, element2);\n\t } else {\n\t return findCommonOffsetParent(element1, getRoot(element2).host);\n\t }\n\t}\n\n\t/**\n\t * Gets the scroll value of the given element in the given side (top and left)\n\t * @method\n\t * @memberof Popper.Utils\n\t * @argument {Element} element\n\t * @argument {String} side `top` or `left`\n\t * @returns {number} amount of scrolled pixels\n\t */\n\tfunction getScroll(element) {\n\t var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top';\n\n\t var upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n\t var nodeName = element.nodeName;\n\n\t if (nodeName === 'BODY' || nodeName === 'HTML') {\n\t var html = element.ownerDocument.documentElement;\n\t var scrollingElement = element.ownerDocument.scrollingElement || html;\n\t return scrollingElement[upperSide];\n\t }\n\n\t return element[upperSide];\n\t}\n\n\t/*\n\t * Sum or subtract the element scroll values (left and top) from a given rect object\n\t * @method\n\t * @memberof Popper.Utils\n\t * @param {Object} rect - Rect object you want to change\n\t * @param {HTMLElement} element - The element from the function reads the scroll values\n\t * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n\t * @return {Object} rect - The modifier rect object\n\t */\n\tfunction includeScroll(rect, element) {\n\t var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n\t var scrollTop = getScroll(element, 'top');\n\t var scrollLeft = getScroll(element, 'left');\n\t var modifier = subtract ? -1 : 1;\n\t rect.top += scrollTop * modifier;\n\t rect.bottom += scrollTop * modifier;\n\t rect.left += scrollLeft * modifier;\n\t rect.right += scrollLeft * modifier;\n\t return rect;\n\t}\n\n\t/*\n\t * Helper to detect borders of a given element\n\t * @method\n\t * @memberof Popper.Utils\n\t * @param {CSSStyleDeclaration} styles\n\t * Result of `getStyleComputedProperty` on the given element\n\t * @param {String} axis - `x` or `y`\n\t * @return {number} borders - The borders size of the given axis\n\t */\n\n\tfunction getBordersSize(styles, axis) {\n\t var sideA = axis === 'x' ? 'Left' : 'Top';\n\t var sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n\t return parseFloat(styles['border' + sideA + 'Width']) + parseFloat(styles['border' + sideB + 'Width']);\n\t}\n\n\tfunction getSize(axis, body, html, computedStyle) {\n\t return Math.max(body['offset' + axis], body['scroll' + axis], html['client' + axis], html['offset' + axis], html['scroll' + axis], isIE(10) ? parseInt(html['offset' + axis]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Top' : 'Left')]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Bottom' : 'Right')]) : 0);\n\t}\n\n\tfunction getWindowSizes(document) {\n\t var body = document.body;\n\t var html = document.documentElement;\n\t var computedStyle = isIE(10) && getComputedStyle(html);\n\n\t return {\n\t height: getSize('Height', body, html, computedStyle),\n\t width: getSize('Width', body, html, computedStyle)\n\t };\n\t}\n\n\tvar classCallCheck = function (instance, Constructor) {\n\t if (!(instance instanceof Constructor)) {\n\t throw new TypeError(\"Cannot call a class as a function\");\n\t }\n\t};\n\n\tvar createClass = function () {\n\t function defineProperties(target, props) {\n\t for (var i = 0; i < props.length; i++) {\n\t var descriptor = props[i];\n\t descriptor.enumerable = descriptor.enumerable || false;\n\t descriptor.configurable = true;\n\t if (\"value\" in descriptor) descriptor.writable = true;\n\t Object.defineProperty(target, descriptor.key, descriptor);\n\t }\n\t }\n\n\t return function (Constructor, protoProps, staticProps) {\n\t if (protoProps) defineProperties(Constructor.prototype, protoProps);\n\t if (staticProps) defineProperties(Constructor, staticProps);\n\t return Constructor;\n\t };\n\t}();\n\n\n\n\n\n\tvar defineProperty = function (obj, key, value) {\n\t if (key in obj) {\n\t Object.defineProperty(obj, key, {\n\t value: value,\n\t enumerable: true,\n\t configurable: true,\n\t writable: true\n\t });\n\t } else {\n\t obj[key] = value;\n\t }\n\n\t return obj;\n\t};\n\n\tvar _extends = Object.assign || function (target) {\n\t for (var i = 1; i < arguments.length; i++) {\n\t var source = arguments[i];\n\n\t for (var key in source) {\n\t if (Object.prototype.hasOwnProperty.call(source, key)) {\n\t target[key] = source[key];\n\t }\n\t }\n\t }\n\n\t return target;\n\t};\n\n\t/**\n\t * Given element offsets, generate an output similar to getBoundingClientRect\n\t * @method\n\t * @memberof Popper.Utils\n\t * @argument {Object} offsets\n\t * @returns {Object} ClientRect like output\n\t */\n\tfunction getClientRect(offsets) {\n\t return _extends({}, offsets, {\n\t right: offsets.left + offsets.width,\n\t bottom: offsets.top + offsets.height\n\t });\n\t}\n\n\t/**\n\t * Get bounding client rect of given element\n\t * @method\n\t * @memberof Popper.Utils\n\t * @param {HTMLElement} element\n\t * @return {Object} client rect\n\t */\n\tfunction getBoundingClientRect(element) {\n\t var rect = {};\n\n\t // IE10 10 FIX: Please, don't ask, the element isn't\n\t // considered in DOM in some circumstances...\n\t // This isn't reproducible in IE10 compatibility mode of IE11\n\t try {\n\t if (isIE(10)) {\n\t rect = element.getBoundingClientRect();\n\t var scrollTop = getScroll(element, 'top');\n\t var scrollLeft = getScroll(element, 'left');\n\t rect.top += scrollTop;\n\t rect.left += scrollLeft;\n\t rect.bottom += scrollTop;\n\t rect.right += scrollLeft;\n\t } else {\n\t rect = element.getBoundingClientRect();\n\t }\n\t } catch (e) {}\n\n\t var result = {\n\t left: rect.left,\n\t top: rect.top,\n\t width: rect.right - rect.left,\n\t height: rect.bottom - rect.top\n\t };\n\n\t // subtract scrollbar size from sizes\n\t var sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {};\n\t var width = sizes.width || element.clientWidth || result.width;\n\t var height = sizes.height || element.clientHeight || result.height;\n\n\t var horizScrollbar = element.offsetWidth - width;\n\t var vertScrollbar = element.offsetHeight - height;\n\n\t // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n\t // we make this check conditional for performance reasons\n\t if (horizScrollbar || vertScrollbar) {\n\t var styles = getStyleComputedProperty(element);\n\t horizScrollbar -= getBordersSize(styles, 'x');\n\t vertScrollbar -= getBordersSize(styles, 'y');\n\n\t result.width -= horizScrollbar;\n\t result.height -= vertScrollbar;\n\t }\n\n\t return getClientRect(result);\n\t}\n\n\tfunction getOffsetRectRelativeToArbitraryNode(children, parent) {\n\t var fixedPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n\t var isIE10 = isIE(10);\n\t var isHTML = parent.nodeName === 'HTML';\n\t var childrenRect = getBoundingClientRect(children);\n\t var parentRect = getBoundingClientRect(parent);\n\t var scrollParent = getScrollParent(children);\n\n\t var styles = getStyleComputedProperty(parent);\n\t var borderTopWidth = parseFloat(styles.borderTopWidth);\n\t var borderLeftWidth = parseFloat(styles.borderLeftWidth);\n\n\t // In cases where the parent is fixed, we must ignore negative scroll in offset calc\n\t if (fixedPosition && isHTML) {\n\t parentRect.top = Math.max(parentRect.top, 0);\n\t parentRect.left = Math.max(parentRect.left, 0);\n\t }\n\t var offsets = getClientRect({\n\t top: childrenRect.top - parentRect.top - borderTopWidth,\n\t left: childrenRect.left - parentRect.left - borderLeftWidth,\n\t width: childrenRect.width,\n\t height: childrenRect.height\n\t });\n\t offsets.marginTop = 0;\n\t offsets.marginLeft = 0;\n\n\t // Subtract margins of documentElement in case it's being used as parent\n\t // we do this only on HTML because it's the only element that behaves\n\t // differently when margins are applied to it. The margins are included in\n\t // the box of the documentElement, in the other cases not.\n\t if (!isIE10 && isHTML) {\n\t var marginTop = parseFloat(styles.marginTop);\n\t var marginLeft = parseFloat(styles.marginLeft);\n\n\t offsets.top -= borderTopWidth - marginTop;\n\t offsets.bottom -= borderTopWidth - marginTop;\n\t offsets.left -= borderLeftWidth - marginLeft;\n\t offsets.right -= borderLeftWidth - marginLeft;\n\n\t // Attach marginTop and marginLeft because in some circumstances we may need them\n\t offsets.marginTop = marginTop;\n\t offsets.marginLeft = marginLeft;\n\t }\n\n\t if (isIE10 && !fixedPosition ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== 'BODY') {\n\t offsets = includeScroll(offsets, parent);\n\t }\n\n\t return offsets;\n\t}\n\n\tfunction getViewportOffsetRectRelativeToArtbitraryNode(element) {\n\t var excludeScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n\t var html = element.ownerDocument.documentElement;\n\t var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n\t var width = Math.max(html.clientWidth, window.innerWidth || 0);\n\t var height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n\t var scrollTop = !excludeScroll ? getScroll(html) : 0;\n\t var scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\n\n\t var offset = {\n\t top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n\t left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n\t width: width,\n\t height: height\n\t };\n\n\t return getClientRect(offset);\n\t}\n\n\t/**\n\t * Check if the given element is fixed or is inside a fixed parent\n\t * @method\n\t * @memberof Popper.Utils\n\t * @argument {Element} element\n\t * @argument {Element} customContainer\n\t * @returns {Boolean} answer to \"isFixed?\"\n\t */\n\tfunction isFixed(element) {\n\t var nodeName = element.nodeName;\n\t if (nodeName === 'BODY' || nodeName === 'HTML') {\n\t return false;\n\t }\n\t if (getStyleComputedProperty(element, 'position') === 'fixed') {\n\t return true;\n\t }\n\t var parentNode = getParentNode(element);\n\t if (!parentNode) {\n\t return false;\n\t }\n\t return isFixed(parentNode);\n\t}\n\n\t/**\n\t * Finds the first parent of an element that has a transformed property defined\n\t * @method\n\t * @memberof Popper.Utils\n\t * @argument {Element} element\n\t * @returns {Element} first transformed parent or documentElement\n\t */\n\n\tfunction getFixedPositionOffsetParent(element) {\n\t // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n\t if (!element || !element.parentElement || isIE()) {\n\t return document.documentElement;\n\t }\n\t var el = element.parentElement;\n\t while (el && getStyleComputedProperty(el, 'transform') === 'none') {\n\t el = el.parentElement;\n\t }\n\t return el || document.documentElement;\n\t}\n\n\t/**\n\t * Computed the boundaries limits and return them\n\t * @method\n\t * @memberof Popper.Utils\n\t * @param {HTMLElement} popper\n\t * @param {HTMLElement} reference\n\t * @param {number} padding\n\t * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n\t * @param {Boolean} fixedPosition - Is in fixed position mode\n\t * @returns {Object} Coordinates of the boundaries\n\t */\n\tfunction getBoundaries(popper, reference, padding, boundariesElement) {\n\t var fixedPosition = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n\t // NOTE: 1 DOM access here\n\n\t var boundaries = { top: 0, left: 0 };\n\t var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n\n\t // Handle viewport case\n\t if (boundariesElement === 'viewport') {\n\t boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\n\t } else {\n\t // Handle other cases based on DOM element used as boundaries\n\t var boundariesNode = void 0;\n\t if (boundariesElement === 'scrollParent') {\n\t boundariesNode = getScrollParent(getParentNode(reference));\n\t if (boundariesNode.nodeName === 'BODY') {\n\t boundariesNode = popper.ownerDocument.documentElement;\n\t }\n\t } else if (boundariesElement === 'window') {\n\t boundariesNode = popper.ownerDocument.documentElement;\n\t } else {\n\t boundariesNode = boundariesElement;\n\t }\n\n\t var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent, fixedPosition);\n\n\t // In case of HTML, we need a different computation\n\t if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n\t var _getWindowSizes = getWindowSizes(popper.ownerDocument),\n\t height = _getWindowSizes.height,\n\t width = _getWindowSizes.width;\n\n\t boundaries.top += offsets.top - offsets.marginTop;\n\t boundaries.bottom = height + offsets.top;\n\t boundaries.left += offsets.left - offsets.marginLeft;\n\t boundaries.right = width + offsets.left;\n\t } else {\n\t // for all the other DOM elements, this one is good\n\t boundaries = offsets;\n\t }\n\t }\n\n\t // Add paddings\n\t padding = padding || 0;\n\t var isPaddingNumber = typeof padding === 'number';\n\t boundaries.left += isPaddingNumber ? padding : padding.left || 0;\n\t boundaries.top += isPaddingNumber ? padding : padding.top || 0;\n\t boundaries.right -= isPaddingNumber ? padding : padding.right || 0;\n\t boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0;\n\n\t return boundaries;\n\t}\n\n\tfunction getArea(_ref) {\n\t var width = _ref.width,\n\t height = _ref.height;\n\n\t return width * height;\n\t}\n\n\t/**\n\t * Utility used to transform the `auto` placement to the placement with more\n\t * available space.\n\t * @method\n\t * @memberof Popper.Utils\n\t * @argument {Object} data - The data object generated by update method\n\t * @argument {Object} options - Modifiers configuration and options\n\t * @returns {Object} The data object, properly modified\n\t */\n\tfunction computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) {\n\t var padding = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;\n\n\t if (placement.indexOf('auto') === -1) {\n\t return placement;\n\t }\n\n\t var boundaries = getBoundaries(popper, reference, padding, boundariesElement);\n\n\t var rects = {\n\t top: {\n\t width: boundaries.width,\n\t height: refRect.top - boundaries.top\n\t },\n\t right: {\n\t width: boundaries.right - refRect.right,\n\t height: boundaries.height\n\t },\n\t bottom: {\n\t width: boundaries.width,\n\t height: boundaries.bottom - refRect.bottom\n\t },\n\t left: {\n\t width: refRect.left - boundaries.left,\n\t height: boundaries.height\n\t }\n\t };\n\n\t var sortedAreas = Object.keys(rects).map(function (key) {\n\t return _extends({\n\t key: key\n\t }, rects[key], {\n\t area: getArea(rects[key])\n\t });\n\t }).sort(function (a, b) {\n\t return b.area - a.area;\n\t });\n\n\t var filteredAreas = sortedAreas.filter(function (_ref2) {\n\t var width = _ref2.width,\n\t height = _ref2.height;\n\t return width >= popper.clientWidth && height >= popper.clientHeight;\n\t });\n\n\t var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key;\n\n\t var variation = placement.split('-')[1];\n\n\t return computedPlacement + (variation ? '-' + variation : '');\n\t}\n\n\t/**\n\t * Get offsets to the reference element\n\t * @method\n\t * @memberof Popper.Utils\n\t * @param {Object} state\n\t * @param {Element} popper - the popper element\n\t * @param {Element} reference - the reference element (the popper will be relative to this)\n\t * @param {Element} fixedPosition - is in fixed position mode\n\t * @returns {Object} An object containing the offsets which will be applied to the popper\n\t */\n\tfunction getReferenceOffsets(state, popper, reference) {\n\t var fixedPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n\t var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n\t return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);\n\t}\n\n\t/**\n\t * Get the outer sizes of the given element (offset size + margins)\n\t * @method\n\t * @memberof Popper.Utils\n\t * @argument {Element} element\n\t * @returns {Object} object containing width and height properties\n\t */\n\tfunction getOuterSizes(element) {\n\t var window = element.ownerDocument.defaultView;\n\t var styles = window.getComputedStyle(element);\n\t var x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0);\n\t var y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0);\n\t var result = {\n\t width: element.offsetWidth + y,\n\t height: element.offsetHeight + x\n\t };\n\t return result;\n\t}\n\n\t/**\n\t * Get the opposite placement of the given one\n\t * @method\n\t * @memberof Popper.Utils\n\t * @argument {String} placement\n\t * @returns {String} flipped placement\n\t */\n\tfunction getOppositePlacement(placement) {\n\t var hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n\t return placement.replace(/left|right|bottom|top/g, function (matched) {\n\t return hash[matched];\n\t });\n\t}\n\n\t/**\n\t * Get offsets to the popper\n\t * @method\n\t * @memberof Popper.Utils\n\t * @param {Object} position - CSS position the Popper will get applied\n\t * @param {HTMLElement} popper - the popper element\n\t * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n\t * @param {String} placement - one of the valid placement options\n\t * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n\t */\n\tfunction getPopperOffsets(popper, referenceOffsets, placement) {\n\t placement = placement.split('-')[0];\n\n\t // Get popper node sizes\n\t var popperRect = getOuterSizes(popper);\n\n\t // Add position, width and height to our offsets object\n\t var popperOffsets = {\n\t width: popperRect.width,\n\t height: popperRect.height\n\t };\n\n\t // depending by the popper placement we have to compute its offsets slightly differently\n\t var isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n\t var mainSide = isHoriz ? 'top' : 'left';\n\t var secondarySide = isHoriz ? 'left' : 'top';\n\t var measurement = isHoriz ? 'height' : 'width';\n\t var secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n\t popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2;\n\t if (placement === secondarySide) {\n\t popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n\t } else {\n\t popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)];\n\t }\n\n\t return popperOffsets;\n\t}\n\n\t/**\n\t * Mimics the `find` method of Array\n\t * @method\n\t * @memberof Popper.Utils\n\t * @argument {Array} arr\n\t * @argument prop\n\t * @argument value\n\t * @returns index or -1\n\t */\n\tfunction find(arr, check) {\n\t // use native find if supported\n\t if (Array.prototype.find) {\n\t return arr.find(check);\n\t }\n\n\t // use `filter` to obtain the same behavior of `find`\n\t return arr.filter(check)[0];\n\t}\n\n\t/**\n\t * Return the index of the matching object\n\t * @method\n\t * @memberof Popper.Utils\n\t * @argument {Array} arr\n\t * @argument prop\n\t * @argument value\n\t * @returns index or -1\n\t */\n\tfunction findIndex(arr, prop, value) {\n\t // use native findIndex if supported\n\t if (Array.prototype.findIndex) {\n\t return arr.findIndex(function (cur) {\n\t return cur[prop] === value;\n\t });\n\t }\n\n\t // use `find` + `indexOf` if `findIndex` isn't supported\n\t var match = find(arr, function (obj) {\n\t return obj[prop] === value;\n\t });\n\t return arr.indexOf(match);\n\t}\n\n\t/**\n\t * Loop trough the list of modifiers and run them in order,\n\t * each of them will then edit the data object.\n\t * @method\n\t * @memberof Popper.Utils\n\t * @param {dataObject} data\n\t * @param {Array} modifiers\n\t * @param {String} ends - Optional modifier name used as stopper\n\t * @returns {dataObject}\n\t */\n\tfunction runModifiers(modifiers, data, ends) {\n\t var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n\t modifiersToRun.forEach(function (modifier) {\n\t if (modifier['function']) {\n\t // eslint-disable-line dot-notation\n\t console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n\t }\n\t var fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n\t if (modifier.enabled && isFunction(fn)) {\n\t // Add properties to offsets to make them a complete clientRect object\n\t // we do this before each modifier to make sure the previous one doesn't\n\t // mess with these values\n\t data.offsets.popper = getClientRect(data.offsets.popper);\n\t data.offsets.reference = getClientRect(data.offsets.reference);\n\n\t data = fn(data, modifier);\n\t }\n\t });\n\n\t return data;\n\t}\n\n\t/**\n\t * Updates the position of the popper, computing the new offsets and applying\n\t * the new style.
\n\t * Prefer `scheduleUpdate` over `update` because of performance reasons.\n\t * @method\n\t * @memberof Popper\n\t */\n\tfunction update() {\n\t // if popper is destroyed, don't perform any further update\n\t if (this.state.isDestroyed) {\n\t return;\n\t }\n\n\t var data = {\n\t instance: this,\n\t styles: {},\n\t arrowStyles: {},\n\t attributes: {},\n\t flipped: false,\n\t offsets: {}\n\t };\n\n\t // compute reference element offsets\n\t data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference, this.options.positionFixed);\n\n\t // compute auto placement, store placement inside the data object,\n\t // modifiers will be able to edit `placement` if needed\n\t // and refer to originalPlacement to know the original value\n\t data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding);\n\n\t // store the computed placement inside `originalPlacement`\n\t data.originalPlacement = data.placement;\n\n\t data.positionFixed = this.options.positionFixed;\n\n\t // compute the popper offsets\n\t data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement);\n\n\t data.offsets.popper.position = this.options.positionFixed ? 'fixed' : 'absolute';\n\n\t // run the modifiers\n\t data = runModifiers(this.modifiers, data);\n\n\t // the first `update` will call `onCreate` callback\n\t // the other ones will call `onUpdate` callback\n\t if (!this.state.isCreated) {\n\t this.state.isCreated = true;\n\t this.options.onCreate(data);\n\t } else {\n\t this.options.onUpdate(data);\n\t }\n\t}\n\n\t/**\n\t * Helper used to know if the given modifier is enabled.\n\t * @method\n\t * @memberof Popper.Utils\n\t * @returns {Boolean}\n\t */\n\tfunction isModifierEnabled(modifiers, modifierName) {\n\t return modifiers.some(function (_ref) {\n\t var name = _ref.name,\n\t enabled = _ref.enabled;\n\t return enabled && name === modifierName;\n\t });\n\t}\n\n\t/**\n\t * Get the prefixed supported property name\n\t * @method\n\t * @memberof Popper.Utils\n\t * @argument {String} property (camelCase)\n\t * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n\t */\n\tfunction getSupportedPropertyName(property) {\n\t var prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n\t var upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n\t for (var i = 0; i < prefixes.length; i++) {\n\t var prefix = prefixes[i];\n\t var toCheck = prefix ? '' + prefix + upperProp : property;\n\t if (typeof document.body.style[toCheck] !== 'undefined') {\n\t return toCheck;\n\t }\n\t }\n\t return null;\n\t}\n\n\t/**\n\t * Destroys the popper.\n\t * @method\n\t * @memberof Popper\n\t */\n\tfunction destroy() {\n\t this.state.isDestroyed = true;\n\n\t // touch DOM only if `applyStyle` modifier is enabled\n\t if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n\t this.popper.removeAttribute('x-placement');\n\t this.popper.style.position = '';\n\t this.popper.style.top = '';\n\t this.popper.style.left = '';\n\t this.popper.style.right = '';\n\t this.popper.style.bottom = '';\n\t this.popper.style.willChange = '';\n\t this.popper.style[getSupportedPropertyName('transform')] = '';\n\t }\n\n\t this.disableEventListeners();\n\n\t // remove the popper if user explicitly asked for the deletion on destroy\n\t // do not use `remove` because IE11 doesn't support it\n\t if (this.options.removeOnDestroy) {\n\t this.popper.parentNode.removeChild(this.popper);\n\t }\n\t return this;\n\t}\n\n\t/**\n\t * Get the window associated with the element\n\t * @argument {Element} element\n\t * @returns {Window}\n\t */\n\tfunction getWindow(element) {\n\t var ownerDocument = element.ownerDocument;\n\t return ownerDocument ? ownerDocument.defaultView : window;\n\t}\n\n\tfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n\t var isBody = scrollParent.nodeName === 'BODY';\n\t var target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n\t target.addEventListener(event, callback, { passive: true });\n\n\t if (!isBody) {\n\t attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents);\n\t }\n\t scrollParents.push(target);\n\t}\n\n\t/**\n\t * Setup needed event listeners used to update the popper position\n\t * @method\n\t * @memberof Popper.Utils\n\t * @private\n\t */\n\tfunction setupEventListeners(reference, options, state, updateBound) {\n\t // Resize event listener on window\n\t state.updateBound = updateBound;\n\t getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n\t // Scroll event listener on scroll parents\n\t var scrollElement = getScrollParent(reference);\n\t attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents);\n\t state.scrollElement = scrollElement;\n\t state.eventsEnabled = true;\n\n\t return state;\n\t}\n\n\t/**\n\t * It will add resize/scroll events and start recalculating\n\t * position of the popper element when they are triggered.\n\t * @method\n\t * @memberof Popper\n\t */\n\tfunction enableEventListeners() {\n\t if (!this.state.eventsEnabled) {\n\t this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate);\n\t }\n\t}\n\n\t/**\n\t * Remove event listeners used to update the popper position\n\t * @method\n\t * @memberof Popper.Utils\n\t * @private\n\t */\n\tfunction removeEventListeners(reference, state) {\n\t // Remove resize event listener on window\n\t getWindow(reference).removeEventListener('resize', state.updateBound);\n\n\t // Remove scroll event listener on scroll parents\n\t state.scrollParents.forEach(function (target) {\n\t target.removeEventListener('scroll', state.updateBound);\n\t });\n\n\t // Reset state\n\t state.updateBound = null;\n\t state.scrollParents = [];\n\t state.scrollElement = null;\n\t state.eventsEnabled = false;\n\t return state;\n\t}\n\n\t/**\n\t * It will remove resize/scroll events and won't recalculate popper position\n\t * when they are triggered. It also won't trigger `onUpdate` callback anymore,\n\t * unless you call `update` method manually.\n\t * @method\n\t * @memberof Popper\n\t */\n\tfunction disableEventListeners() {\n\t if (this.state.eventsEnabled) {\n\t cancelAnimationFrame(this.scheduleUpdate);\n\t this.state = removeEventListeners(this.reference, this.state);\n\t }\n\t}\n\n\t/**\n\t * Tells if a given input is a number\n\t * @method\n\t * @memberof Popper.Utils\n\t * @param {*} input to check\n\t * @return {Boolean}\n\t */\n\tfunction isNumeric(n) {\n\t return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n\t}\n\n\t/**\n\t * Set the style to the given popper\n\t * @method\n\t * @memberof Popper.Utils\n\t * @argument {Element} element - Element to apply the style to\n\t * @argument {Object} styles\n\t * Object with a list of properties and values which will be applied to the element\n\t */\n\tfunction setStyles(element, styles) {\n\t Object.keys(styles).forEach(function (prop) {\n\t var unit = '';\n\t // add unit if the value is numeric and is one of the following\n\t if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) {\n\t unit = 'px';\n\t }\n\t element.style[prop] = styles[prop] + unit;\n\t });\n\t}\n\n\t/**\n\t * Set the attributes to the given popper\n\t * @method\n\t * @memberof Popper.Utils\n\t * @argument {Element} element - Element to apply the attributes to\n\t * @argument {Object} styles\n\t * Object with a list of properties and values which will be applied to the element\n\t */\n\tfunction setAttributes(element, attributes) {\n\t Object.keys(attributes).forEach(function (prop) {\n\t var value = attributes[prop];\n\t if (value !== false) {\n\t element.setAttribute(prop, attributes[prop]);\n\t } else {\n\t element.removeAttribute(prop);\n\t }\n\t });\n\t}\n\n\t/**\n\t * @function\n\t * @memberof Modifiers\n\t * @argument {Object} data - The data object generated by `update` method\n\t * @argument {Object} data.styles - List of style properties - values to apply to popper element\n\t * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n\t * @argument {Object} options - Modifiers configuration and options\n\t * @returns {Object} The same data object\n\t */\n\tfunction applyStyle(data) {\n\t // any property present in `data.styles` will be applied to the popper,\n\t // in this way we can make the 3rd party modifiers add custom styles to it\n\t // Be aware, modifiers could override the properties defined in the previous\n\t // lines of this modifier!\n\t setStyles(data.instance.popper, data.styles);\n\n\t // any property present in `data.attributes` will be applied to the popper,\n\t // they will be set as HTML attributes of the element\n\t setAttributes(data.instance.popper, data.attributes);\n\n\t // if arrowElement is defined and arrowStyles has some properties\n\t if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n\t setStyles(data.arrowElement, data.arrowStyles);\n\t }\n\n\t return data;\n\t}\n\n\t/**\n\t * Set the x-placement attribute before everything else because it could be used\n\t * to add margins to the popper margins needs to be calculated to get the\n\t * correct popper offsets.\n\t * @method\n\t * @memberof Popper.modifiers\n\t * @param {HTMLElement} reference - The reference element used to position the popper\n\t * @param {HTMLElement} popper - The HTML element used as popper\n\t * @param {Object} options - Popper.js options\n\t */\n\tfunction applyStyleOnLoad(reference, popper, options, modifierOptions, state) {\n\t // compute reference element offsets\n\t var referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed);\n\n\t // compute auto placement, store placement inside the data object,\n\t // modifiers will be able to edit `placement` if needed\n\t // and refer to originalPlacement to know the original value\n\t var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding);\n\n\t popper.setAttribute('x-placement', placement);\n\n\t // Apply `position` to popper before anything else because\n\t // without the position applied we can't guarantee correct computations\n\t setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' });\n\n\t return options;\n\t}\n\n\t/**\n\t * @function\n\t * @memberof Popper.Utils\n\t * @argument {Object} data - The data object generated by `update` method\n\t * @argument {Boolean} shouldRound - If the offsets should be rounded at all\n\t * @returns {Object} The popper's position offsets rounded\n\t *\n\t * The tale of pixel-perfect positioning. It's still not 100% perfect, but as\n\t * good as it can be within reason.\n\t * Discussion here: https://github.com/FezVrasta/popper.js/pull/715\n\t *\n\t * Low DPI screens cause a popper to be blurry if not using full pixels (Safari\n\t * as well on High DPI screens).\n\t *\n\t * Firefox prefers no rounding for positioning and does not have blurriness on\n\t * high DPI screens.\n\t *\n\t * Only horizontal placement and left/right values need to be considered.\n\t */\n\tfunction getRoundedOffsets(data, shouldRound) {\n\t var _data$offsets = data.offsets,\n\t popper = _data$offsets.popper,\n\t reference = _data$offsets.reference;\n\t var round = Math.round,\n\t floor = Math.floor;\n\n\t var noRound = function noRound(v) {\n\t return v;\n\t };\n\n\t var referenceWidth = round(reference.width);\n\t var popperWidth = round(popper.width);\n\n\t var isVertical = ['left', 'right'].indexOf(data.placement) !== -1;\n\t var isVariation = data.placement.indexOf('-') !== -1;\n\t var sameWidthParity = referenceWidth % 2 === popperWidth % 2;\n\t var bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1;\n\n\t var horizontalToInteger = !shouldRound ? noRound : isVertical || isVariation || sameWidthParity ? round : floor;\n\t var verticalToInteger = !shouldRound ? noRound : round;\n\n\t return {\n\t left: horizontalToInteger(bothOddWidth && !isVariation && shouldRound ? popper.left - 1 : popper.left),\n\t top: verticalToInteger(popper.top),\n\t bottom: verticalToInteger(popper.bottom),\n\t right: horizontalToInteger(popper.right)\n\t };\n\t}\n\n\tvar isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent);\n\n\t/**\n\t * @function\n\t * @memberof Modifiers\n\t * @argument {Object} data - The data object generated by `update` method\n\t * @argument {Object} options - Modifiers configuration and options\n\t * @returns {Object} The data object, properly modified\n\t */\n\tfunction computeStyle(data, options) {\n\t var x = options.x,\n\t y = options.y;\n\t var popper = data.offsets.popper;\n\n\t // Remove this legacy support in Popper.js v2\n\n\t var legacyGpuAccelerationOption = find(data.instance.modifiers, function (modifier) {\n\t return modifier.name === 'applyStyle';\n\t }).gpuAcceleration;\n\t if (legacyGpuAccelerationOption !== undefined) {\n\t console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!');\n\t }\n\t var gpuAcceleration = legacyGpuAccelerationOption !== undefined ? legacyGpuAccelerationOption : options.gpuAcceleration;\n\n\t var offsetParent = getOffsetParent(data.instance.popper);\n\t var offsetParentRect = getBoundingClientRect(offsetParent);\n\n\t // Styles\n\t var styles = {\n\t position: popper.position\n\t };\n\n\t var offsets = getRoundedOffsets(data, window.devicePixelRatio < 2 || !isFirefox);\n\n\t var sideA = x === 'bottom' ? 'top' : 'bottom';\n\t var sideB = y === 'right' ? 'left' : 'right';\n\n\t // if gpuAcceleration is set to `true` and transform is supported,\n\t // we use `translate3d` to apply the position to the popper we\n\t // automatically use the supported prefixed version if needed\n\t var prefixedProperty = getSupportedPropertyName('transform');\n\n\t // now, let's make a step back and look at this code closely (wtf?)\n\t // If the content of the popper grows once it's been positioned, it\n\t // may happen that the popper gets misplaced because of the new content\n\t // overflowing its reference element\n\t // To avoid this problem, we provide two options (x and y), which allow\n\t // the consumer to define the offset origin.\n\t // If we position a popper on top of a reference element, we can set\n\t // `x` to `top` to make the popper grow towards its top instead of\n\t // its bottom.\n\t var left = void 0,\n\t top = void 0;\n\t if (sideA === 'bottom') {\n\t // when offsetParent is the positioning is relative to the bottom of the screen (excluding the scrollbar)\n\t // and not the bottom of the html element\n\t if (offsetParent.nodeName === 'HTML') {\n\t top = -offsetParent.clientHeight + offsets.bottom;\n\t } else {\n\t top = -offsetParentRect.height + offsets.bottom;\n\t }\n\t } else {\n\t top = offsets.top;\n\t }\n\t if (sideB === 'right') {\n\t if (offsetParent.nodeName === 'HTML') {\n\t left = -offsetParent.clientWidth + offsets.right;\n\t } else {\n\t left = -offsetParentRect.width + offsets.right;\n\t }\n\t } else {\n\t left = offsets.left;\n\t }\n\t if (gpuAcceleration && prefixedProperty) {\n\t styles[prefixedProperty] = 'translate3d(' + left + 'px, ' + top + 'px, 0)';\n\t styles[sideA] = 0;\n\t styles[sideB] = 0;\n\t styles.willChange = 'transform';\n\t } else {\n\t // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n\t var invertTop = sideA === 'bottom' ? -1 : 1;\n\t var invertLeft = sideB === 'right' ? -1 : 1;\n\t styles[sideA] = top * invertTop;\n\t styles[sideB] = left * invertLeft;\n\t styles.willChange = sideA + ', ' + sideB;\n\t }\n\n\t // Attributes\n\t var attributes = {\n\t 'x-placement': data.placement\n\t };\n\n\t // Update `data` attributes, styles and arrowStyles\n\t data.attributes = _extends({}, attributes, data.attributes);\n\t data.styles = _extends({}, styles, data.styles);\n\t data.arrowStyles = _extends({}, data.offsets.arrow, data.arrowStyles);\n\n\t return data;\n\t}\n\n\t/**\n\t * Helper used to know if the given modifier depends from another one.
\n\t * It checks if the needed modifier is listed and enabled.\n\t * @method\n\t * @memberof Popper.Utils\n\t * @param {Array} modifiers - list of modifiers\n\t * @param {String} requestingName - name of requesting modifier\n\t * @param {String} requestedName - name of requested modifier\n\t * @returns {Boolean}\n\t */\n\tfunction isModifierRequired(modifiers, requestingName, requestedName) {\n\t var requesting = find(modifiers, function (_ref) {\n\t var name = _ref.name;\n\t return name === requestingName;\n\t });\n\n\t var isRequired = !!requesting && modifiers.some(function (modifier) {\n\t return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order;\n\t });\n\n\t if (!isRequired) {\n\t var _requesting = '`' + requestingName + '`';\n\t var requested = '`' + requestedName + '`';\n\t console.warn(requested + ' modifier is required by ' + _requesting + ' modifier in order to work, be sure to include it before ' + _requesting + '!');\n\t }\n\t return isRequired;\n\t}\n\n\t/**\n\t * @function\n\t * @memberof Modifiers\n\t * @argument {Object} data - The data object generated by update method\n\t * @argument {Object} options - Modifiers configuration and options\n\t * @returns {Object} The data object, properly modified\n\t */\n\tfunction arrow(data, options) {\n\t var _data$offsets$arrow;\n\n\t // arrow depends on keepTogether in order to work\n\t if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n\t return data;\n\t }\n\n\t var arrowElement = options.element;\n\n\t // if arrowElement is a string, suppose it's a CSS selector\n\t if (typeof arrowElement === 'string') {\n\t arrowElement = data.instance.popper.querySelector(arrowElement);\n\n\t // if arrowElement is not found, don't run the modifier\n\t if (!arrowElement) {\n\t return data;\n\t }\n\t } else {\n\t // if the arrowElement isn't a query selector we must check that the\n\t // provided DOM node is child of its popper node\n\t if (!data.instance.popper.contains(arrowElement)) {\n\t console.warn('WARNING: `arrow.element` must be child of its popper element!');\n\t return data;\n\t }\n\t }\n\n\t var placement = data.placement.split('-')[0];\n\t var _data$offsets = data.offsets,\n\t popper = _data$offsets.popper,\n\t reference = _data$offsets.reference;\n\n\t var isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\n\t var len = isVertical ? 'height' : 'width';\n\t var sideCapitalized = isVertical ? 'Top' : 'Left';\n\t var side = sideCapitalized.toLowerCase();\n\t var altSide = isVertical ? 'left' : 'top';\n\t var opSide = isVertical ? 'bottom' : 'right';\n\t var arrowElementSize = getOuterSizes(arrowElement)[len];\n\n\t //\n\t // extends keepTogether behavior making sure the popper and its\n\t // reference have enough pixels in conjunction\n\t //\n\n\t // top/left side\n\t if (reference[opSide] - arrowElementSize < popper[side]) {\n\t data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize);\n\t }\n\t // bottom/right side\n\t if (reference[side] + arrowElementSize > popper[opSide]) {\n\t data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide];\n\t }\n\t data.offsets.popper = getClientRect(data.offsets.popper);\n\n\t // compute center of the popper\n\t var center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\n\n\t // Compute the sideValue using the updated popper offsets\n\t // take popper margin in account because we don't have this info available\n\t var css = getStyleComputedProperty(data.instance.popper);\n\t var popperMarginSide = parseFloat(css['margin' + sideCapitalized]);\n\t var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width']);\n\t var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;\n\n\t // prevent arrowElement from being placed not contiguously to its popper\n\t sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n\n\t data.arrowElement = arrowElement;\n\t data.offsets.arrow = (_data$offsets$arrow = {}, defineProperty(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty(_data$offsets$arrow, altSide, ''), _data$offsets$arrow);\n\n\t return data;\n\t}\n\n\t/**\n\t * Get the opposite placement variation of the given one\n\t * @method\n\t * @memberof Popper.Utils\n\t * @argument {String} placement variation\n\t * @returns {String} flipped placement variation\n\t */\n\tfunction getOppositeVariation(variation) {\n\t if (variation === 'end') {\n\t return 'start';\n\t } else if (variation === 'start') {\n\t return 'end';\n\t }\n\t return variation;\n\t}\n\n\t/**\n\t * List of accepted placements to use as values of the `placement` option.
\n\t * Valid placements are:\n\t * - `auto`\n\t * - `top`\n\t * - `right`\n\t * - `bottom`\n\t * - `left`\n\t *\n\t * Each placement can have a variation from this list:\n\t * - `-start`\n\t * - `-end`\n\t *\n\t * Variations are interpreted easily if you think of them as the left to right\n\t * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n\t * is right.
\n\t * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n\t *\n\t * Some valid examples are:\n\t * - `top-end` (on top of reference, right aligned)\n\t * - `right-start` (on right of reference, top aligned)\n\t * - `bottom` (on bottom, centered)\n\t * - `auto-end` (on the side with more space available, alignment depends by placement)\n\t *\n\t * @static\n\t * @type {Array}\n\t * @enum {String}\n\t * @readonly\n\t * @method placements\n\t * @memberof Popper\n\t */\n\tvar placements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start'];\n\n\t// Get rid of `auto` `auto-start` and `auto-end`\n\tvar validPlacements = placements.slice(3);\n\n\t/**\n\t * Given an initial placement, returns all the subsequent placements\n\t * clockwise (or counter-clockwise).\n\t *\n\t * @method\n\t * @memberof Popper.Utils\n\t * @argument {String} placement - A valid placement (it accepts variations)\n\t * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n\t * @returns {Array} placements including their variations\n\t */\n\tfunction clockwise(placement) {\n\t var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n\t var index = validPlacements.indexOf(placement);\n\t var arr = validPlacements.slice(index + 1).concat(validPlacements.slice(0, index));\n\t return counter ? arr.reverse() : arr;\n\t}\n\n\tvar BEHAVIORS = {\n\t FLIP: 'flip',\n\t CLOCKWISE: 'clockwise',\n\t COUNTERCLOCKWISE: 'counterclockwise'\n\t};\n\n\t/**\n\t * @function\n\t * @memberof Modifiers\n\t * @argument {Object} data - The data object generated by update method\n\t * @argument {Object} options - Modifiers configuration and options\n\t * @returns {Object} The data object, properly modified\n\t */\n\tfunction flip(data, options) {\n\t // if `inner` modifier is enabled, we can't use the `flip` modifier\n\t if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n\t return data;\n\t }\n\n\t if (data.flipped && data.placement === data.originalPlacement) {\n\t // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n\t return data;\n\t }\n\n\t var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement, data.positionFixed);\n\n\t var placement = data.placement.split('-')[0];\n\t var placementOpposite = getOppositePlacement(placement);\n\t var variation = data.placement.split('-')[1] || '';\n\n\t var flipOrder = [];\n\n\t switch (options.behavior) {\n\t case BEHAVIORS.FLIP:\n\t flipOrder = [placement, placementOpposite];\n\t break;\n\t case BEHAVIORS.CLOCKWISE:\n\t flipOrder = clockwise(placement);\n\t break;\n\t case BEHAVIORS.COUNTERCLOCKWISE:\n\t flipOrder = clockwise(placement, true);\n\t break;\n\t default:\n\t flipOrder = options.behavior;\n\t }\n\n\t flipOrder.forEach(function (step, index) {\n\t if (placement !== step || flipOrder.length === index + 1) {\n\t return data;\n\t }\n\n\t placement = data.placement.split('-')[0];\n\t placementOpposite = getOppositePlacement(placement);\n\n\t var popperOffsets = data.offsets.popper;\n\t var refOffsets = data.offsets.reference;\n\n\t // using floor because the reference offsets may contain decimals we are not going to consider here\n\t var floor = Math.floor;\n\t var overlapsRef = placement === 'left' && floor(popperOffsets.right) > floor(refOffsets.left) || placement === 'right' && floor(popperOffsets.left) < floor(refOffsets.right) || placement === 'top' && floor(popperOffsets.bottom) > floor(refOffsets.top) || placement === 'bottom' && floor(popperOffsets.top) < floor(refOffsets.bottom);\n\n\t var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n\t var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n\t var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n\t var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom);\n\n\t var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom;\n\n\t // flip the variation if required\n\t var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n\n\t // flips variation if reference element overflows boundaries\n\t var flippedVariationByRef = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom);\n\n\t // flips variation if popper content overflows boundaries\n\t var flippedVariationByContent = !!options.flipVariationsByContent && (isVertical && variation === 'start' && overflowsRight || isVertical && variation === 'end' && overflowsLeft || !isVertical && variation === 'start' && overflowsBottom || !isVertical && variation === 'end' && overflowsTop);\n\n\t var flippedVariation = flippedVariationByRef || flippedVariationByContent;\n\n\t if (overlapsRef || overflowsBoundaries || flippedVariation) {\n\t // this boolean to detect any flip loop\n\t data.flipped = true;\n\n\t if (overlapsRef || overflowsBoundaries) {\n\t placement = flipOrder[index + 1];\n\t }\n\n\t if (flippedVariation) {\n\t variation = getOppositeVariation(variation);\n\t }\n\n\t data.placement = placement + (variation ? '-' + variation : '');\n\n\t // this object contains `position`, we want to preserve it along with\n\t // any additional property we may add in the future\n\t data.offsets.popper = _extends({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement));\n\n\t data = runModifiers(data.instance.modifiers, data, 'flip');\n\t }\n\t });\n\t return data;\n\t}\n\n\t/**\n\t * @function\n\t * @memberof Modifiers\n\t * @argument {Object} data - The data object generated by update method\n\t * @argument {Object} options - Modifiers configuration and options\n\t * @returns {Object} The data object, properly modified\n\t */\n\tfunction keepTogether(data) {\n\t var _data$offsets = data.offsets,\n\t popper = _data$offsets.popper,\n\t reference = _data$offsets.reference;\n\n\t var placement = data.placement.split('-')[0];\n\t var floor = Math.floor;\n\t var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n\t var side = isVertical ? 'right' : 'bottom';\n\t var opSide = isVertical ? 'left' : 'top';\n\t var measurement = isVertical ? 'width' : 'height';\n\n\t if (popper[side] < floor(reference[opSide])) {\n\t data.offsets.popper[opSide] = floor(reference[opSide]) - popper[measurement];\n\t }\n\t if (popper[opSide] > floor(reference[side])) {\n\t data.offsets.popper[opSide] = floor(reference[side]);\n\t }\n\n\t return data;\n\t}\n\n\t/**\n\t * Converts a string containing value + unit into a px value number\n\t * @function\n\t * @memberof {modifiers~offset}\n\t * @private\n\t * @argument {String} str - Value + unit string\n\t * @argument {String} measurement - `height` or `width`\n\t * @argument {Object} popperOffsets\n\t * @argument {Object} referenceOffsets\n\t * @returns {Number|String}\n\t * Value in pixels, or original string if no values were extracted\n\t */\n\tfunction toValue(str, measurement, popperOffsets, referenceOffsets) {\n\t // separate value from unit\n\t var split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n\t var value = +split[1];\n\t var unit = split[2];\n\n\t // If it's not a number it's an operator, I guess\n\t if (!value) {\n\t return str;\n\t }\n\n\t if (unit.indexOf('%') === 0) {\n\t var element = void 0;\n\t switch (unit) {\n\t case '%p':\n\t element = popperOffsets;\n\t break;\n\t case '%':\n\t case '%r':\n\t default:\n\t element = referenceOffsets;\n\t }\n\n\t var rect = getClientRect(element);\n\t return rect[measurement] / 100 * value;\n\t } else if (unit === 'vh' || unit === 'vw') {\n\t // if is a vh or vw, we calculate the size based on the viewport\n\t var size = void 0;\n\t if (unit === 'vh') {\n\t size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n\t } else {\n\t size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n\t }\n\t return size / 100 * value;\n\t } else {\n\t // if is an explicit pixel unit, we get rid of the unit and keep the value\n\t // if is an implicit unit, it's px, and we return just the value\n\t return value;\n\t }\n\t}\n\n\t/**\n\t * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n\t * @function\n\t * @memberof {modifiers~offset}\n\t * @private\n\t * @argument {String} offset\n\t * @argument {Object} popperOffsets\n\t * @argument {Object} referenceOffsets\n\t * @argument {String} basePlacement\n\t * @returns {Array} a two cells array with x and y offsets in numbers\n\t */\n\tfunction parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) {\n\t var offsets = [0, 0];\n\n\t // Use height if placement is left or right and index is 0 otherwise use width\n\t // in this way the first offset will use an axis and the second one\n\t // will use the other one\n\t var useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n\n\t // Split the offset string to obtain a list of values and operands\n\t // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n\t var fragments = offset.split(/(\\+|\\-)/).map(function (frag) {\n\t return frag.trim();\n\t });\n\n\t // Detect if the offset string contains a pair of values or a single one\n\t // they could be separated by comma or space\n\t var divider = fragments.indexOf(find(fragments, function (frag) {\n\t return frag.search(/,|\\s/) !== -1;\n\t }));\n\n\t if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n\t console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');\n\t }\n\n\t // If divider is found, we divide the list of values and operands to divide\n\t // them by ofset X and Y.\n\t var splitRegex = /\\s*,\\s*|\\s+/;\n\t var ops = divider !== -1 ? [fragments.slice(0, divider).concat([fragments[divider].split(splitRegex)[0]]), [fragments[divider].split(splitRegex)[1]].concat(fragments.slice(divider + 1))] : [fragments];\n\n\t // Convert the values with units to absolute pixels to allow our computations\n\t ops = ops.map(function (op, index) {\n\t // Most of the units rely on the orientation of the popper\n\t var measurement = (index === 1 ? !useHeight : useHeight) ? 'height' : 'width';\n\t var mergeWithPrevious = false;\n\t return op\n\t // This aggregates any `+` or `-` sign that aren't considered operators\n\t // e.g.: 10 + +5 => [10, +, +5]\n\t .reduce(function (a, b) {\n\t if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n\t a[a.length - 1] = b;\n\t mergeWithPrevious = true;\n\t return a;\n\t } else if (mergeWithPrevious) {\n\t a[a.length - 1] += b;\n\t mergeWithPrevious = false;\n\t return a;\n\t } else {\n\t return a.concat(b);\n\t }\n\t }, [])\n\t // Here we convert the string values into number values (in px)\n\t .map(function (str) {\n\t return toValue(str, measurement, popperOffsets, referenceOffsets);\n\t });\n\t });\n\n\t // Loop trough the offsets arrays and execute the operations\n\t ops.forEach(function (op, index) {\n\t op.forEach(function (frag, index2) {\n\t if (isNumeric(frag)) {\n\t offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n\t }\n\t });\n\t });\n\t return offsets;\n\t}\n\n\t/**\n\t * @function\n\t * @memberof Modifiers\n\t * @argument {Object} data - The data object generated by update method\n\t * @argument {Object} options - Modifiers configuration and options\n\t * @argument {Number|String} options.offset=0\n\t * The offset value as described in the modifier description\n\t * @returns {Object} The data object, properly modified\n\t */\n\tfunction offset(data, _ref) {\n\t var offset = _ref.offset;\n\t var placement = data.placement,\n\t _data$offsets = data.offsets,\n\t popper = _data$offsets.popper,\n\t reference = _data$offsets.reference;\n\n\t var basePlacement = placement.split('-')[0];\n\n\t var offsets = void 0;\n\t if (isNumeric(+offset)) {\n\t offsets = [+offset, 0];\n\t } else {\n\t offsets = parseOffset(offset, popper, reference, basePlacement);\n\t }\n\n\t if (basePlacement === 'left') {\n\t popper.top += offsets[0];\n\t popper.left -= offsets[1];\n\t } else if (basePlacement === 'right') {\n\t popper.top += offsets[0];\n\t popper.left += offsets[1];\n\t } else if (basePlacement === 'top') {\n\t popper.left += offsets[0];\n\t popper.top -= offsets[1];\n\t } else if (basePlacement === 'bottom') {\n\t popper.left += offsets[0];\n\t popper.top += offsets[1];\n\t }\n\n\t data.popper = popper;\n\t return data;\n\t}\n\n\t/**\n\t * @function\n\t * @memberof Modifiers\n\t * @argument {Object} data - The data object generated by `update` method\n\t * @argument {Object} options - Modifiers configuration and options\n\t * @returns {Object} The data object, properly modified\n\t */\n\tfunction preventOverflow(data, options) {\n\t var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper);\n\n\t // If offsetParent is the reference element, we really want to\n\t // go one step up and use the next offsetParent as reference to\n\t // avoid to make this modifier completely useless and look like broken\n\t if (data.instance.reference === boundariesElement) {\n\t boundariesElement = getOffsetParent(boundariesElement);\n\t }\n\n\t // NOTE: DOM access here\n\t // resets the popper's position so that the document size can be calculated excluding\n\t // the size of the popper element itself\n\t var transformProp = getSupportedPropertyName('transform');\n\t var popperStyles = data.instance.popper.style; // assignment to help minification\n\t var top = popperStyles.top,\n\t left = popperStyles.left,\n\t transform = popperStyles[transformProp];\n\n\t popperStyles.top = '';\n\t popperStyles.left = '';\n\t popperStyles[transformProp] = '';\n\n\t var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement, data.positionFixed);\n\n\t // NOTE: DOM access here\n\t // restores the original style properties after the offsets have been computed\n\t popperStyles.top = top;\n\t popperStyles.left = left;\n\t popperStyles[transformProp] = transform;\n\n\t options.boundaries = boundaries;\n\n\t var order = options.priority;\n\t var popper = data.offsets.popper;\n\n\t var check = {\n\t primary: function primary(placement) {\n\t var value = popper[placement];\n\t if (popper[placement] < boundaries[placement] && !options.escapeWithReference) {\n\t value = Math.max(popper[placement], boundaries[placement]);\n\t }\n\t return defineProperty({}, placement, value);\n\t },\n\t secondary: function secondary(placement) {\n\t var mainSide = placement === 'right' ? 'left' : 'top';\n\t var value = popper[mainSide];\n\t if (popper[placement] > boundaries[placement] && !options.escapeWithReference) {\n\t value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height));\n\t }\n\t return defineProperty({}, mainSide, value);\n\t }\n\t };\n\n\t order.forEach(function (placement) {\n\t var side = ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';\n\t popper = _extends({}, popper, check[side](placement));\n\t });\n\n\t data.offsets.popper = popper;\n\n\t return data;\n\t}\n\n\t/**\n\t * @function\n\t * @memberof Modifiers\n\t * @argument {Object} data - The data object generated by `update` method\n\t * @argument {Object} options - Modifiers configuration and options\n\t * @returns {Object} The data object, properly modified\n\t */\n\tfunction shift(data) {\n\t var placement = data.placement;\n\t var basePlacement = placement.split('-')[0];\n\t var shiftvariation = placement.split('-')[1];\n\n\t // if shift shiftvariation is specified, run the modifier\n\t if (shiftvariation) {\n\t var _data$offsets = data.offsets,\n\t reference = _data$offsets.reference,\n\t popper = _data$offsets.popper;\n\n\t var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n\t var side = isVertical ? 'left' : 'top';\n\t var measurement = isVertical ? 'width' : 'height';\n\n\t var shiftOffsets = {\n\t start: defineProperty({}, side, reference[side]),\n\t end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement])\n\t };\n\n\t data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]);\n\t }\n\n\t return data;\n\t}\n\n\t/**\n\t * @function\n\t * @memberof Modifiers\n\t * @argument {Object} data - The data object generated by update method\n\t * @argument {Object} options - Modifiers configuration and options\n\t * @returns {Object} The data object, properly modified\n\t */\n\tfunction hide(data) {\n\t if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n\t return data;\n\t }\n\n\t var refRect = data.offsets.reference;\n\t var bound = find(data.instance.modifiers, function (modifier) {\n\t return modifier.name === 'preventOverflow';\n\t }).boundaries;\n\n\t if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) {\n\t // Avoid unnecessary DOM access if visibility hasn't changed\n\t if (data.hide === true) {\n\t return data;\n\t }\n\n\t data.hide = true;\n\t data.attributes['x-out-of-boundaries'] = '';\n\t } else {\n\t // Avoid unnecessary DOM access if visibility hasn't changed\n\t if (data.hide === false) {\n\t return data;\n\t }\n\n\t data.hide = false;\n\t data.attributes['x-out-of-boundaries'] = false;\n\t }\n\n\t return data;\n\t}\n\n\t/**\n\t * @function\n\t * @memberof Modifiers\n\t * @argument {Object} data - The data object generated by `update` method\n\t * @argument {Object} options - Modifiers configuration and options\n\t * @returns {Object} The data object, properly modified\n\t */\n\tfunction inner(data) {\n\t var placement = data.placement;\n\t var basePlacement = placement.split('-')[0];\n\t var _data$offsets = data.offsets,\n\t popper = _data$offsets.popper,\n\t reference = _data$offsets.reference;\n\n\t var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n\t var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n\t popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n\t data.placement = getOppositePlacement(placement);\n\t data.offsets.popper = getClientRect(popper);\n\n\t return data;\n\t}\n\n\t/**\n\t * Modifier function, each modifier can have a function of this type assigned\n\t * to its `fn` property.
\n\t * These functions will be called on each update, this means that you must\n\t * make sure they are performant enough to avoid performance bottlenecks.\n\t *\n\t * @function ModifierFn\n\t * @argument {dataObject} data - The data object generated by `update` method\n\t * @argument {Object} options - Modifiers configuration and options\n\t * @returns {dataObject} The data object, properly modified\n\t */\n\n\t/**\n\t * Modifiers are plugins used to alter the behavior of your poppers.
\n\t * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n\t * needed by the library.\n\t *\n\t * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n\t * All the other properties are configurations that could be tweaked.\n\t * @namespace modifiers\n\t */\n\tvar modifiers = {\n\t /**\n\t * Modifier used to shift the popper on the start or end of its reference\n\t * element.
\n\t * It will read the variation of the `placement` property.
\n\t * It can be one either `-end` or `-start`.\n\t * @memberof modifiers\n\t * @inner\n\t */\n\t shift: {\n\t /** @prop {number} order=100 - Index used to define the order of execution */\n\t order: 100,\n\t /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n\t enabled: true,\n\t /** @prop {ModifierFn} */\n\t fn: shift\n\t },\n\n\t /**\n\t * The `offset` modifier can shift your popper on both its axis.\n\t *\n\t * It accepts the following units:\n\t * - `px` or unit-less, interpreted as pixels\n\t * - `%` or `%r`, percentage relative to the length of the reference element\n\t * - `%p`, percentage relative to the length of the popper element\n\t * - `vw`, CSS viewport width unit\n\t * - `vh`, CSS viewport height unit\n\t *\n\t * For length is intended the main axis relative to the placement of the popper.
\n\t * This means that if the placement is `top` or `bottom`, the length will be the\n\t * `width`. In case of `left` or `right`, it will be the `height`.\n\t *\n\t * You can provide a single value (as `Number` or `String`), or a pair of values\n\t * as `String` divided by a comma or one (or more) white spaces.
\n\t * The latter is a deprecated method because it leads to confusion and will be\n\t * removed in v2.
\n\t * Additionally, it accepts additions and subtractions between different units.\n\t * Note that multiplications and divisions aren't supported.\n\t *\n\t * Valid examples are:\n\t * ```\n\t * 10\n\t * '10%'\n\t * '10, 10'\n\t * '10%, 10'\n\t * '10 + 10%'\n\t * '10 - 5vh + 3%'\n\t * '-10px + 5vh, 5px - 6%'\n\t * ```\n\t * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n\t * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n\t * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373).\n\t *\n\t * @memberof modifiers\n\t * @inner\n\t */\n\t offset: {\n\t /** @prop {number} order=200 - Index used to define the order of execution */\n\t order: 200,\n\t /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n\t enabled: true,\n\t /** @prop {ModifierFn} */\n\t fn: offset,\n\t /** @prop {Number|String} offset=0\n\t * The offset value as described in the modifier description\n\t */\n\t offset: 0\n\t },\n\n\t /**\n\t * Modifier used to prevent the popper from being positioned outside the boundary.\n\t *\n\t * A scenario exists where the reference itself is not within the boundaries.
\n\t * We can say it has \"escaped the boundaries\" — or just \"escaped\".
\n\t * In this case we need to decide whether the popper should either:\n\t *\n\t * - detach from the reference and remain \"trapped\" in the boundaries, or\n\t * - if it should ignore the boundary and \"escape with its reference\"\n\t *\n\t * When `escapeWithReference` is set to`true` and reference is completely\n\t * outside its boundaries, the popper will overflow (or completely leave)\n\t * the boundaries in order to remain attached to the edge of the reference.\n\t *\n\t * @memberof modifiers\n\t * @inner\n\t */\n\t preventOverflow: {\n\t /** @prop {number} order=300 - Index used to define the order of execution */\n\t order: 300,\n\t /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n\t enabled: true,\n\t /** @prop {ModifierFn} */\n\t fn: preventOverflow,\n\t /**\n\t * @prop {Array} [priority=['left','right','top','bottom']]\n\t * Popper will try to prevent overflow following these priorities by default,\n\t * then, it could overflow on the left and on top of the `boundariesElement`\n\t */\n\t priority: ['left', 'right', 'top', 'bottom'],\n\t /**\n\t * @prop {number} padding=5\n\t * Amount of pixel used to define a minimum distance between the boundaries\n\t * and the popper. This makes sure the popper always has a little padding\n\t * between the edges of its container\n\t */\n\t padding: 5,\n\t /**\n\t * @prop {String|HTMLElement} boundariesElement='scrollParent'\n\t * Boundaries used by the modifier. Can be `scrollParent`, `window`,\n\t * `viewport` or any DOM element.\n\t */\n\t boundariesElement: 'scrollParent'\n\t },\n\n\t /**\n\t * Modifier used to make sure the reference and its popper stay near each other\n\t * without leaving any gap between the two. Especially useful when the arrow is\n\t * enabled and you want to ensure that it points to its reference element.\n\t * It cares only about the first axis. You can still have poppers with margin\n\t * between the popper and its reference element.\n\t * @memberof modifiers\n\t * @inner\n\t */\n\t keepTogether: {\n\t /** @prop {number} order=400 - Index used to define the order of execution */\n\t order: 400,\n\t /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n\t enabled: true,\n\t /** @prop {ModifierFn} */\n\t fn: keepTogether\n\t },\n\n\t /**\n\t * This modifier is used to move the `arrowElement` of the popper to make\n\t * sure it is positioned between the reference element and its popper element.\n\t * It will read the outer size of the `arrowElement` node to detect how many\n\t * pixels of conjunction are needed.\n\t *\n\t * It has no effect if no `arrowElement` is provided.\n\t * @memberof modifiers\n\t * @inner\n\t */\n\t arrow: {\n\t /** @prop {number} order=500 - Index used to define the order of execution */\n\t order: 500,\n\t /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n\t enabled: true,\n\t /** @prop {ModifierFn} */\n\t fn: arrow,\n\t /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n\t element: '[x-arrow]'\n\t },\n\n\t /**\n\t * Modifier used to flip the popper's placement when it starts to overlap its\n\t * reference element.\n\t *\n\t * Requires the `preventOverflow` modifier before it in order to work.\n\t *\n\t * **NOTE:** this modifier will interrupt the current update cycle and will\n\t * restart it if it detects the need to flip the placement.\n\t * @memberof modifiers\n\t * @inner\n\t */\n\t flip: {\n\t /** @prop {number} order=600 - Index used to define the order of execution */\n\t order: 600,\n\t /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n\t enabled: true,\n\t /** @prop {ModifierFn} */\n\t fn: flip,\n\t /**\n\t * @prop {String|Array} behavior='flip'\n\t * The behavior used to change the popper's placement. It can be one of\n\t * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n\t * placements (with optional variations)\n\t */\n\t behavior: 'flip',\n\t /**\n\t * @prop {number} padding=5\n\t * The popper will flip if it hits the edges of the `boundariesElement`\n\t */\n\t padding: 5,\n\t /**\n\t * @prop {String|HTMLElement} boundariesElement='viewport'\n\t * The element which will define the boundaries of the popper position.\n\t * The popper will never be placed outside of the defined boundaries\n\t * (except if `keepTogether` is enabled)\n\t */\n\t boundariesElement: 'viewport',\n\t /**\n\t * @prop {Boolean} flipVariations=false\n\t * The popper will switch placement variation between `-start` and `-end` when\n\t * the reference element overlaps its boundaries.\n\t *\n\t * The original placement should have a set variation.\n\t */\n\t flipVariations: false,\n\t /**\n\t * @prop {Boolean} flipVariationsByContent=false\n\t * The popper will switch placement variation between `-start` and `-end` when\n\t * the popper element overlaps its reference boundaries.\n\t *\n\t * The original placement should have a set variation.\n\t */\n\t flipVariationsByContent: false\n\t },\n\n\t /**\n\t * Modifier used to make the popper flow toward the inner of the reference element.\n\t * By default, when this modifier is disabled, the popper will be placed outside\n\t * the reference element.\n\t * @memberof modifiers\n\t * @inner\n\t */\n\t inner: {\n\t /** @prop {number} order=700 - Index used to define the order of execution */\n\t order: 700,\n\t /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n\t enabled: false,\n\t /** @prop {ModifierFn} */\n\t fn: inner\n\t },\n\n\t /**\n\t * Modifier used to hide the popper when its reference element is outside of the\n\t * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n\t * be used to hide with a CSS selector the popper when its reference is\n\t * out of boundaries.\n\t *\n\t * Requires the `preventOverflow` modifier before it in order to work.\n\t * @memberof modifiers\n\t * @inner\n\t */\n\t hide: {\n\t /** @prop {number} order=800 - Index used to define the order of execution */\n\t order: 800,\n\t /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n\t enabled: true,\n\t /** @prop {ModifierFn} */\n\t fn: hide\n\t },\n\n\t /**\n\t * Computes the style that will be applied to the popper element to gets\n\t * properly positioned.\n\t *\n\t * Note that this modifier will not touch the DOM, it just prepares the styles\n\t * so that `applyStyle` modifier can apply it. This separation is useful\n\t * in case you need to replace `applyStyle` with a custom implementation.\n\t *\n\t * This modifier has `850` as `order` value to maintain backward compatibility\n\t * with previous versions of Popper.js. Expect the modifiers ordering method\n\t * to change in future major versions of the library.\n\t *\n\t * @memberof modifiers\n\t * @inner\n\t */\n\t computeStyle: {\n\t /** @prop {number} order=850 - Index used to define the order of execution */\n\t order: 850,\n\t /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n\t enabled: true,\n\t /** @prop {ModifierFn} */\n\t fn: computeStyle,\n\t /**\n\t * @prop {Boolean} gpuAcceleration=true\n\t * If true, it uses the CSS 3D transformation to position the popper.\n\t * Otherwise, it will use the `top` and `left` properties\n\t */\n\t gpuAcceleration: true,\n\t /**\n\t * @prop {string} [x='bottom']\n\t * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n\t * Change this if your popper should grow in a direction different from `bottom`\n\t */\n\t x: 'bottom',\n\t /**\n\t * @prop {string} [x='left']\n\t * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n\t * Change this if your popper should grow in a direction different from `right`\n\t */\n\t y: 'right'\n\t },\n\n\t /**\n\t * Applies the computed styles to the popper element.\n\t *\n\t * All the DOM manipulations are limited to this modifier. This is useful in case\n\t * you want to integrate Popper.js inside a framework or view library and you\n\t * want to delegate all the DOM manipulations to it.\n\t *\n\t * Note that if you disable this modifier, you must make sure the popper element\n\t * has its position set to `absolute` before Popper.js can do its work!\n\t *\n\t * Just disable this modifier and define your own to achieve the desired effect.\n\t *\n\t * @memberof modifiers\n\t * @inner\n\t */\n\t applyStyle: {\n\t /** @prop {number} order=900 - Index used to define the order of execution */\n\t order: 900,\n\t /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n\t enabled: true,\n\t /** @prop {ModifierFn} */\n\t fn: applyStyle,\n\t /** @prop {Function} */\n\t onLoad: applyStyleOnLoad,\n\t /**\n\t * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n\t * @prop {Boolean} gpuAcceleration=true\n\t * If true, it uses the CSS 3D transformation to position the popper.\n\t * Otherwise, it will use the `top` and `left` properties\n\t */\n\t gpuAcceleration: undefined\n\t }\n\t};\n\n\t/**\n\t * The `dataObject` is an object containing all the information used by Popper.js.\n\t * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n\t * @name dataObject\n\t * @property {Object} data.instance The Popper.js instance\n\t * @property {String} data.placement Placement applied to popper\n\t * @property {String} data.originalPlacement Placement originally defined on init\n\t * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n\t * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper\n\t * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n\t * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`)\n\t * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`)\n\t * @property {Object} data.boundaries Offsets of the popper boundaries\n\t * @property {Object} data.offsets The measurements of popper, reference and arrow elements\n\t * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n\t * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n\t * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n\t */\n\n\t/**\n\t * Default options provided to Popper.js constructor.
\n\t * These can be overridden using the `options` argument of Popper.js.
\n\t * To override an option, simply pass an object with the same\n\t * structure of the `options` object, as the 3rd argument. For example:\n\t * ```\n\t * new Popper(ref, pop, {\n\t * modifiers: {\n\t * preventOverflow: { enabled: false }\n\t * }\n\t * })\n\t * ```\n\t * @type {Object}\n\t * @static\n\t * @memberof Popper\n\t */\n\tvar Defaults = {\n\t /**\n\t * Popper's placement.\n\t * @prop {Popper.placements} placement='bottom'\n\t */\n\t placement: 'bottom',\n\n\t /**\n\t * Set this to true if you want popper to position it self in 'fixed' mode\n\t * @prop {Boolean} positionFixed=false\n\t */\n\t positionFixed: false,\n\n\t /**\n\t * Whether events (resize, scroll) are initially enabled.\n\t * @prop {Boolean} eventsEnabled=true\n\t */\n\t eventsEnabled: true,\n\n\t /**\n\t * Set to true if you want to automatically remove the popper when\n\t * you call the `destroy` method.\n\t * @prop {Boolean} removeOnDestroy=false\n\t */\n\t removeOnDestroy: false,\n\n\t /**\n\t * Callback called when the popper is created.
\n\t * By default, it is set to no-op.
\n\t * Access Popper.js instance with `data.instance`.\n\t * @prop {onCreate}\n\t */\n\t onCreate: function onCreate() {},\n\n\t /**\n\t * Callback called when the popper is updated. This callback is not called\n\t * on the initialization/creation of the popper, but only on subsequent\n\t * updates.
\n\t * By default, it is set to no-op.
\n\t * Access Popper.js instance with `data.instance`.\n\t * @prop {onUpdate}\n\t */\n\t onUpdate: function onUpdate() {},\n\n\t /**\n\t * List of modifiers used to modify the offsets before they are applied to the popper.\n\t * They provide most of the functionalities of Popper.js.\n\t * @prop {modifiers}\n\t */\n\t modifiers: modifiers\n\t};\n\n\t/**\n\t * @callback onCreate\n\t * @param {dataObject} data\n\t */\n\n\t/**\n\t * @callback onUpdate\n\t * @param {dataObject} data\n\t */\n\n\t// Utils\n\t// Methods\n\tvar Popper = function () {\n\t /**\n\t * Creates a new Popper.js instance.\n\t * @class Popper\n\t * @param {Element|referenceObject} reference - The reference element used to position the popper\n\t * @param {Element} popper - The HTML / XML element used as the popper\n\t * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n\t * @return {Object} instance - The generated Popper.js instance\n\t */\n\t function Popper(reference, popper) {\n\t var _this = this;\n\n\t var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\t classCallCheck(this, Popper);\n\n\t this.scheduleUpdate = function () {\n\t return requestAnimationFrame(_this.update);\n\t };\n\n\t // make update() debounced, so that it only runs at most once-per-tick\n\t this.update = debounce(this.update.bind(this));\n\n\t // with {} we create a new object with the options inside it\n\t this.options = _extends({}, Popper.Defaults, options);\n\n\t // init state\n\t this.state = {\n\t isDestroyed: false,\n\t isCreated: false,\n\t scrollParents: []\n\t };\n\n\t // get reference and popper elements (allow jQuery wrappers)\n\t this.reference = reference && reference.jquery ? reference[0] : reference;\n\t this.popper = popper && popper.jquery ? popper[0] : popper;\n\n\t // Deep merge modifiers options\n\t this.options.modifiers = {};\n\t Object.keys(_extends({}, Popper.Defaults.modifiers, options.modifiers)).forEach(function (name) {\n\t _this.options.modifiers[name] = _extends({}, Popper.Defaults.modifiers[name] || {}, options.modifiers ? options.modifiers[name] : {});\n\t });\n\n\t // Refactoring modifiers' list (Object => Array)\n\t this.modifiers = Object.keys(this.options.modifiers).map(function (name) {\n\t return _extends({\n\t name: name\n\t }, _this.options.modifiers[name]);\n\t })\n\t // sort the modifiers by order\n\t .sort(function (a, b) {\n\t return a.order - b.order;\n\t });\n\n\t // modifiers have the ability to execute arbitrary code when Popper.js get inited\n\t // such code is executed in the same order of its modifier\n\t // they could add new properties to their options configuration\n\t // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n\t this.modifiers.forEach(function (modifierOptions) {\n\t if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n\t modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state);\n\t }\n\t });\n\n\t // fire the first update to position the popper in the right place\n\t this.update();\n\n\t var eventsEnabled = this.options.eventsEnabled;\n\t if (eventsEnabled) {\n\t // setup event listeners, they will take care of update the position in specific situations\n\t this.enableEventListeners();\n\t }\n\n\t this.state.eventsEnabled = eventsEnabled;\n\t }\n\n\t // We can't use class properties because they don't get listed in the\n\t // class prototype and break stuff like Sinon stubs\n\n\n\t createClass(Popper, [{\n\t key: 'update',\n\t value: function update$$1() {\n\t return update.call(this);\n\t }\n\t }, {\n\t key: 'destroy',\n\t value: function destroy$$1() {\n\t return destroy.call(this);\n\t }\n\t }, {\n\t key: 'enableEventListeners',\n\t value: function enableEventListeners$$1() {\n\t return enableEventListeners.call(this);\n\t }\n\t }, {\n\t key: 'disableEventListeners',\n\t value: function disableEventListeners$$1() {\n\t return disableEventListeners.call(this);\n\t }\n\n\t /**\n\t * Schedules an update. It will run on the next UI update available.\n\t * @method scheduleUpdate\n\t * @memberof Popper\n\t */\n\n\n\t /**\n\t * Collection of utilities useful when writing custom modifiers.\n\t * Starting from version 1.7, this method is available only if you\n\t * include `popper-utils.js` before `popper.js`.\n\t *\n\t * **DEPRECATION**: This way to access PopperUtils is deprecated\n\t * and will be removed in v2! Use the PopperUtils module directly instead.\n\t * Due to the high instability of the methods contained in Utils, we can't\n\t * guarantee them to follow semver. Use them at your own risk!\n\t * @static\n\t * @private\n\t * @type {Object}\n\t * @deprecated since version 1.8\n\t * @member Utils\n\t * @memberof Popper\n\t */\n\n\t }]);\n\t return Popper;\n\t}();\n\n\t/**\n\t * The `referenceObject` is an object that provides an interface compatible with Popper.js\n\t * and lets you use it as replacement of a real DOM node.
\n\t * You can use this method to position a popper relatively to a set of coordinates\n\t * in case you don't have a DOM node to use as reference.\n\t *\n\t * ```\n\t * new Popper(referenceObject, popperNode);\n\t * ```\n\t *\n\t * NB: This feature isn't supported in Internet Explorer 10.\n\t * @name referenceObject\n\t * @property {Function} data.getBoundingClientRect\n\t * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n\t * @property {number} data.clientWidth\n\t * An ES6 getter that will return the width of the virtual reference element.\n\t * @property {number} data.clientHeight\n\t * An ES6 getter that will return the height of the virtual reference element.\n\t */\n\n\n\tPopper.Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\n\tPopper.placements = placements;\n\tPopper.Defaults = Defaults;\n\n\t/*!\n\t * Bootstrap v5.0.0-alpha1 (https://getbootstrap.com/)\n\t * Copyright 2011-2020 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n\t * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n\t */\n\n\tfunction _defineProperties(target, props) {\n\t for (var i = 0; i < props.length; i++) {\n\t var descriptor = props[i];\n\t descriptor.enumerable = descriptor.enumerable || false;\n\t descriptor.configurable = true;\n\t if (\"value\" in descriptor) descriptor.writable = true;\n\t Object.defineProperty(target, descriptor.key, descriptor);\n\t }\n\t}\n\n\tfunction _createClass(Constructor, protoProps, staticProps) {\n\t if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n\t if (staticProps) _defineProperties(Constructor, staticProps);\n\t return Constructor;\n\t}\n\n\tfunction _defineProperty(obj, key, value) {\n\t if (key in obj) {\n\t Object.defineProperty(obj, key, {\n\t value: value,\n\t enumerable: true,\n\t configurable: true,\n\t writable: true\n\t });\n\t } else {\n\t obj[key] = value;\n\t }\n\n\t return obj;\n\t}\n\n\tfunction ownKeys(object, enumerableOnly) {\n\t var keys = Object.keys(object);\n\n\t if (Object.getOwnPropertySymbols) {\n\t var symbols = Object.getOwnPropertySymbols(object);\n\t if (enumerableOnly) symbols = symbols.filter(function (sym) {\n\t return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n\t });\n\t keys.push.apply(keys, symbols);\n\t }\n\n\t return keys;\n\t}\n\n\tfunction _objectSpread2(target) {\n\t for (var i = 1; i < arguments.length; i++) {\n\t var source = arguments[i] != null ? arguments[i] : {};\n\n\t if (i % 2) {\n\t ownKeys(Object(source), true).forEach(function (key) {\n\t _defineProperty(target, key, source[key]);\n\t });\n\t } else if (Object.getOwnPropertyDescriptors) {\n\t Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n\t } else {\n\t ownKeys(Object(source)).forEach(function (key) {\n\t Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n\t });\n\t }\n\t }\n\n\t return target;\n\t}\n\n\tfunction _inheritsLoose(subClass, superClass) {\n\t subClass.prototype = Object.create(superClass.prototype);\n\t subClass.prototype.constructor = subClass;\n\t subClass.__proto__ = superClass;\n\t}\n\n\t/**\n\t * --------------------------------------------------------------------------\n\t * Bootstrap (v5.0.0-alpha1): util/index.js\n\t * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n\t * --------------------------------------------------------------------------\n\t */\n\tvar MAX_UID = 1000000;\n\tvar MILLISECONDS_MULTIPLIER = 1000;\n\tvar TRANSITION_END = 'transitionend'; // Shoutout AngusCroll (https://goo.gl/pxwQGp)\n\n\tvar toType = function toType(obj) {\n\t if (obj === null || obj === undefined) {\n\t return \"\" + obj;\n\t }\n\n\t return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase();\n\t};\n\t/**\n\t * --------------------------------------------------------------------------\n\t * Public Util Api\n\t * --------------------------------------------------------------------------\n\t */\n\n\n\tvar getUID = function getUID(prefix) {\n\t do {\n\t prefix += Math.floor(Math.random() * MAX_UID);\n\t } while (document.getElementById(prefix));\n\n\t return prefix;\n\t};\n\n\tvar getSelector = function getSelector(element) {\n\t var selector = element.getAttribute('data-target');\n\n\t if (!selector || selector === '#') {\n\t var hrefAttr = element.getAttribute('href');\n\t selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null;\n\t }\n\n\t return selector;\n\t};\n\n\tvar getSelectorFromElement = function getSelectorFromElement(element) {\n\t var selector = getSelector(element);\n\n\t if (selector) {\n\t return document.querySelector(selector) ? selector : null;\n\t }\n\n\t return null;\n\t};\n\n\tvar getElementFromSelector = function getElementFromSelector(element) {\n\t var selector = getSelector(element);\n\t return selector ? document.querySelector(selector) : null;\n\t};\n\n\tvar getTransitionDurationFromElement = function getTransitionDurationFromElement(element) {\n\t if (!element) {\n\t return 0;\n\t } // Get transition-duration of the element\n\n\n\t var _window$getComputedSt = window.getComputedStyle(element),\n\t transitionDuration = _window$getComputedSt.transitionDuration,\n\t transitionDelay = _window$getComputedSt.transitionDelay;\n\n\t var floatTransitionDuration = parseFloat(transitionDuration);\n\t var floatTransitionDelay = parseFloat(transitionDelay); // Return 0 if element or transition duration is not found\n\n\t if (!floatTransitionDuration && !floatTransitionDelay) {\n\t return 0;\n\t } // If multiple durations are defined, take the first\n\n\n\t transitionDuration = transitionDuration.split(',')[0];\n\t transitionDelay = transitionDelay.split(',')[0];\n\t return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;\n\t};\n\n\tvar triggerTransitionEnd = function triggerTransitionEnd(element) {\n\t element.dispatchEvent(new Event(TRANSITION_END));\n\t};\n\n\tvar isElement = function isElement(obj) {\n\t return (obj[0] || obj).nodeType;\n\t};\n\n\tvar emulateTransitionEnd = function emulateTransitionEnd(element, duration) {\n\t var called = false;\n\t var durationPadding = 5;\n\t var emulatedDuration = duration + durationPadding;\n\n\t function listener() {\n\t called = true;\n\t element.removeEventListener(TRANSITION_END, listener);\n\t }\n\n\t element.addEventListener(TRANSITION_END, listener);\n\t setTimeout(function () {\n\t if (!called) {\n\t triggerTransitionEnd(element);\n\t }\n\t }, emulatedDuration);\n\t};\n\n\tvar typeCheckConfig = function typeCheckConfig(componentName, config, configTypes) {\n\t Object.keys(configTypes).forEach(function (property) {\n\t var expectedTypes = configTypes[property];\n\t var value = config[property];\n\t var valueType = value && isElement(value) ? 'element' : toType(value);\n\n\t if (!new RegExp(expectedTypes).test(valueType)) {\n\t throw new Error(componentName.toUpperCase() + \": \" + (\"Option \\\"\" + property + \"\\\" provided type \\\"\" + valueType + \"\\\" \") + (\"but expected type \\\"\" + expectedTypes + \"\\\".\"));\n\t }\n\t });\n\t};\n\n\tvar isVisible = function isVisible(element) {\n\t if (!element) {\n\t return false;\n\t }\n\n\t if (element.style && element.parentNode && element.parentNode.style) {\n\t var elementStyle = getComputedStyle(element);\n\t var parentNodeStyle = getComputedStyle(element.parentNode);\n\t return elementStyle.display !== 'none' && parentNodeStyle.display !== 'none' && elementStyle.visibility !== 'hidden';\n\t }\n\n\t return false;\n\t};\n\n\tvar findShadowRoot = function findShadowRoot(element) {\n\t if (!document.documentElement.attachShadow) {\n\t return null;\n\t } // Can find the shadow root otherwise it'll return the document\n\n\n\t if (typeof element.getRootNode === 'function') {\n\t var root = element.getRootNode();\n\t return root instanceof ShadowRoot ? root : null;\n\t }\n\n\t if (element instanceof ShadowRoot) {\n\t return element;\n\t } // when we don't find a shadow root\n\n\n\t if (!element.parentNode) {\n\t return null;\n\t }\n\n\t return findShadowRoot(element.parentNode);\n\t};\n\n\tvar noop = function noop() {\n\t return function () {};\n\t};\n\n\tvar reflow = function reflow(element) {\n\t return element.offsetHeight;\n\t};\n\n\tvar getjQuery = function getjQuery() {\n\t var _window = window,\n\t jQuery = _window.jQuery;\n\n\t if (jQuery && !document.body.hasAttribute('data-no-jquery')) {\n\t return jQuery;\n\t }\n\n\t return null;\n\t};\n\n\t/**\n\t * --------------------------------------------------------------------------\n\t * Bootstrap (v5.0.0-alpha1): dom/data.js\n\t * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n\t * --------------------------------------------------------------------------\n\t */\n\n\t/**\n\t * ------------------------------------------------------------------------\n\t * Constants\n\t * ------------------------------------------------------------------------\n\t */\n\tvar mapData = function () {\n\t var storeData = {};\n\t var id = 1;\n\t return {\n\t set: function set(element, key, data) {\n\t if (typeof element.key === 'undefined') {\n\t element.key = {\n\t key: key,\n\t id: id\n\t };\n\t id++;\n\t }\n\n\t storeData[element.key.id] = data;\n\t },\n\t get: function get(element, key) {\n\t if (!element || typeof element.key === 'undefined') {\n\t return null;\n\t }\n\n\t var keyProperties = element.key;\n\n\t if (keyProperties.key === key) {\n\t return storeData[keyProperties.id];\n\t }\n\n\t return null;\n\t },\n\t delete: function _delete(element, key) {\n\t if (typeof element.key === 'undefined') {\n\t return;\n\t }\n\n\t var keyProperties = element.key;\n\n\t if (keyProperties.key === key) {\n\t delete storeData[keyProperties.id];\n\t delete element.key;\n\t }\n\t }\n\t };\n\t}();\n\n\tvar Data = {\n\t setData: function setData(instance, key, data) {\n\t mapData.set(instance, key, data);\n\t },\n\t getData: function getData(instance, key) {\n\t return mapData.get(instance, key);\n\t },\n\t removeData: function removeData(instance, key) {\n\t mapData.delete(instance, key);\n\t }\n\t};\n\n\t/* istanbul ignore file */\n\tvar find$1 = Element.prototype.querySelectorAll;\n\tvar findOne = Element.prototype.querySelector; // MSEdge resets defaultPrevented flag upon dispatchEvent call if at least one listener is attached\n\n\tvar defaultPreventedPreservedOnDispatch = function () {\n\t var e = new CustomEvent('Bootstrap', {\n\t cancelable: true\n\t });\n\t var element = document.createElement('div');\n\t element.addEventListener('Bootstrap', function () {\n\t return null;\n\t });\n\t e.preventDefault();\n\t element.dispatchEvent(e);\n\t return e.defaultPrevented;\n\t}();\n\n\tvar scopeSelectorRegex = /:scope\\b/;\n\n\tvar supportScopeQuery = function () {\n\t var element = document.createElement('div');\n\n\t try {\n\t element.querySelectorAll(':scope *');\n\t } catch (_) {\n\t return false;\n\t }\n\n\t return true;\n\t}();\n\n\tif (!supportScopeQuery) {\n\t find$1 = function find(selector) {\n\t if (!scopeSelectorRegex.test(selector)) {\n\t return this.querySelectorAll(selector);\n\t }\n\n\t var hasId = Boolean(this.id);\n\n\t if (!hasId) {\n\t this.id = getUID('scope');\n\t }\n\n\t var nodeList = null;\n\n\t try {\n\t selector = selector.replace(scopeSelectorRegex, \"#\" + this.id);\n\t nodeList = this.querySelectorAll(selector);\n\t } finally {\n\t if (!hasId) {\n\t this.removeAttribute('id');\n\t }\n\t }\n\n\t return nodeList;\n\t };\n\n\t findOne = function findOne(selector) {\n\t if (!scopeSelectorRegex.test(selector)) {\n\t return this.querySelector(selector);\n\t }\n\n\t var matches = find$1.call(this, selector);\n\n\t if (typeof matches[0] !== 'undefined') {\n\t return matches[0];\n\t }\n\n\t return null;\n\t };\n\t}\n\n\t/**\n\t * --------------------------------------------------------------------------\n\t * Bootstrap (v5.0.0-alpha1): dom/event-handler.js\n\t * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n\t * --------------------------------------------------------------------------\n\t */\n\t/**\n\t * ------------------------------------------------------------------------\n\t * Constants\n\t * ------------------------------------------------------------------------\n\t */\n\n\tvar $ = getjQuery();\n\tvar namespaceRegex = /[^.]*(?=\\..*)\\.|.*/;\n\tvar stripNameRegex = /\\..*/;\n\tvar stripUidRegex = /::\\d+$/;\n\tvar eventRegistry = {}; // Events storage\n\n\tvar uidEvent = 1;\n\tvar customEvents = {\n\t mouseenter: 'mouseover',\n\t mouseleave: 'mouseout'\n\t};\n\tvar 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'];\n\t/**\n\t * ------------------------------------------------------------------------\n\t * Private methods\n\t * ------------------------------------------------------------------------\n\t */\n\n\tfunction getUidEvent(element, uid) {\n\t return uid && uid + \"::\" + uidEvent++ || element.uidEvent || uidEvent++;\n\t}\n\n\tfunction getEvent(element) {\n\t var uid = getUidEvent(element);\n\t element.uidEvent = uid;\n\t eventRegistry[uid] = eventRegistry[uid] || {};\n\t return eventRegistry[uid];\n\t}\n\n\tfunction bootstrapHandler(element, fn) {\n\t return function handler(event) {\n\t if (handler.oneOff) {\n\t EventHandler.off(element, event.type, fn);\n\t }\n\n\t return fn.apply(element, [event]);\n\t };\n\t}\n\n\tfunction bootstrapDelegationHandler(element, selector, fn) {\n\t return function handler(event) {\n\t var domElements = element.querySelectorAll(selector);\n\n\t for (var target = event.target; target && target !== this; target = target.parentNode) {\n\t for (var i = domElements.length; i--;) {\n\t if (domElements[i] === target) {\n\t if (handler.oneOff) {\n\t EventHandler.off(element, event.type, fn);\n\t }\n\n\t return fn.apply(target, [event]);\n\t }\n\t }\n\t } // To please ESLint\n\n\n\t return null;\n\t };\n\t}\n\n\tfunction findHandler(events, handler, delegationSelector) {\n\t if (delegationSelector === void 0) {\n\t delegationSelector = null;\n\t }\n\n\t var uidEventList = Object.keys(events);\n\n\t for (var i = 0, len = uidEventList.length; i < len; i++) {\n\t var event = events[uidEventList[i]];\n\n\t if (event.originalHandler === handler && event.delegationSelector === delegationSelector) {\n\t return event;\n\t }\n\t }\n\n\t return null;\n\t}\n\n\tfunction normalizeParams(originalTypeEvent, handler, delegationFn) {\n\t var delegation = typeof handler === 'string';\n\t var originalHandler = delegation ? delegationFn : handler; // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n\n\t var typeEvent = originalTypeEvent.replace(stripNameRegex, '');\n\t var custom = customEvents[typeEvent];\n\n\t if (custom) {\n\t typeEvent = custom;\n\t }\n\n\t var isNative = nativeEvents.indexOf(typeEvent) > -1;\n\n\t if (!isNative) {\n\t typeEvent = originalTypeEvent;\n\t }\n\n\t return [delegation, originalHandler, typeEvent];\n\t}\n\n\tfunction addHandler(element, originalTypeEvent, handler, delegationFn, oneOff) {\n\t if (typeof originalTypeEvent !== 'string' || !element) {\n\t return;\n\t }\n\n\t if (!handler) {\n\t handler = delegationFn;\n\t delegationFn = null;\n\t }\n\n\t var _normalizeParams = normalizeParams(originalTypeEvent, handler, delegationFn),\n\t delegation = _normalizeParams[0],\n\t originalHandler = _normalizeParams[1],\n\t typeEvent = _normalizeParams[2];\n\n\t var events = getEvent(element);\n\t var handlers = events[typeEvent] || (events[typeEvent] = {});\n\t var previousFn = findHandler(handlers, originalHandler, delegation ? handler : null);\n\n\t if (previousFn) {\n\t previousFn.oneOff = previousFn.oneOff && oneOff;\n\t return;\n\t }\n\n\t var uid = getUidEvent(originalHandler, originalTypeEvent.replace(namespaceRegex, ''));\n\t var fn = delegation ? bootstrapDelegationHandler(element, handler, delegationFn) : bootstrapHandler(element, handler);\n\t fn.delegationSelector = delegation ? handler : null;\n\t fn.originalHandler = originalHandler;\n\t fn.oneOff = oneOff;\n\t fn.uidEvent = uid;\n\t handlers[uid] = fn;\n\t element.addEventListener(typeEvent, fn, delegation);\n\t}\n\n\tfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n\t var fn = findHandler(events[typeEvent], handler, delegationSelector);\n\n\t if (!fn) {\n\t return;\n\t }\n\n\t element.removeEventListener(typeEvent, fn, Boolean(delegationSelector));\n\t delete events[typeEvent][fn.uidEvent];\n\t}\n\n\tfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n\t var storeElementEvent = events[typeEvent] || {};\n\t Object.keys(storeElementEvent).forEach(function (handlerKey) {\n\t if (handlerKey.indexOf(namespace) > -1) {\n\t var event = storeElementEvent[handlerKey];\n\t removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector);\n\t }\n\t });\n\t}\n\n\tvar EventHandler = {\n\t on: function on(element, event, handler, delegationFn) {\n\t addHandler(element, event, handler, delegationFn, false);\n\t },\n\t one: function one(element, event, handler, delegationFn) {\n\t addHandler(element, event, handler, delegationFn, true);\n\t },\n\t off: function off(element, originalTypeEvent, handler, delegationFn) {\n\t if (typeof originalTypeEvent !== 'string' || !element) {\n\t return;\n\t }\n\n\t var _normalizeParams2 = normalizeParams(originalTypeEvent, handler, delegationFn),\n\t delegation = _normalizeParams2[0],\n\t originalHandler = _normalizeParams2[1],\n\t typeEvent = _normalizeParams2[2];\n\n\t var inNamespace = typeEvent !== originalTypeEvent;\n\t var events = getEvent(element);\n\t var isNamespace = originalTypeEvent.charAt(0) === '.';\n\n\t if (typeof originalHandler !== 'undefined') {\n\t // Simplest case: handler is passed, remove that listener ONLY.\n\t if (!events || !events[typeEvent]) {\n\t return;\n\t }\n\n\t removeHandler(element, events, typeEvent, originalHandler, delegation ? handler : null);\n\t return;\n\t }\n\n\t if (isNamespace) {\n\t Object.keys(events).forEach(function (elementEvent) {\n\t removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1));\n\t });\n\t }\n\n\t var storeElementEvent = events[typeEvent] || {};\n\t Object.keys(storeElementEvent).forEach(function (keyHandlers) {\n\t var handlerKey = keyHandlers.replace(stripUidRegex, '');\n\n\t if (!inNamespace || originalTypeEvent.indexOf(handlerKey) > -1) {\n\t var event = storeElementEvent[keyHandlers];\n\t removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector);\n\t }\n\t });\n\t },\n\t trigger: function trigger(element, event, args) {\n\t if (typeof event !== 'string' || !element) {\n\t return null;\n\t }\n\n\t var typeEvent = event.replace(stripNameRegex, '');\n\t var inNamespace = event !== typeEvent;\n\t var isNative = nativeEvents.indexOf(typeEvent) > -1;\n\t var jQueryEvent;\n\t var bubbles = true;\n\t var nativeDispatch = true;\n\t var defaultPrevented = false;\n\t var evt = null;\n\n\t if (inNamespace && $) {\n\t jQueryEvent = $.Event(event, args);\n\t $(element).trigger(jQueryEvent);\n\t bubbles = !jQueryEvent.isPropagationStopped();\n\t nativeDispatch = !jQueryEvent.isImmediatePropagationStopped();\n\t defaultPrevented = jQueryEvent.isDefaultPrevented();\n\t }\n\n\t if (isNative) {\n\t evt = document.createEvent('HTMLEvents');\n\t evt.initEvent(typeEvent, bubbles, true);\n\t } else {\n\t evt = new CustomEvent(event, {\n\t bubbles: bubbles,\n\t cancelable: true\n\t });\n\t } // merge custom informations in our event\n\n\n\t if (typeof args !== 'undefined') {\n\t Object.keys(args).forEach(function (key) {\n\t Object.defineProperty(evt, key, {\n\t get: function get() {\n\t return args[key];\n\t }\n\t });\n\t });\n\t }\n\n\t if (defaultPrevented) {\n\t evt.preventDefault();\n\n\t if (!defaultPreventedPreservedOnDispatch) {\n\t Object.defineProperty(evt, 'defaultPrevented', {\n\t get: function get() {\n\t return true;\n\t }\n\t });\n\t }\n\t }\n\n\t if (nativeDispatch) {\n\t element.dispatchEvent(evt);\n\t }\n\n\t if (evt.defaultPrevented && typeof jQueryEvent !== 'undefined') {\n\t jQueryEvent.preventDefault();\n\t }\n\n\t return evt;\n\t }\n\t};\n\n\t/**\n\t * ------------------------------------------------------------------------\n\t * Constants\n\t * ------------------------------------------------------------------------\n\t */\n\n\tvar NAME = 'alert';\n\tvar VERSION = '5.0.0-alpha1';\n\tvar DATA_KEY = 'bs.alert';\n\tvar EVENT_KEY = \".\" + DATA_KEY;\n\tvar DATA_API_KEY = '.data-api';\n\tvar SELECTOR_DISMISS = '[data-dismiss=\"alert\"]';\n\tvar EVENT_CLOSE = \"close\" + EVENT_KEY;\n\tvar EVENT_CLOSED = \"closed\" + EVENT_KEY;\n\tvar EVENT_CLICK_DATA_API = \"click\" + EVENT_KEY + DATA_API_KEY;\n\tvar CLASSNAME_ALERT = 'alert';\n\tvar CLASSNAME_FADE = 'fade';\n\tvar CLASSNAME_SHOW = 'show';\n\t/**\n\t * ------------------------------------------------------------------------\n\t * Class Definition\n\t * ------------------------------------------------------------------------\n\t */\n\n\tvar Alert = /*#__PURE__*/function () {\n\t function Alert(element) {\n\t this._element = element;\n\n\t if (this._element) {\n\t Data.setData(element, DATA_KEY, this);\n\t }\n\t } // Getters\n\n\n\t var _proto = Alert.prototype;\n\n\t // Public\n\t _proto.close = function close(element) {\n\t var rootElement = this._element;\n\n\t if (element) {\n\t rootElement = this._getRootElement(element);\n\t }\n\n\t var customEvent = this._triggerCloseEvent(rootElement);\n\n\t if (customEvent === null || customEvent.defaultPrevented) {\n\t return;\n\t }\n\n\t this._removeElement(rootElement);\n\t };\n\n\t _proto.dispose = function dispose() {\n\t Data.removeData(this._element, DATA_KEY);\n\t this._element = null;\n\t } // Private\n\t ;\n\n\t _proto._getRootElement = function _getRootElement(element) {\n\t return getElementFromSelector(element) || element.closest(\".\" + CLASSNAME_ALERT);\n\t };\n\n\t _proto._triggerCloseEvent = function _triggerCloseEvent(element) {\n\t return EventHandler.trigger(element, EVENT_CLOSE);\n\t };\n\n\t _proto._removeElement = function _removeElement(element) {\n\t var _this = this;\n\n\t element.classList.remove(CLASSNAME_SHOW);\n\n\t if (!element.classList.contains(CLASSNAME_FADE)) {\n\t this._destroyElement(element);\n\n\t return;\n\t }\n\n\t var transitionDuration = getTransitionDurationFromElement(element);\n\t EventHandler.one(element, TRANSITION_END, function () {\n\t return _this._destroyElement(element);\n\t });\n\t emulateTransitionEnd(element, transitionDuration);\n\t };\n\n\t _proto._destroyElement = function _destroyElement(element) {\n\t if (element.parentNode) {\n\t element.parentNode.removeChild(element);\n\t }\n\n\t EventHandler.trigger(element, EVENT_CLOSED);\n\t } // Static\n\t ;\n\n\t Alert.jQueryInterface = function jQueryInterface(config) {\n\t return this.each(function () {\n\t var data = Data.getData(this, DATA_KEY);\n\n\t if (!data) {\n\t data = new Alert(this);\n\t }\n\n\t if (config === 'close') {\n\t data[config](this);\n\t }\n\t });\n\t };\n\n\t Alert.handleDismiss = function handleDismiss(alertInstance) {\n\t return function (event) {\n\t if (event) {\n\t event.preventDefault();\n\t }\n\n\t alertInstance.close(this);\n\t };\n\t };\n\n\t Alert.getInstance = function getInstance(element) {\n\t return Data.getData(element, DATA_KEY);\n\t };\n\n\t _createClass(Alert, null, [{\n\t key: \"VERSION\",\n\t get: function get() {\n\t return VERSION;\n\t }\n\t }]);\n\n\t return Alert;\n\t}();\n\t/**\n\t * ------------------------------------------------------------------------\n\t * Data Api implementation\n\t * ------------------------------------------------------------------------\n\t */\n\n\n\tEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DISMISS, Alert.handleDismiss(new Alert()));\n\tvar $$1 = getjQuery();\n\t/**\n\t * ------------------------------------------------------------------------\n\t * jQuery\n\t * ------------------------------------------------------------------------\n\t * add .alert to jQuery only if jQuery is present\n\t */\n\n\t/* istanbul ignore if */\n\n\tif ($$1) {\n\t var JQUERY_NO_CONFLICT = $$1.fn[NAME];\n\t $$1.fn[NAME] = Alert.jQueryInterface;\n\t $$1.fn[NAME].Constructor = Alert;\n\n\t $$1.fn[NAME].noConflict = function () {\n\t $$1.fn[NAME] = JQUERY_NO_CONFLICT;\n\t return Alert.jQueryInterface;\n\t };\n\t}\n\n\t/**\n\t * ------------------------------------------------------------------------\n\t * Constants\n\t * ------------------------------------------------------------------------\n\t */\n\n\tvar NAME$1 = 'button';\n\tvar VERSION$1 = '5.0.0-alpha1';\n\tvar DATA_KEY$1 = 'bs.button';\n\tvar EVENT_KEY$1 = \".\" + DATA_KEY$1;\n\tvar DATA_API_KEY$1 = '.data-api';\n\tvar CLASS_NAME_ACTIVE = 'active';\n\tvar SELECTOR_DATA_TOGGLE = '[data-toggle=\"button\"]';\n\tvar EVENT_CLICK_DATA_API$1 = \"click\" + EVENT_KEY$1 + DATA_API_KEY$1;\n\t/**\n\t * ------------------------------------------------------------------------\n\t * Class Definition\n\t * ------------------------------------------------------------------------\n\t */\n\n\tvar Button = /*#__PURE__*/function () {\n\t function Button(element) {\n\t this._element = element;\n\t Data.setData(element, DATA_KEY$1, this);\n\t } // Getters\n\n\n\t var _proto = Button.prototype;\n\n\t // Public\n\t _proto.toggle = function toggle() {\n\t // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n\t this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE));\n\t };\n\n\t _proto.dispose = function dispose() {\n\t Data.removeData(this._element, DATA_KEY$1);\n\t this._element = null;\n\t } // Static\n\t ;\n\n\t Button.jQueryInterface = function jQueryInterface(config) {\n\t return this.each(function () {\n\t var data = Data.getData(this, DATA_KEY$1);\n\n\t if (!data) {\n\t data = new Button(this);\n\t }\n\n\t if (config === 'toggle') {\n\t data[config]();\n\t }\n\t });\n\t };\n\n\t Button.getInstance = function getInstance(element) {\n\t return Data.getData(element, DATA_KEY$1);\n\t };\n\n\t _createClass(Button, null, [{\n\t key: \"VERSION\",\n\t get: function get() {\n\t return VERSION$1;\n\t }\n\t }]);\n\n\t return Button;\n\t}();\n\t/**\n\t * ------------------------------------------------------------------------\n\t * Data Api implementation\n\t * ------------------------------------------------------------------------\n\t */\n\n\n\tEventHandler.on(document, EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE, function (event) {\n\t event.preventDefault();\n\t var button = event.target.closest(SELECTOR_DATA_TOGGLE);\n\t var data = Data.getData(button, DATA_KEY$1);\n\n\t if (!data) {\n\t data = new Button(button);\n\t }\n\n\t data.toggle();\n\t});\n\tvar $$2 = getjQuery();\n\t/**\n\t * ------------------------------------------------------------------------\n\t * jQuery\n\t * ------------------------------------------------------------------------\n\t * add .button to jQuery only if jQuery is present\n\t */\n\n\t/* istanbul ignore if */\n\n\tif ($$2) {\n\t var JQUERY_NO_CONFLICT$1 = $$2.fn[NAME$1];\n\t $$2.fn[NAME$1] = Button.jQueryInterface;\n\t $$2.fn[NAME$1].Constructor = Button;\n\n\t $$2.fn[NAME$1].noConflict = function () {\n\t $$2.fn[NAME$1] = JQUERY_NO_CONFLICT$1;\n\t return Button.jQueryInterface;\n\t };\n\t}\n\n\t/**\n\t * --------------------------------------------------------------------------\n\t * Bootstrap (v5.0.0-alpha1): dom/manipulator.js\n\t * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n\t * --------------------------------------------------------------------------\n\t */\n\tfunction normalizeData(val) {\n\t if (val === 'true') {\n\t return true;\n\t }\n\n\t if (val === 'false') {\n\t return false;\n\t }\n\n\t if (val === Number(val).toString()) {\n\t return Number(val);\n\t }\n\n\t if (val === '' || val === 'null') {\n\t return null;\n\t }\n\n\t return val;\n\t}\n\n\tfunction normalizeDataKey(key) {\n\t return key.replace(/[A-Z]/g, function (chr) {\n\t return \"-\" + chr.toLowerCase();\n\t });\n\t}\n\n\tvar Manipulator = {\n\t setDataAttribute: function setDataAttribute(element, key, value) {\n\t element.setAttribute(\"data-\" + normalizeDataKey(key), value);\n\t },\n\t removeDataAttribute: function removeDataAttribute(element, key) {\n\t element.removeAttribute(\"data-\" + normalizeDataKey(key));\n\t },\n\t getDataAttributes: function getDataAttributes(element) {\n\t if (!element) {\n\t return {};\n\t }\n\n\t var attributes = _objectSpread2({}, element.dataset);\n\n\t Object.keys(attributes).forEach(function (key) {\n\t attributes[key] = normalizeData(attributes[key]);\n\t });\n\t return attributes;\n\t },\n\t getDataAttribute: function getDataAttribute(element, key) {\n\t return normalizeData(element.getAttribute(\"data-\" + normalizeDataKey(key)));\n\t },\n\t offset: function offset(element) {\n\t var rect = element.getBoundingClientRect();\n\t return {\n\t top: rect.top + document.body.scrollTop,\n\t left: rect.left + document.body.scrollLeft\n\t };\n\t },\n\t position: function position(element) {\n\t return {\n\t top: element.offsetTop,\n\t left: element.offsetLeft\n\t };\n\t },\n\t toggleClass: function toggleClass(element, className) {\n\t if (!element) {\n\t return;\n\t }\n\n\t if (element.classList.contains(className)) {\n\t element.classList.remove(className);\n\t } else {\n\t element.classList.add(className);\n\t }\n\t }\n\t};\n\n\t/**\n\t * --------------------------------------------------------------------------\n\t * Bootstrap (v5.0.0-alpha1): dom/selector-engine.js\n\t * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n\t * --------------------------------------------------------------------------\n\t */\n\t/**\n\t * ------------------------------------------------------------------------\n\t * Constants\n\t * ------------------------------------------------------------------------\n\t */\n\n\tvar NODE_TEXT = 3;\n\tvar SelectorEngine = {\n\t matches: function matches(element, selector) {\n\t return element.matches(selector);\n\t },\n\t find: function find$1$1(selector, element) {\n\t var _ref;\n\n\t if (element === void 0) {\n\t element = document.documentElement;\n\t }\n\n\t return (_ref = []).concat.apply(_ref, find$1.call(element, selector));\n\t },\n\t findOne: function findOne$1(selector, element) {\n\t if (element === void 0) {\n\t element = document.documentElement;\n\t }\n\n\t return findOne.call(element, selector);\n\t },\n\t children: function children(element, selector) {\n\t var _ref2;\n\n\t var children = (_ref2 = []).concat.apply(_ref2, element.children);\n\n\t return children.filter(function (child) {\n\t return child.matches(selector);\n\t });\n\t },\n\t parents: function parents(element, selector) {\n\t var parents = [];\n\t var ancestor = element.parentNode;\n\n\t while (ancestor && ancestor.nodeType === Node.ELEMENT_NODE && ancestor.nodeType !== NODE_TEXT) {\n\t if (this.matches(ancestor, selector)) {\n\t parents.push(ancestor);\n\t }\n\n\t ancestor = ancestor.parentNode;\n\t }\n\n\t return parents;\n\t },\n\t prev: function prev(element, selector) {\n\t var previous = element.previousElementSibling;\n\n\t while (previous) {\n\t if (previous.matches(selector)) {\n\t return [previous];\n\t }\n\n\t previous = previous.previousElementSibling;\n\t }\n\n\t return [];\n\t },\n\t next: function next(element, selector) {\n\t var next = element.nextElementSibling;\n\n\t while (next) {\n\t if (this.matches(next, selector)) {\n\t return [next];\n\t }\n\n\t next = next.nextElementSibling;\n\t }\n\n\t return [];\n\t }\n\t};\n\n\t/**\n\t * ------------------------------------------------------------------------\n\t * Constants\n\t * ------------------------------------------------------------------------\n\t */\n\n\tvar NAME$2 = 'carousel';\n\tvar VERSION$2 = '5.0.0-alpha1';\n\tvar DATA_KEY$2 = 'bs.carousel';\n\tvar EVENT_KEY$2 = \".\" + DATA_KEY$2;\n\tvar DATA_API_KEY$2 = '.data-api';\n\tvar ARROW_LEFT_KEY = 'ArrowLeft';\n\tvar ARROW_RIGHT_KEY = 'ArrowRight';\n\tvar TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch\n\n\tvar SWIPE_THRESHOLD = 40;\n\tvar Default = {\n\t interval: 5000,\n\t keyboard: true,\n\t slide: false,\n\t pause: 'hover',\n\t wrap: true,\n\t touch: true\n\t};\n\tvar DefaultType = {\n\t interval: '(number|boolean)',\n\t keyboard: 'boolean',\n\t slide: '(boolean|string)',\n\t pause: '(string|boolean)',\n\t wrap: 'boolean',\n\t touch: 'boolean'\n\t};\n\tvar DIRECTION_NEXT = 'next';\n\tvar DIRECTION_PREV = 'prev';\n\tvar DIRECTION_LEFT = 'left';\n\tvar DIRECTION_RIGHT = 'right';\n\tvar EVENT_SLIDE = \"slide\" + EVENT_KEY$2;\n\tvar EVENT_SLID = \"slid\" + EVENT_KEY$2;\n\tvar EVENT_KEYDOWN = \"keydown\" + EVENT_KEY$2;\n\tvar EVENT_MOUSEENTER = \"mouseenter\" + EVENT_KEY$2;\n\tvar EVENT_MOUSELEAVE = \"mouseleave\" + EVENT_KEY$2;\n\tvar EVENT_TOUCHSTART = \"touchstart\" + EVENT_KEY$2;\n\tvar EVENT_TOUCHMOVE = \"touchmove\" + EVENT_KEY$2;\n\tvar EVENT_TOUCHEND = \"touchend\" + EVENT_KEY$2;\n\tvar EVENT_POINTERDOWN = \"pointerdown\" + EVENT_KEY$2;\n\tvar EVENT_POINTERUP = \"pointerup\" + EVENT_KEY$2;\n\tvar EVENT_DRAG_START = \"dragstart\" + EVENT_KEY$2;\n\tvar EVENT_LOAD_DATA_API = \"load\" + EVENT_KEY$2 + DATA_API_KEY$2;\n\tvar EVENT_CLICK_DATA_API$2 = \"click\" + EVENT_KEY$2 + DATA_API_KEY$2;\n\tvar CLASS_NAME_CAROUSEL = 'carousel';\n\tvar CLASS_NAME_ACTIVE$1 = 'active';\n\tvar CLASS_NAME_SLIDE = 'slide';\n\tvar CLASS_NAME_RIGHT = 'carousel-item-right';\n\tvar CLASS_NAME_LEFT = 'carousel-item-left';\n\tvar CLASS_NAME_NEXT = 'carousel-item-next';\n\tvar CLASS_NAME_PREV = 'carousel-item-prev';\n\tvar CLASS_NAME_POINTER_EVENT = 'pointer-event';\n\tvar SELECTOR_ACTIVE = '.active';\n\tvar SELECTOR_ACTIVE_ITEM = '.active.carousel-item';\n\tvar SELECTOR_ITEM = '.carousel-item';\n\tvar SELECTOR_ITEM_IMG = '.carousel-item img';\n\tvar SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev';\n\tvar SELECTOR_INDICATORS = '.carousel-indicators';\n\tvar SELECTOR_DATA_SLIDE = '[data-slide], [data-slide-to]';\n\tvar SELECTOR_DATA_RIDE = '[data-ride=\"carousel\"]';\n\tvar PointerType = {\n\t TOUCH: 'touch',\n\t PEN: 'pen'\n\t};\n\t/**\n\t * ------------------------------------------------------------------------\n\t * Class Definition\n\t * ------------------------------------------------------------------------\n\t */\n\n\tvar Carousel = /*#__PURE__*/function () {\n\t function Carousel(element, config) {\n\t this._items = null;\n\t this._interval = null;\n\t this._activeElement = null;\n\t this._isPaused = false;\n\t this._isSliding = false;\n\t this.touchTimeout = null;\n\t this.touchStartX = 0;\n\t this.touchDeltaX = 0;\n\t this._config = this._getConfig(config);\n\t this._element = element;\n\t this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element);\n\t this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;\n\t this._pointerEvent = Boolean(window.PointerEvent);\n\n\t this._addEventListeners();\n\n\t Data.setData(element, DATA_KEY$2, this);\n\t } // Getters\n\n\n\t var _proto = Carousel.prototype;\n\n\t // Public\n\t _proto.next = function next() {\n\t if (!this._isSliding) {\n\t this._slide(DIRECTION_NEXT);\n\t }\n\t };\n\n\t _proto.nextWhenVisible = function nextWhenVisible() {\n\t // Don't call next when the page isn't visible\n\t // or the carousel or its parent isn't visible\n\t if (!document.hidden && isVisible(this._element)) {\n\t this.next();\n\t }\n\t };\n\n\t _proto.prev = function prev() {\n\t if (!this._isSliding) {\n\t this._slide(DIRECTION_PREV);\n\t }\n\t };\n\n\t _proto.pause = function pause(event) {\n\t if (!event) {\n\t this._isPaused = true;\n\t }\n\n\t if (SelectorEngine.findOne(SELECTOR_NEXT_PREV, this._element)) {\n\t triggerTransitionEnd(this._element);\n\t this.cycle(true);\n\t }\n\n\t clearInterval(this._interval);\n\t this._interval = null;\n\t };\n\n\t _proto.cycle = function cycle(event) {\n\t if (!event) {\n\t this._isPaused = false;\n\t }\n\n\t if (this._interval) {\n\t clearInterval(this._interval);\n\t this._interval = null;\n\t }\n\n\t if (this._config && this._config.interval && !this._isPaused) {\n\t this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval);\n\t }\n\t };\n\n\t _proto.to = function to(index) {\n\t var _this = this;\n\n\t this._activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);\n\n\t var activeIndex = this._getItemIndex(this._activeElement);\n\n\t if (index > this._items.length - 1 || index < 0) {\n\t return;\n\t }\n\n\t if (this._isSliding) {\n\t EventHandler.one(this._element, EVENT_SLID, function () {\n\t return _this.to(index);\n\t });\n\t return;\n\t }\n\n\t if (activeIndex === index) {\n\t this.pause();\n\t this.cycle();\n\t return;\n\t }\n\n\t var direction = index > activeIndex ? DIRECTION_NEXT : DIRECTION_PREV;\n\n\t this._slide(direction, this._items[index]);\n\t };\n\n\t _proto.dispose = function dispose() {\n\t EventHandler.off(this._element, EVENT_KEY$2);\n\t Data.removeData(this._element, DATA_KEY$2);\n\t this._items = null;\n\t this._config = null;\n\t this._element = null;\n\t this._interval = null;\n\t this._isPaused = null;\n\t this._isSliding = null;\n\t this._activeElement = null;\n\t this._indicatorsElement = null;\n\t } // Private\n\t ;\n\n\t _proto._getConfig = function _getConfig(config) {\n\t config = _objectSpread2(_objectSpread2({}, Default), config);\n\t typeCheckConfig(NAME$2, config, DefaultType);\n\t return config;\n\t };\n\n\t _proto._handleSwipe = function _handleSwipe() {\n\t var absDeltax = Math.abs(this.touchDeltaX);\n\n\t if (absDeltax <= SWIPE_THRESHOLD) {\n\t return;\n\t }\n\n\t var direction = absDeltax / this.touchDeltaX;\n\t this.touchDeltaX = 0; // swipe left\n\n\t if (direction > 0) {\n\t this.prev();\n\t } // swipe right\n\n\n\t if (direction < 0) {\n\t this.next();\n\t }\n\t };\n\n\t _proto._addEventListeners = function _addEventListeners() {\n\t var _this2 = this;\n\n\t if (this._config.keyboard) {\n\t EventHandler.on(this._element, EVENT_KEYDOWN, function (event) {\n\t return _this2._keydown(event);\n\t });\n\t }\n\n\t if (this._config.pause === 'hover') {\n\t EventHandler.on(this._element, EVENT_MOUSEENTER, function (event) {\n\t return _this2.pause(event);\n\t });\n\t EventHandler.on(this._element, EVENT_MOUSELEAVE, function (event) {\n\t return _this2.cycle(event);\n\t });\n\t }\n\n\t if (this._config.touch && this._touchSupported) {\n\t this._addTouchEventListeners();\n\t }\n\t };\n\n\t _proto._addTouchEventListeners = function _addTouchEventListeners() {\n\t var _this3 = this;\n\n\t var start = function start(event) {\n\t if (_this3._pointerEvent && PointerType[event.pointerType.toUpperCase()]) {\n\t _this3.touchStartX = event.clientX;\n\t } else if (!_this3._pointerEvent) {\n\t _this3.touchStartX = event.touches[0].clientX;\n\t }\n\t };\n\n\t var move = function move(event) {\n\t // ensure swiping with one touch and not pinching\n\t if (event.touches && event.touches.length > 1) {\n\t _this3.touchDeltaX = 0;\n\t } else {\n\t _this3.touchDeltaX = event.touches[0].clientX - _this3.touchStartX;\n\t }\n\t };\n\n\t var end = function end(event) {\n\t if (_this3._pointerEvent && PointerType[event.pointerType.toUpperCase()]) {\n\t _this3.touchDeltaX = event.clientX - _this3.touchStartX;\n\t }\n\n\t _this3._handleSwipe();\n\n\t if (_this3._config.pause === 'hover') {\n\t // If it's a touch-enabled device, mouseenter/leave are fired as\n\t // part of the mouse compatibility events on first tap - the carousel\n\t // would stop cycling until user tapped out of it;\n\t // here, we listen for touchend, explicitly pause the carousel\n\t // (as if it's the second time we tap on it, mouseenter compat event\n\t // is NOT fired) and after a timeout (to allow for mouse compatibility\n\t // events to fire) we explicitly restart cycling\n\t _this3.pause();\n\n\t if (_this3.touchTimeout) {\n\t clearTimeout(_this3.touchTimeout);\n\t }\n\n\t _this3.touchTimeout = setTimeout(function (event) {\n\t return _this3.cycle(event);\n\t }, TOUCHEVENT_COMPAT_WAIT + _this3._config.interval);\n\t }\n\t };\n\n\t SelectorEngine.find(SELECTOR_ITEM_IMG, this._element).forEach(function (itemImg) {\n\t EventHandler.on(itemImg, EVENT_DRAG_START, function (e) {\n\t return e.preventDefault();\n\t });\n\t });\n\n\t if (this._pointerEvent) {\n\t EventHandler.on(this._element, EVENT_POINTERDOWN, function (event) {\n\t return start(event);\n\t });\n\t EventHandler.on(this._element, EVENT_POINTERUP, function (event) {\n\t return end(event);\n\t });\n\n\t this._element.classList.add(CLASS_NAME_POINTER_EVENT);\n\t } else {\n\t EventHandler.on(this._element, EVENT_TOUCHSTART, function (event) {\n\t return start(event);\n\t });\n\t EventHandler.on(this._element, EVENT_TOUCHMOVE, function (event) {\n\t return move(event);\n\t });\n\t EventHandler.on(this._element, EVENT_TOUCHEND, function (event) {\n\t return end(event);\n\t });\n\t }\n\t };\n\n\t _proto._keydown = function _keydown(event) {\n\t if (/input|textarea/i.test(event.target.tagName)) {\n\t return;\n\t }\n\n\t switch (event.key) {\n\t case ARROW_LEFT_KEY:\n\t event.preventDefault();\n\t this.prev();\n\t break;\n\n\t case ARROW_RIGHT_KEY:\n\t event.preventDefault();\n\t this.next();\n\t break;\n\t }\n\t };\n\n\t _proto._getItemIndex = function _getItemIndex(element) {\n\t this._items = element && element.parentNode ? SelectorEngine.find(SELECTOR_ITEM, element.parentNode) : [];\n\t return this._items.indexOf(element);\n\t };\n\n\t _proto._getItemByDirection = function _getItemByDirection(direction, activeElement) {\n\t var isNextDirection = direction === DIRECTION_NEXT;\n\t var isPrevDirection = direction === DIRECTION_PREV;\n\n\t var activeIndex = this._getItemIndex(activeElement);\n\n\t var lastItemIndex = this._items.length - 1;\n\t var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex === lastItemIndex;\n\n\t if (isGoingToWrap && !this._config.wrap) {\n\t return activeElement;\n\t }\n\n\t var delta = direction === DIRECTION_PREV ? -1 : 1;\n\t var itemIndex = (activeIndex + delta) % this._items.length;\n\t return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex];\n\t };\n\n\t _proto._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) {\n\t var targetIndex = this._getItemIndex(relatedTarget);\n\n\t var fromIndex = this._getItemIndex(SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element));\n\n\t return EventHandler.trigger(this._element, EVENT_SLIDE, {\n\t relatedTarget: relatedTarget,\n\t direction: eventDirectionName,\n\t from: fromIndex,\n\t to: targetIndex\n\t });\n\t };\n\n\t _proto._setActiveIndicatorElement = function _setActiveIndicatorElement(element) {\n\t if (this._indicatorsElement) {\n\t var indicators = SelectorEngine.find(SELECTOR_ACTIVE, this._indicatorsElement);\n\n\t for (var i = 0; i < indicators.length; i++) {\n\t indicators[i].classList.remove(CLASS_NAME_ACTIVE$1);\n\t }\n\n\t var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)];\n\n\t if (nextIndicator) {\n\t nextIndicator.classList.add(CLASS_NAME_ACTIVE$1);\n\t }\n\t }\n\t };\n\n\t _proto._slide = function _slide(direction, element) {\n\t var _this4 = this;\n\n\t var activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);\n\n\t var activeElementIndex = this._getItemIndex(activeElement);\n\n\t var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement);\n\n\t var nextElementIndex = this._getItemIndex(nextElement);\n\n\t var isCycling = Boolean(this._interval);\n\t var directionalClassName;\n\t var orderClassName;\n\t var eventDirectionName;\n\n\t if (direction === DIRECTION_NEXT) {\n\t directionalClassName = CLASS_NAME_LEFT;\n\t orderClassName = CLASS_NAME_NEXT;\n\t eventDirectionName = DIRECTION_LEFT;\n\t } else {\n\t directionalClassName = CLASS_NAME_RIGHT;\n\t orderClassName = CLASS_NAME_PREV;\n\t eventDirectionName = DIRECTION_RIGHT;\n\t }\n\n\t if (nextElement && nextElement.classList.contains(CLASS_NAME_ACTIVE$1)) {\n\t this._isSliding = false;\n\t return;\n\t }\n\n\t var slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName);\n\n\t if (slideEvent.defaultPrevented) {\n\t return;\n\t }\n\n\t if (!activeElement || !nextElement) {\n\t // Some weirdness is happening, so we bail\n\t return;\n\t }\n\n\t this._isSliding = true;\n\n\t if (isCycling) {\n\t this.pause();\n\t }\n\n\t this._setActiveIndicatorElement(nextElement);\n\n\t if (this._element.classList.contains(CLASS_NAME_SLIDE)) {\n\t nextElement.classList.add(orderClassName);\n\t reflow(nextElement);\n\t activeElement.classList.add(directionalClassName);\n\t nextElement.classList.add(directionalClassName);\n\t var nextElementInterval = parseInt(nextElement.getAttribute('data-interval'), 10);\n\n\t if (nextElementInterval) {\n\t this._config.defaultInterval = this._config.defaultInterval || this._config.interval;\n\t this._config.interval = nextElementInterval;\n\t } else {\n\t this._config.interval = this._config.defaultInterval || this._config.interval;\n\t }\n\n\t var transitionDuration = getTransitionDurationFromElement(activeElement);\n\t EventHandler.one(activeElement, TRANSITION_END, function () {\n\t nextElement.classList.remove(directionalClassName, orderClassName);\n\t nextElement.classList.add(CLASS_NAME_ACTIVE$1);\n\t activeElement.classList.remove(CLASS_NAME_ACTIVE$1, orderClassName, directionalClassName);\n\t _this4._isSliding = false;\n\t setTimeout(function () {\n\t EventHandler.trigger(_this4._element, EVENT_SLID, {\n\t relatedTarget: nextElement,\n\t direction: eventDirectionName,\n\t from: activeElementIndex,\n\t to: nextElementIndex\n\t });\n\t }, 0);\n\t });\n\t emulateTransitionEnd(activeElement, transitionDuration);\n\t } else {\n\t activeElement.classList.remove(CLASS_NAME_ACTIVE$1);\n\t nextElement.classList.add(CLASS_NAME_ACTIVE$1);\n\t this._isSliding = false;\n\t EventHandler.trigger(this._element, EVENT_SLID, {\n\t relatedTarget: nextElement,\n\t direction: eventDirectionName,\n\t from: activeElementIndex,\n\t to: nextElementIndex\n\t });\n\t }\n\n\t if (isCycling) {\n\t this.cycle();\n\t }\n\t } // Static\n\t ;\n\n\t Carousel.carouselInterface = function carouselInterface(element, config) {\n\t var data = Data.getData(element, DATA_KEY$2);\n\n\t var _config = _objectSpread2(_objectSpread2({}, Default), Manipulator.getDataAttributes(element));\n\n\t if (typeof config === 'object') {\n\t _config = _objectSpread2(_objectSpread2({}, _config), config);\n\t }\n\n\t var action = typeof config === 'string' ? config : _config.slide;\n\n\t if (!data) {\n\t data = new Carousel(element, _config);\n\t }\n\n\t if (typeof config === 'number') {\n\t data.to(config);\n\t } else if (typeof action === 'string') {\n\t if (typeof data[action] === 'undefined') {\n\t throw new TypeError(\"No method named \\\"\" + action + \"\\\"\");\n\t }\n\n\t data[action]();\n\t } else if (_config.interval && _config.ride) {\n\t data.pause();\n\t data.cycle();\n\t }\n\t };\n\n\t Carousel.jQueryInterface = function jQueryInterface(config) {\n\t return this.each(function () {\n\t Carousel.carouselInterface(this, config);\n\t });\n\t };\n\n\t Carousel.dataApiClickHandler = function dataApiClickHandler(event) {\n\t var target = getElementFromSelector(this);\n\n\t if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n\t return;\n\t }\n\n\t var config = _objectSpread2(_objectSpread2({}, Manipulator.getDataAttributes(target)), Manipulator.getDataAttributes(this));\n\n\t var slideIndex = this.getAttribute('data-slide-to');\n\n\t if (slideIndex) {\n\t config.interval = false;\n\t }\n\n\t Carousel.carouselInterface(target, config);\n\n\t if (slideIndex) {\n\t Data.getData(target, DATA_KEY$2).to(slideIndex);\n\t }\n\n\t event.preventDefault();\n\t };\n\n\t Carousel.getInstance = function getInstance(element) {\n\t return Data.getData(element, DATA_KEY$2);\n\t };\n\n\t _createClass(Carousel, null, [{\n\t key: \"VERSION\",\n\t get: function get() {\n\t return VERSION$2;\n\t }\n\t }, {\n\t key: \"Default\",\n\t get: function get() {\n\t return Default;\n\t }\n\t }]);\n\n\t return Carousel;\n\t}();\n\t/**\n\t * ------------------------------------------------------------------------\n\t * Data Api implementation\n\t * ------------------------------------------------------------------------\n\t */\n\n\n\tEventHandler.on(document, EVENT_CLICK_DATA_API$2, SELECTOR_DATA_SLIDE, Carousel.dataApiClickHandler);\n\tEventHandler.on(window, EVENT_LOAD_DATA_API, function () {\n\t var carousels = SelectorEngine.find(SELECTOR_DATA_RIDE);\n\n\t for (var i = 0, len = carousels.length; i < len; i++) {\n\t Carousel.carouselInterface(carousels[i], Data.getData(carousels[i], DATA_KEY$2));\n\t }\n\t});\n\tvar $$3 = getjQuery();\n\t/**\n\t * ------------------------------------------------------------------------\n\t * jQuery\n\t * ------------------------------------------------------------------------\n\t * add .carousel to jQuery only if jQuery is present\n\t */\n\n\t/* istanbul ignore if */\n\n\tif ($$3) {\n\t var JQUERY_NO_CONFLICT$2 = $$3.fn[NAME$2];\n\t $$3.fn[NAME$2] = Carousel.jQueryInterface;\n\t $$3.fn[NAME$2].Constructor = Carousel;\n\n\t $$3.fn[NAME$2].noConflict = function () {\n\t $$3.fn[NAME$2] = JQUERY_NO_CONFLICT$2;\n\t return Carousel.jQueryInterface;\n\t };\n\t}\n\n\t/**\n\t * ------------------------------------------------------------------------\n\t * Constants\n\t * ------------------------------------------------------------------------\n\t */\n\n\tvar NAME$3 = 'collapse';\n\tvar VERSION$3 = '5.0.0-alpha1';\n\tvar DATA_KEY$3 = 'bs.collapse';\n\tvar EVENT_KEY$3 = \".\" + DATA_KEY$3;\n\tvar DATA_API_KEY$3 = '.data-api';\n\tvar Default$1 = {\n\t toggle: true,\n\t parent: ''\n\t};\n\tvar DefaultType$1 = {\n\t toggle: 'boolean',\n\t parent: '(string|element)'\n\t};\n\tvar EVENT_SHOW = \"show\" + EVENT_KEY$3;\n\tvar EVENT_SHOWN = \"shown\" + EVENT_KEY$3;\n\tvar EVENT_HIDE = \"hide\" + EVENT_KEY$3;\n\tvar EVENT_HIDDEN = \"hidden\" + EVENT_KEY$3;\n\tvar EVENT_CLICK_DATA_API$3 = \"click\" + EVENT_KEY$3 + DATA_API_KEY$3;\n\tvar CLASS_NAME_SHOW = 'show';\n\tvar CLASS_NAME_COLLAPSE = 'collapse';\n\tvar CLASS_NAME_COLLAPSING = 'collapsing';\n\tvar CLASS_NAME_COLLAPSED = 'collapsed';\n\tvar WIDTH = 'width';\n\tvar HEIGHT = 'height';\n\tvar SELECTOR_ACTIVES = '.show, .collapsing';\n\tvar SELECTOR_DATA_TOGGLE$1 = '[data-toggle=\"collapse\"]';\n\t/**\n\t * ------------------------------------------------------------------------\n\t * Class Definition\n\t * ------------------------------------------------------------------------\n\t */\n\n\tvar Collapse = /*#__PURE__*/function () {\n\t function Collapse(element, config) {\n\t this._isTransitioning = false;\n\t this._element = element;\n\t this._config = this._getConfig(config);\n\t this._triggerArray = SelectorEngine.find(SELECTOR_DATA_TOGGLE$1 + \"[href=\\\"#\" + element.id + \"\\\"],\" + (SELECTOR_DATA_TOGGLE$1 + \"[data-target=\\\"#\" + element.id + \"\\\"]\"));\n\t var toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE$1);\n\n\t for (var i = 0, len = toggleList.length; i < len; i++) {\n\t var elem = toggleList[i];\n\t var selector = getSelectorFromElement(elem);\n\t var filterElement = SelectorEngine.find(selector).filter(function (foundElem) {\n\t return foundElem === element;\n\t });\n\n\t if (selector !== null && filterElement.length) {\n\t this._selector = selector;\n\n\t this._triggerArray.push(elem);\n\t }\n\t }\n\n\t this._parent = this._config.parent ? this._getParent() : null;\n\n\t if (!this._config.parent) {\n\t this._addAriaAndCollapsedClass(this._element, this._triggerArray);\n\t }\n\n\t if (this._config.toggle) {\n\t this.toggle();\n\t }\n\n\t Data.setData(element, DATA_KEY$3, this);\n\t } // Getters\n\n\n\t var _proto = Collapse.prototype;\n\n\t // Public\n\t _proto.toggle = function toggle() {\n\t if (this._element.classList.contains(CLASS_NAME_SHOW)) {\n\t this.hide();\n\t } else {\n\t this.show();\n\t }\n\t };\n\n\t _proto.show = function show() {\n\t var _this = this;\n\n\t if (this._isTransitioning || this._element.classList.contains(CLASS_NAME_SHOW)) {\n\t return;\n\t }\n\n\t var actives;\n\t var activesData;\n\n\t if (this._parent) {\n\t actives = SelectorEngine.find(SELECTOR_ACTIVES, this._parent).filter(function (elem) {\n\t if (typeof _this._config.parent === 'string') {\n\t return elem.getAttribute('data-parent') === _this._config.parent;\n\t }\n\n\t return elem.classList.contains(CLASS_NAME_COLLAPSE);\n\t });\n\n\t if (actives.length === 0) {\n\t actives = null;\n\t }\n\t }\n\n\t var container = SelectorEngine.findOne(this._selector);\n\n\t if (actives) {\n\t var tempActiveData = actives.filter(function (elem) {\n\t return container !== elem;\n\t });\n\t activesData = tempActiveData[0] ? Data.getData(tempActiveData[0], DATA_KEY$3) : null;\n\n\t if (activesData && activesData._isTransitioning) {\n\t return;\n\t }\n\t }\n\n\t var startEvent = EventHandler.trigger(this._element, EVENT_SHOW);\n\n\t if (startEvent.defaultPrevented) {\n\t return;\n\t }\n\n\t if (actives) {\n\t actives.forEach(function (elemActive) {\n\t if (container !== elemActive) {\n\t Collapse.collapseInterface(elemActive, 'hide');\n\t }\n\n\t if (!activesData) {\n\t Data.setData(elemActive, DATA_KEY$3, null);\n\t }\n\t });\n\t }\n\n\t var dimension = this._getDimension();\n\n\t this._element.classList.remove(CLASS_NAME_COLLAPSE);\n\n\t this._element.classList.add(CLASS_NAME_COLLAPSING);\n\n\t this._element.style[dimension] = 0;\n\n\t if (this._triggerArray.length) {\n\t this._triggerArray.forEach(function (element) {\n\t element.classList.remove(CLASS_NAME_COLLAPSED);\n\t element.setAttribute('aria-expanded', true);\n\t });\n\t }\n\n\t this.setTransitioning(true);\n\n\t var complete = function complete() {\n\t _this._element.classList.remove(CLASS_NAME_COLLAPSING);\n\n\t _this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW);\n\n\t _this._element.style[dimension] = '';\n\n\t _this.setTransitioning(false);\n\n\t EventHandler.trigger(_this._element, EVENT_SHOWN);\n\t };\n\n\t var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);\n\t var scrollSize = \"scroll\" + capitalizedDimension;\n\t var transitionDuration = getTransitionDurationFromElement(this._element);\n\t EventHandler.one(this._element, TRANSITION_END, complete);\n\t emulateTransitionEnd(this._element, transitionDuration);\n\t this._element.style[dimension] = this._element[scrollSize] + \"px\";\n\t };\n\n\t _proto.hide = function hide() {\n\t var _this2 = this;\n\n\t if (this._isTransitioning || !this._element.classList.contains(CLASS_NAME_SHOW)) {\n\t return;\n\t }\n\n\t var startEvent = EventHandler.trigger(this._element, EVENT_HIDE);\n\n\t if (startEvent.defaultPrevented) {\n\t return;\n\t }\n\n\t var dimension = this._getDimension();\n\n\t this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + \"px\";\n\t reflow(this._element);\n\n\t this._element.classList.add(CLASS_NAME_COLLAPSING);\n\n\t this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW);\n\n\t var triggerArrayLength = this._triggerArray.length;\n\n\t if (triggerArrayLength > 0) {\n\t for (var i = 0; i < triggerArrayLength; i++) {\n\t var trigger = this._triggerArray[i];\n\t var elem = getElementFromSelector(trigger);\n\n\t if (elem && !elem.classList.contains(CLASS_NAME_SHOW)) {\n\t trigger.classList.add(CLASS_NAME_COLLAPSED);\n\t trigger.setAttribute('aria-expanded', false);\n\t }\n\t }\n\t }\n\n\t this.setTransitioning(true);\n\n\t var complete = function complete() {\n\t _this2.setTransitioning(false);\n\n\t _this2._element.classList.remove(CLASS_NAME_COLLAPSING);\n\n\t _this2._element.classList.add(CLASS_NAME_COLLAPSE);\n\n\t EventHandler.trigger(_this2._element, EVENT_HIDDEN);\n\t };\n\n\t this._element.style[dimension] = '';\n\t var transitionDuration = getTransitionDurationFromElement(this._element);\n\t EventHandler.one(this._element, TRANSITION_END, complete);\n\t emulateTransitionEnd(this._element, transitionDuration);\n\t };\n\n\t _proto.setTransitioning = function setTransitioning(isTransitioning) {\n\t this._isTransitioning = isTransitioning;\n\t };\n\n\t _proto.dispose = function dispose() {\n\t Data.removeData(this._element, DATA_KEY$3);\n\t this._config = null;\n\t this._parent = null;\n\t this._element = null;\n\t this._triggerArray = null;\n\t this._isTransitioning = null;\n\t } // Private\n\t ;\n\n\t _proto._getConfig = function _getConfig(config) {\n\t config = _objectSpread2(_objectSpread2({}, Default$1), config);\n\t config.toggle = Boolean(config.toggle); // Coerce string values\n\n\t typeCheckConfig(NAME$3, config, DefaultType$1);\n\t return config;\n\t };\n\n\t _proto._getDimension = function _getDimension() {\n\t var hasWidth = this._element.classList.contains(WIDTH);\n\n\t return hasWidth ? WIDTH : HEIGHT;\n\t };\n\n\t _proto._getParent = function _getParent() {\n\t var _this3 = this;\n\n\t var parent = this._config.parent;\n\n\t if (isElement(parent)) {\n\t // it's a jQuery object\n\t if (typeof parent.jquery !== 'undefined' || typeof parent[0] !== 'undefined') {\n\t parent = parent[0];\n\t }\n\t } else {\n\t parent = SelectorEngine.findOne(parent);\n\t }\n\n\t var selector = SELECTOR_DATA_TOGGLE$1 + \"[data-parent=\\\"\" + parent + \"\\\"]\";\n\t SelectorEngine.find(selector, parent).forEach(function (element) {\n\t var selected = getElementFromSelector(element);\n\n\t _this3._addAriaAndCollapsedClass(selected, [element]);\n\t });\n\t return parent;\n\t };\n\n\t _proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) {\n\t if (element) {\n\t var isOpen = element.classList.contains(CLASS_NAME_SHOW);\n\n\t if (triggerArray.length) {\n\t triggerArray.forEach(function (elem) {\n\t if (isOpen) {\n\t elem.classList.remove(CLASS_NAME_COLLAPSED);\n\t } else {\n\t elem.classList.add(CLASS_NAME_COLLAPSED);\n\t }\n\n\t elem.setAttribute('aria-expanded', isOpen);\n\t });\n\t }\n\t }\n\t } // Static\n\t ;\n\n\t Collapse.collapseInterface = function collapseInterface(element, config) {\n\t var data = Data.getData(element, DATA_KEY$3);\n\n\t var _config = _objectSpread2(_objectSpread2(_objectSpread2({}, Default$1), Manipulator.getDataAttributes(element)), typeof config === 'object' && config ? config : {});\n\n\t if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) {\n\t _config.toggle = false;\n\t }\n\n\t if (!data) {\n\t data = new Collapse(element, _config);\n\t }\n\n\t if (typeof config === 'string') {\n\t if (typeof data[config] === 'undefined') {\n\t throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n\t }\n\n\t data[config]();\n\t }\n\t };\n\n\t Collapse.jQueryInterface = function jQueryInterface(config) {\n\t return this.each(function () {\n\t Collapse.collapseInterface(this, config);\n\t });\n\t };\n\n\t Collapse.getInstance = function getInstance(element) {\n\t return Data.getData(element, DATA_KEY$3);\n\t };\n\n\t _createClass(Collapse, null, [{\n\t key: \"VERSION\",\n\t get: function get() {\n\t return VERSION$3;\n\t }\n\t }, {\n\t key: \"Default\",\n\t get: function get() {\n\t return Default$1;\n\t }\n\t }]);\n\n\t return Collapse;\n\t}();\n\t/**\n\t * ------------------------------------------------------------------------\n\t * Data Api implementation\n\t * ------------------------------------------------------------------------\n\t */\n\n\n\tEventHandler.on(document, EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$1, function (event) {\n\t // preventDefault only for elements (which change the URL) not inside the collapsible element\n\t if (event.target.tagName === 'A') {\n\t event.preventDefault();\n\t }\n\n\t var triggerData = Manipulator.getDataAttributes(this);\n\t var selector = getSelectorFromElement(this);\n\t var selectorElements = SelectorEngine.find(selector);\n\t selectorElements.forEach(function (element) {\n\t var data = Data.getData(element, DATA_KEY$3);\n\t var config;\n\n\t if (data) {\n\t // update parent attribute\n\t if (data._parent === null && typeof triggerData.parent === 'string') {\n\t data._config.parent = triggerData.parent;\n\t data._parent = data._getParent();\n\t }\n\n\t config = 'toggle';\n\t } else {\n\t config = triggerData;\n\t }\n\n\t Collapse.collapseInterface(element, config);\n\t });\n\t});\n\tvar $$4 = getjQuery();\n\t/**\n\t * ------------------------------------------------------------------------\n\t * jQuery\n\t * ------------------------------------------------------------------------\n\t * add .collapse to jQuery only if jQuery is present\n\t */\n\n\t/* istanbul ignore if */\n\n\tif ($$4) {\n\t var JQUERY_NO_CONFLICT$3 = $$4.fn[NAME$3];\n\t $$4.fn[NAME$3] = Collapse.jQueryInterface;\n\t $$4.fn[NAME$3].Constructor = Collapse;\n\n\t $$4.fn[NAME$3].noConflict = function () {\n\t $$4.fn[NAME$3] = JQUERY_NO_CONFLICT$3;\n\t return Collapse.jQueryInterface;\n\t };\n\t}\n\n\t/**\n\t * ------------------------------------------------------------------------\n\t * Constants\n\t * ------------------------------------------------------------------------\n\t */\n\n\tvar NAME$4 = 'dropdown';\n\tvar VERSION$4 = '5.0.0-alpha1';\n\tvar DATA_KEY$4 = 'bs.dropdown';\n\tvar EVENT_KEY$4 = \".\" + DATA_KEY$4;\n\tvar DATA_API_KEY$4 = '.data-api';\n\tvar ESCAPE_KEY = 'Escape';\n\tvar SPACE_KEY = 'Space';\n\tvar TAB_KEY = 'Tab';\n\tvar ARROW_UP_KEY = 'ArrowUp';\n\tvar ARROW_DOWN_KEY = 'ArrowDown';\n\tvar RIGHT_MOUSE_BUTTON = 2; // MouseEvent.button value for the secondary button, usually the right button\n\n\tvar REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEY + \"|\" + ARROW_DOWN_KEY + \"|\" + ESCAPE_KEY);\n\tvar EVENT_HIDE$1 = \"hide\" + EVENT_KEY$4;\n\tvar EVENT_HIDDEN$1 = \"hidden\" + EVENT_KEY$4;\n\tvar EVENT_SHOW$1 = \"show\" + EVENT_KEY$4;\n\tvar EVENT_SHOWN$1 = \"shown\" + EVENT_KEY$4;\n\tvar EVENT_CLICK = \"click\" + EVENT_KEY$4;\n\tvar EVENT_CLICK_DATA_API$4 = \"click\" + EVENT_KEY$4 + DATA_API_KEY$4;\n\tvar EVENT_KEYDOWN_DATA_API = \"keydown\" + EVENT_KEY$4 + DATA_API_KEY$4;\n\tvar EVENT_KEYUP_DATA_API = \"keyup\" + EVENT_KEY$4 + DATA_API_KEY$4;\n\tvar CLASS_NAME_DISABLED = 'disabled';\n\tvar CLASS_NAME_SHOW$1 = 'show';\n\tvar CLASS_NAME_DROPUP = 'dropup';\n\tvar CLASS_NAME_DROPRIGHT = 'dropright';\n\tvar CLASS_NAME_DROPLEFT = 'dropleft';\n\tvar CLASS_NAME_MENURIGHT = 'dropdown-menu-right';\n\tvar CLASS_NAME_NAVBAR = 'navbar';\n\tvar CLASS_NAME_POSITION_STATIC = 'position-static';\n\tvar SELECTOR_DATA_TOGGLE$2 = '[data-toggle=\"dropdown\"]';\n\tvar SELECTOR_FORM_CHILD = '.dropdown form';\n\tvar SELECTOR_MENU = '.dropdown-menu';\n\tvar SELECTOR_NAVBAR_NAV = '.navbar-nav';\n\tvar SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)';\n\tvar PLACEMENT_TOP = 'top-start';\n\tvar PLACEMENT_TOPEND = 'top-end';\n\tvar PLACEMENT_BOTTOM = 'bottom-start';\n\tvar PLACEMENT_BOTTOMEND = 'bottom-end';\n\tvar PLACEMENT_RIGHT = 'right-start';\n\tvar PLACEMENT_LEFT = 'left-start';\n\tvar Default$2 = {\n\t offset: 0,\n\t flip: true,\n\t boundary: 'scrollParent',\n\t reference: 'toggle',\n\t display: 'dynamic',\n\t popperConfig: null\n\t};\n\tvar DefaultType$2 = {\n\t offset: '(number|string|function)',\n\t flip: 'boolean',\n\t boundary: '(string|element)',\n\t reference: '(string|element)',\n\t display: 'string',\n\t popperConfig: '(null|object)'\n\t};\n\t/**\n\t * ------------------------------------------------------------------------\n\t * Class Definition\n\t * ------------------------------------------------------------------------\n\t */\n\n\tvar Dropdown = /*#__PURE__*/function () {\n\t function Dropdown(element, config) {\n\t this._element = element;\n\t this._popper = null;\n\t this._config = this._getConfig(config);\n\t this._menu = this._getMenuElement();\n\t this._inNavbar = this._detectNavbar();\n\n\t this._addEventListeners();\n\n\t Data.setData(element, DATA_KEY$4, this);\n\t } // Getters\n\n\n\t var _proto = Dropdown.prototype;\n\n\t // Public\n\t _proto.toggle = function toggle() {\n\t if (this._element.disabled || this._element.classList.contains(CLASS_NAME_DISABLED)) {\n\t return;\n\t }\n\n\t var isActive = this._element.classList.contains(CLASS_NAME_SHOW$1);\n\n\t Dropdown.clearMenus();\n\n\t if (isActive) {\n\t return;\n\t }\n\n\t this.show();\n\t };\n\n\t _proto.show = function show() {\n\t if (this._element.disabled || this._element.classList.contains(CLASS_NAME_DISABLED) || this._menu.classList.contains(CLASS_NAME_SHOW$1)) {\n\t return;\n\t }\n\n\t var parent = Dropdown.getParentFromElement(this._element);\n\t var relatedTarget = {\n\t relatedTarget: this._element\n\t };\n\t var showEvent = EventHandler.trigger(this._element, EVENT_SHOW$1, relatedTarget);\n\n\t if (showEvent.defaultPrevented) {\n\t return;\n\t } // Disable totally Popper.js for Dropdown in Navbar\n\n\n\t if (!this._inNavbar) {\n\t if (typeof Popper === 'undefined') {\n\t throw new TypeError('Bootstrap\\'s dropdowns require Popper.js (https://popper.js.org)');\n\t }\n\n\t var referenceElement = this._element;\n\n\t if (this._config.reference === 'parent') {\n\t referenceElement = parent;\n\t } else if (isElement(this._config.reference)) {\n\t referenceElement = this._config.reference; // Check if it's jQuery element\n\n\t if (typeof this._config.reference.jquery !== 'undefined') {\n\t referenceElement = this._config.reference[0];\n\t }\n\t } // If boundary is not `scrollParent`, then set position to `static`\n\t // to allow the menu to \"escape\" the scroll parent's boundaries\n\t // https://github.com/twbs/bootstrap/issues/24251\n\n\n\t if (this._config.boundary !== 'scrollParent') {\n\t parent.classList.add(CLASS_NAME_POSITION_STATIC);\n\t }\n\n\t this._popper = new Popper(referenceElement, this._menu, this._getPopperConfig());\n\t } // If this is a touch-enabled device we add extra\n\t // empty mouseover listeners to the body's immediate children;\n\t // only needed because of broken event delegation on iOS\n\t // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n\n\n\t if ('ontouchstart' in document.documentElement && !parent.closest(SELECTOR_NAVBAR_NAV)) {\n\t var _ref;\n\n\t (_ref = []).concat.apply(_ref, document.body.children).forEach(function (elem) {\n\t return EventHandler.on(elem, 'mouseover', null, noop());\n\t });\n\t }\n\n\t this._element.focus();\n\n\t this._element.setAttribute('aria-expanded', true);\n\n\t Manipulator.toggleClass(this._menu, CLASS_NAME_SHOW$1);\n\t Manipulator.toggleClass(this._element, CLASS_NAME_SHOW$1);\n\t EventHandler.trigger(parent, EVENT_SHOWN$1, relatedTarget);\n\t };\n\n\t _proto.hide = function hide() {\n\t if (this._element.disabled || this._element.classList.contains(CLASS_NAME_DISABLED) || !this._menu.classList.contains(CLASS_NAME_SHOW$1)) {\n\t return;\n\t }\n\n\t var parent = Dropdown.getParentFromElement(this._element);\n\t var relatedTarget = {\n\t relatedTarget: this._element\n\t };\n\t var hideEvent = EventHandler.trigger(parent, EVENT_HIDE$1, relatedTarget);\n\n\t if (hideEvent.defaultPrevented) {\n\t return;\n\t }\n\n\t if (this._popper) {\n\t this._popper.destroy();\n\t }\n\n\t Manipulator.toggleClass(this._menu, CLASS_NAME_SHOW$1);\n\t Manipulator.toggleClass(this._element, CLASS_NAME_SHOW$1);\n\t EventHandler.trigger(parent, EVENT_HIDDEN$1, relatedTarget);\n\t };\n\n\t _proto.dispose = function dispose() {\n\t Data.removeData(this._element, DATA_KEY$4);\n\t EventHandler.off(this._element, EVENT_KEY$4);\n\t this._element = null;\n\t this._menu = null;\n\n\t if (this._popper) {\n\t this._popper.destroy();\n\n\t this._popper = null;\n\t }\n\t };\n\n\t _proto.update = function update() {\n\t this._inNavbar = this._detectNavbar();\n\n\t if (this._popper) {\n\t this._popper.scheduleUpdate();\n\t }\n\t } // Private\n\t ;\n\n\t _proto._addEventListeners = function _addEventListeners() {\n\t var _this = this;\n\n\t EventHandler.on(this._element, EVENT_CLICK, function (event) {\n\t event.preventDefault();\n\t event.stopPropagation();\n\n\t _this.toggle();\n\t });\n\t };\n\n\t _proto._getConfig = function _getConfig(config) {\n\t config = _objectSpread2(_objectSpread2(_objectSpread2({}, this.constructor.Default), Manipulator.getDataAttributes(this._element)), config);\n\t typeCheckConfig(NAME$4, config, this.constructor.DefaultType);\n\t return config;\n\t };\n\n\t _proto._getMenuElement = function _getMenuElement() {\n\t return SelectorEngine.next(this._element, SELECTOR_MENU)[0];\n\t };\n\n\t _proto._getPlacement = function _getPlacement() {\n\t var parentDropdown = this._element.parentNode;\n\t var placement = PLACEMENT_BOTTOM; // Handle dropup\n\n\t if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {\n\t placement = PLACEMENT_TOP;\n\n\t if (this._menu.classList.contains(CLASS_NAME_MENURIGHT)) {\n\t placement = PLACEMENT_TOPEND;\n\t }\n\t } else if (parentDropdown.classList.contains(CLASS_NAME_DROPRIGHT)) {\n\t placement = PLACEMENT_RIGHT;\n\t } else if (parentDropdown.classList.contains(CLASS_NAME_DROPLEFT)) {\n\t placement = PLACEMENT_LEFT;\n\t } else if (this._menu.classList.contains(CLASS_NAME_MENURIGHT)) {\n\t placement = PLACEMENT_BOTTOMEND;\n\t }\n\n\t return placement;\n\t };\n\n\t _proto._detectNavbar = function _detectNavbar() {\n\t return Boolean(this._element.closest(\".\" + CLASS_NAME_NAVBAR));\n\t };\n\n\t _proto._getOffset = function _getOffset() {\n\t var _this2 = this;\n\n\t var offset = {};\n\n\t if (typeof this._config.offset === 'function') {\n\t offset.fn = function (data) {\n\t data.offsets = _objectSpread2(_objectSpread2({}, data.offsets), _this2._config.offset(data.offsets, _this2._element) || {});\n\t return data;\n\t };\n\t } else {\n\t offset.offset = this._config.offset;\n\t }\n\n\t return offset;\n\t };\n\n\t _proto._getPopperConfig = function _getPopperConfig() {\n\t var popperConfig = {\n\t placement: this._getPlacement(),\n\t modifiers: {\n\t offset: this._getOffset(),\n\t flip: {\n\t enabled: this._config.flip\n\t },\n\t preventOverflow: {\n\t boundariesElement: this._config.boundary\n\t }\n\t }\n\t }; // Disable Popper.js if we have a static display\n\n\t if (this._config.display === 'static') {\n\t popperConfig.modifiers.applyStyle = {\n\t enabled: false\n\t };\n\t }\n\n\t return _objectSpread2(_objectSpread2({}, popperConfig), this._config.popperConfig);\n\t } // Static\n\t ;\n\n\t Dropdown.dropdownInterface = function dropdownInterface(element, config) {\n\t var data = Data.getData(element, DATA_KEY$4);\n\n\t var _config = typeof config === 'object' ? config : null;\n\n\t if (!data) {\n\t data = new Dropdown(element, _config);\n\t }\n\n\t if (typeof config === 'string') {\n\t if (typeof data[config] === 'undefined') {\n\t throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n\t }\n\n\t data[config]();\n\t }\n\t };\n\n\t Dropdown.jQueryInterface = function jQueryInterface(config) {\n\t return this.each(function () {\n\t Dropdown.dropdownInterface(this, config);\n\t });\n\t };\n\n\t Dropdown.clearMenus = function clearMenus(event) {\n\t if (event && (event.button === RIGHT_MOUSE_BUTTON || event.type === 'keyup' && event.key !== TAB_KEY)) {\n\t return;\n\t }\n\n\t var toggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE$2);\n\n\t for (var i = 0, len = toggles.length; i < len; i++) {\n\t var parent = Dropdown.getParentFromElement(toggles[i]);\n\t var context = Data.getData(toggles[i], DATA_KEY$4);\n\t var relatedTarget = {\n\t relatedTarget: toggles[i]\n\t };\n\n\t if (event && event.type === 'click') {\n\t relatedTarget.clickEvent = event;\n\t }\n\n\t if (!context) {\n\t continue;\n\t }\n\n\t var dropdownMenu = context._menu;\n\n\t if (!toggles[i].classList.contains(CLASS_NAME_SHOW$1)) {\n\t continue;\n\t }\n\n\t if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.key === TAB_KEY) && dropdownMenu.contains(event.target)) {\n\t continue;\n\t }\n\n\t var hideEvent = EventHandler.trigger(parent, EVENT_HIDE$1, relatedTarget);\n\n\t if (hideEvent.defaultPrevented) {\n\t continue;\n\t } // If this is a touch-enabled device we remove the extra\n\t // empty mouseover listeners we added for iOS support\n\n\n\t if ('ontouchstart' in document.documentElement) {\n\t var _ref2;\n\n\t (_ref2 = []).concat.apply(_ref2, document.body.children).forEach(function (elem) {\n\t return EventHandler.off(elem, 'mouseover', null, noop());\n\t });\n\t }\n\n\t toggles[i].setAttribute('aria-expanded', 'false');\n\n\t if (context._popper) {\n\t context._popper.destroy();\n\t }\n\n\t dropdownMenu.classList.remove(CLASS_NAME_SHOW$1);\n\t toggles[i].classList.remove(CLASS_NAME_SHOW$1);\n\t EventHandler.trigger(parent, EVENT_HIDDEN$1, relatedTarget);\n\t }\n\t };\n\n\t Dropdown.getParentFromElement = function getParentFromElement(element) {\n\t return getElementFromSelector(element) || element.parentNode;\n\t };\n\n\t Dropdown.dataApiKeydownHandler = function dataApiKeydownHandler(event) {\n\t // If not input/textarea:\n\t // - And not a key in REGEXP_KEYDOWN => not a dropdown command\n\t // If input/textarea:\n\t // - If space key => not a dropdown command\n\t // - If key is other than escape\n\t // - If key is not up or down => not a dropdown command\n\t // - If trigger inside the menu => not a dropdown command\n\t if (/input|textarea/i.test(event.target.tagName) ? event.key === SPACE_KEY || event.key !== ESCAPE_KEY && (event.key !== ARROW_DOWN_KEY && event.key !== ARROW_UP_KEY || event.target.closest(SELECTOR_MENU)) : !REGEXP_KEYDOWN.test(event.key)) {\n\t return;\n\t }\n\n\t event.preventDefault();\n\t event.stopPropagation();\n\n\t if (this.disabled || this.classList.contains(CLASS_NAME_DISABLED)) {\n\t return;\n\t }\n\n\t var parent = Dropdown.getParentFromElement(this);\n\t var isActive = this.classList.contains(CLASS_NAME_SHOW$1);\n\n\t if (event.key === ESCAPE_KEY) {\n\t var button = this.matches(SELECTOR_DATA_TOGGLE$2) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE$2)[0];\n\t button.focus();\n\t Dropdown.clearMenus();\n\t return;\n\t }\n\n\t if (!isActive || event.key === SPACE_KEY) {\n\t Dropdown.clearMenus();\n\t return;\n\t }\n\n\t var items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, parent).filter(isVisible);\n\n\t if (!items.length) {\n\t return;\n\t }\n\n\t var index = items.indexOf(event.target);\n\n\t if (event.key === ARROW_UP_KEY && index > 0) {\n\t // Up\n\t index--;\n\t }\n\n\t if (event.key === ARROW_DOWN_KEY && index < items.length - 1) {\n\t // Down\n\t index++;\n\t } // index is -1 if the first keydown is an ArrowUp\n\n\n\t index = index === -1 ? 0 : index;\n\t items[index].focus();\n\t };\n\n\t Dropdown.getInstance = function getInstance(element) {\n\t return Data.getData(element, DATA_KEY$4);\n\t };\n\n\t _createClass(Dropdown, null, [{\n\t key: \"VERSION\",\n\t get: function get() {\n\t return VERSION$4;\n\t }\n\t }, {\n\t key: \"Default\",\n\t get: function get() {\n\t return Default$2;\n\t }\n\t }, {\n\t key: \"DefaultType\",\n\t get: function get() {\n\t return DefaultType$2;\n\t }\n\t }]);\n\n\t return Dropdown;\n\t}();\n\t/**\n\t * ------------------------------------------------------------------------\n\t * Data Api implementation\n\t * ------------------------------------------------------------------------\n\t */\n\n\n\tEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$2, Dropdown.dataApiKeydownHandler);\n\tEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler);\n\tEventHandler.on(document, EVENT_CLICK_DATA_API$4, Dropdown.clearMenus);\n\tEventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus);\n\tEventHandler.on(document, EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$2, function (event) {\n\t event.preventDefault();\n\t event.stopPropagation();\n\t Dropdown.dropdownInterface(this, 'toggle');\n\t});\n\tEventHandler.on(document, EVENT_CLICK_DATA_API$4, SELECTOR_FORM_CHILD, function (e) {\n\t return e.stopPropagation();\n\t});\n\tvar $$5 = getjQuery();\n\t/**\n\t * ------------------------------------------------------------------------\n\t * jQuery\n\t * ------------------------------------------------------------------------\n\t * add .dropdown to jQuery only if jQuery is present\n\t */\n\n\t/* istanbul ignore if */\n\n\tif ($$5) {\n\t var JQUERY_NO_CONFLICT$4 = $$5.fn[NAME$4];\n\t $$5.fn[NAME$4] = Dropdown.jQueryInterface;\n\t $$5.fn[NAME$4].Constructor = Dropdown;\n\n\t $$5.fn[NAME$4].noConflict = function () {\n\t $$5.fn[NAME$4] = JQUERY_NO_CONFLICT$4;\n\t return Dropdown.jQueryInterface;\n\t };\n\t}\n\n\t/**\n\t * ------------------------------------------------------------------------\n\t * Constants\n\t * ------------------------------------------------------------------------\n\t */\n\n\tvar NAME$5 = 'modal';\n\tvar VERSION$5 = '5.0.0-alpha1';\n\tvar DATA_KEY$5 = 'bs.modal';\n\tvar EVENT_KEY$5 = \".\" + DATA_KEY$5;\n\tvar DATA_API_KEY$5 = '.data-api';\n\tvar ESCAPE_KEY$1 = 'Escape';\n\tvar Default$3 = {\n\t backdrop: true,\n\t keyboard: true,\n\t focus: true,\n\t show: true\n\t};\n\tvar DefaultType$3 = {\n\t backdrop: '(boolean|string)',\n\t keyboard: 'boolean',\n\t focus: 'boolean',\n\t show: 'boolean'\n\t};\n\tvar EVENT_HIDE$2 = \"hide\" + EVENT_KEY$5;\n\tvar EVENT_HIDE_PREVENTED = \"hidePrevented\" + EVENT_KEY$5;\n\tvar EVENT_HIDDEN$2 = \"hidden\" + EVENT_KEY$5;\n\tvar EVENT_SHOW$2 = \"show\" + EVENT_KEY$5;\n\tvar EVENT_SHOWN$2 = \"shown\" + EVENT_KEY$5;\n\tvar EVENT_FOCUSIN = \"focusin\" + EVENT_KEY$5;\n\tvar EVENT_RESIZE = \"resize\" + EVENT_KEY$5;\n\tvar EVENT_CLICK_DISMISS = \"click.dismiss\" + EVENT_KEY$5;\n\tvar EVENT_KEYDOWN_DISMISS = \"keydown.dismiss\" + EVENT_KEY$5;\n\tvar EVENT_MOUSEUP_DISMISS = \"mouseup.dismiss\" + EVENT_KEY$5;\n\tvar EVENT_MOUSEDOWN_DISMISS = \"mousedown.dismiss\" + EVENT_KEY$5;\n\tvar EVENT_CLICK_DATA_API$5 = \"click\" + EVENT_KEY$5 + DATA_API_KEY$5;\n\tvar CLASS_NAME_SCROLLBAR_MEASURER = 'modal-scrollbar-measure';\n\tvar CLASS_NAME_BACKDROP = 'modal-backdrop';\n\tvar CLASS_NAME_OPEN = 'modal-open';\n\tvar CLASS_NAME_FADE = 'fade';\n\tvar CLASS_NAME_SHOW$2 = 'show';\n\tvar CLASS_NAME_STATIC = 'modal-static';\n\tvar SELECTOR_DIALOG = '.modal-dialog';\n\tvar SELECTOR_MODAL_BODY = '.modal-body';\n\tvar SELECTOR_DATA_TOGGLE$3 = '[data-toggle=\"modal\"]';\n\tvar SELECTOR_DATA_DISMISS = '[data-dismiss=\"modal\"]';\n\tvar SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top';\n\tvar SELECTOR_STICKY_CONTENT = '.sticky-top';\n\t/**\n\t * ------------------------------------------------------------------------\n\t * Class Definition\n\t * ------------------------------------------------------------------------\n\t */\n\n\tvar Modal = /*#__PURE__*/function () {\n\t function Modal(element, config) {\n\t this._config = this._getConfig(config);\n\t this._element = element;\n\t this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, element);\n\t this._backdrop = null;\n\t this._isShown = false;\n\t this._isBodyOverflowing = false;\n\t this._ignoreBackdropClick = false;\n\t this._isTransitioning = false;\n\t this._scrollbarWidth = 0;\n\t Data.setData(element, DATA_KEY$5, this);\n\t } // Getters\n\n\n\t var _proto = Modal.prototype;\n\n\t // Public\n\t _proto.toggle = function toggle(relatedTarget) {\n\t return this._isShown ? this.hide() : this.show(relatedTarget);\n\t };\n\n\t _proto.show = function show(relatedTarget) {\n\t var _this = this;\n\n\t if (this._isShown || this._isTransitioning) {\n\t return;\n\t }\n\n\t if (this._element.classList.contains(CLASS_NAME_FADE)) {\n\t this._isTransitioning = true;\n\t }\n\n\t var showEvent = EventHandler.trigger(this._element, EVENT_SHOW$2, {\n\t relatedTarget: relatedTarget\n\t });\n\n\t if (this._isShown || showEvent.defaultPrevented) {\n\t return;\n\t }\n\n\t this._isShown = true;\n\n\t this._checkScrollbar();\n\n\t this._setScrollbar();\n\n\t this._adjustDialog();\n\n\t this._setEscapeEvent();\n\n\t this._setResizeEvent();\n\n\t EventHandler.on(this._element, EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, function (event) {\n\t return _this.hide(event);\n\t });\n\t EventHandler.on(this._dialog, EVENT_MOUSEDOWN_DISMISS, function () {\n\t EventHandler.one(_this._element, EVENT_MOUSEUP_DISMISS, function (event) {\n\t if (event.target === _this._element) {\n\t _this._ignoreBackdropClick = true;\n\t }\n\t });\n\t });\n\n\t this._showBackdrop(function () {\n\t return _this._showElement(relatedTarget);\n\t });\n\t };\n\n\t _proto.hide = function hide(event) {\n\t var _this2 = this;\n\n\t if (event) {\n\t event.preventDefault();\n\t }\n\n\t if (!this._isShown || this._isTransitioning) {\n\t return;\n\t }\n\n\t var hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$2);\n\n\t if (hideEvent.defaultPrevented) {\n\t return;\n\t }\n\n\t this._isShown = false;\n\n\t var transition = this._element.classList.contains(CLASS_NAME_FADE);\n\n\t if (transition) {\n\t this._isTransitioning = true;\n\t }\n\n\t this._setEscapeEvent();\n\n\t this._setResizeEvent();\n\n\t EventHandler.off(document, EVENT_FOCUSIN);\n\n\t this._element.classList.remove(CLASS_NAME_SHOW$2);\n\n\t EventHandler.off(this._element, EVENT_CLICK_DISMISS);\n\t EventHandler.off(this._dialog, EVENT_MOUSEDOWN_DISMISS);\n\n\t if (transition) {\n\t var transitionDuration = getTransitionDurationFromElement(this._element);\n\t EventHandler.one(this._element, TRANSITION_END, function (event) {\n\t return _this2._hideModal(event);\n\t });\n\t emulateTransitionEnd(this._element, transitionDuration);\n\t } else {\n\t this._hideModal();\n\t }\n\t };\n\n\t _proto.dispose = function dispose() {\n\t [window, this._element, this._dialog].forEach(function (htmlElement) {\n\t return EventHandler.off(htmlElement, EVENT_KEY$5);\n\t });\n\t /**\n\t * `document` has 2 events `EVENT_FOCUSIN` and `EVENT_CLICK_DATA_API`\n\t * Do not move `document` in `htmlElements` array\n\t * It will remove `EVENT_CLICK_DATA_API` event that should remain\n\t */\n\n\t EventHandler.off(document, EVENT_FOCUSIN);\n\t Data.removeData(this._element, DATA_KEY$5);\n\t this._config = null;\n\t this._element = null;\n\t this._dialog = null;\n\t this._backdrop = null;\n\t this._isShown = null;\n\t this._isBodyOverflowing = null;\n\t this._ignoreBackdropClick = null;\n\t this._isTransitioning = null;\n\t this._scrollbarWidth = null;\n\t };\n\n\t _proto.handleUpdate = function handleUpdate() {\n\t this._adjustDialog();\n\t } // Private\n\t ;\n\n\t _proto._getConfig = function _getConfig(config) {\n\t config = _objectSpread2(_objectSpread2({}, Default$3), config);\n\t typeCheckConfig(NAME$5, config, DefaultType$3);\n\t return config;\n\t };\n\n\t _proto._showElement = function _showElement(relatedTarget) {\n\t var _this3 = this;\n\n\t var transition = this._element.classList.contains(CLASS_NAME_FADE);\n\n\t var modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog);\n\n\t if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n\t // Don't move modal's DOM position\n\t document.body.appendChild(this._element);\n\t }\n\n\t this._element.style.display = 'block';\n\n\t this._element.removeAttribute('aria-hidden');\n\n\t this._element.setAttribute('aria-modal', true);\n\n\t this._element.setAttribute('role', 'dialog');\n\n\t this._element.scrollTop = 0;\n\n\t if (modalBody) {\n\t modalBody.scrollTop = 0;\n\t }\n\n\t if (transition) {\n\t reflow(this._element);\n\t }\n\n\t this._element.classList.add(CLASS_NAME_SHOW$2);\n\n\t if (this._config.focus) {\n\t this._enforceFocus();\n\t }\n\n\t var transitionComplete = function transitionComplete() {\n\t if (_this3._config.focus) {\n\t _this3._element.focus();\n\t }\n\n\t _this3._isTransitioning = false;\n\t EventHandler.trigger(_this3._element, EVENT_SHOWN$2, {\n\t relatedTarget: relatedTarget\n\t });\n\t };\n\n\t if (transition) {\n\t var transitionDuration = getTransitionDurationFromElement(this._dialog);\n\t EventHandler.one(this._dialog, TRANSITION_END, transitionComplete);\n\t emulateTransitionEnd(this._dialog, transitionDuration);\n\t } else {\n\t transitionComplete();\n\t }\n\t };\n\n\t _proto._enforceFocus = function _enforceFocus() {\n\t var _this4 = this;\n\n\t EventHandler.off(document, EVENT_FOCUSIN); // guard against infinite focus loop\n\n\t EventHandler.on(document, EVENT_FOCUSIN, function (event) {\n\t if (document !== event.target && _this4._element !== event.target && !_this4._element.contains(event.target)) {\n\t _this4._element.focus();\n\t }\n\t });\n\t };\n\n\t _proto._setEscapeEvent = function _setEscapeEvent() {\n\t var _this5 = this;\n\n\t if (this._isShown) {\n\t EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, function (event) {\n\t if (_this5._config.keyboard && event.key === ESCAPE_KEY$1) {\n\t event.preventDefault();\n\n\t _this5.hide();\n\t } else if (!_this5._config.keyboard && event.key === ESCAPE_KEY$1) {\n\t _this5._triggerBackdropTransition();\n\t }\n\t });\n\t } else {\n\t EventHandler.off(this._element, EVENT_KEYDOWN_DISMISS);\n\t }\n\t };\n\n\t _proto._setResizeEvent = function _setResizeEvent() {\n\t var _this6 = this;\n\n\t if (this._isShown) {\n\t EventHandler.on(window, EVENT_RESIZE, function () {\n\t return _this6._adjustDialog();\n\t });\n\t } else {\n\t EventHandler.off(window, EVENT_RESIZE);\n\t }\n\t };\n\n\t _proto._hideModal = function _hideModal() {\n\t var _this7 = this;\n\n\t this._element.style.display = 'none';\n\n\t this._element.setAttribute('aria-hidden', true);\n\n\t this._element.removeAttribute('aria-modal');\n\n\t this._element.removeAttribute('role');\n\n\t this._isTransitioning = false;\n\n\t this._showBackdrop(function () {\n\t document.body.classList.remove(CLASS_NAME_OPEN);\n\n\t _this7._resetAdjustments();\n\n\t _this7._resetScrollbar();\n\n\t EventHandler.trigger(_this7._element, EVENT_HIDDEN$2);\n\t });\n\t };\n\n\t _proto._removeBackdrop = function _removeBackdrop() {\n\t this._backdrop.parentNode.removeChild(this._backdrop);\n\n\t this._backdrop = null;\n\t };\n\n\t _proto._showBackdrop = function _showBackdrop(callback) {\n\t var _this8 = this;\n\n\t var animate = this._element.classList.contains(CLASS_NAME_FADE) ? CLASS_NAME_FADE : '';\n\n\t if (this._isShown && this._config.backdrop) {\n\t this._backdrop = document.createElement('div');\n\t this._backdrop.className = CLASS_NAME_BACKDROP;\n\n\t if (animate) {\n\t this._backdrop.classList.add(animate);\n\t }\n\n\t document.body.appendChild(this._backdrop);\n\t EventHandler.on(this._element, EVENT_CLICK_DISMISS, function (event) {\n\t if (_this8._ignoreBackdropClick) {\n\t _this8._ignoreBackdropClick = false;\n\t return;\n\t }\n\n\t if (event.target !== event.currentTarget) {\n\t return;\n\t }\n\n\t _this8._triggerBackdropTransition();\n\t });\n\n\t if (animate) {\n\t reflow(this._backdrop);\n\t }\n\n\t this._backdrop.classList.add(CLASS_NAME_SHOW$2);\n\n\t if (!animate) {\n\t callback();\n\t return;\n\t }\n\n\t var backdropTransitionDuration = getTransitionDurationFromElement(this._backdrop);\n\t EventHandler.one(this._backdrop, TRANSITION_END, callback);\n\t emulateTransitionEnd(this._backdrop, backdropTransitionDuration);\n\t } else if (!this._isShown && this._backdrop) {\n\t this._backdrop.classList.remove(CLASS_NAME_SHOW$2);\n\n\t var callbackRemove = function callbackRemove() {\n\t _this8._removeBackdrop();\n\n\t callback();\n\t };\n\n\t if (this._element.classList.contains(CLASS_NAME_FADE)) {\n\t var _backdropTransitionDuration = getTransitionDurationFromElement(this._backdrop);\n\n\t EventHandler.one(this._backdrop, TRANSITION_END, callbackRemove);\n\t emulateTransitionEnd(this._backdrop, _backdropTransitionDuration);\n\t } else {\n\t callbackRemove();\n\t }\n\t } else {\n\t callback();\n\t }\n\t };\n\n\t _proto._triggerBackdropTransition = function _triggerBackdropTransition() {\n\t var _this9 = this;\n\n\t if (this._config.backdrop === 'static') {\n\t var hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);\n\n\t if (hideEvent.defaultPrevented) {\n\t return;\n\t }\n\n\t this._element.classList.add(CLASS_NAME_STATIC);\n\n\t var modalTransitionDuration = getTransitionDurationFromElement(this._element);\n\t EventHandler.one(this._element, TRANSITION_END, function () {\n\t _this9._element.classList.remove(CLASS_NAME_STATIC);\n\t });\n\t emulateTransitionEnd(this._element, modalTransitionDuration);\n\n\t this._element.focus();\n\t } else {\n\t this.hide();\n\t }\n\t } // ----------------------------------------------------------------------\n\t // the following methods are used to handle overflowing modals\n\t // ----------------------------------------------------------------------\n\t ;\n\n\t _proto._adjustDialog = function _adjustDialog() {\n\t var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n\n\t if (!this._isBodyOverflowing && isModalOverflowing) {\n\t this._element.style.paddingLeft = this._scrollbarWidth + \"px\";\n\t }\n\n\t if (this._isBodyOverflowing && !isModalOverflowing) {\n\t this._element.style.paddingRight = this._scrollbarWidth + \"px\";\n\t }\n\t };\n\n\t _proto._resetAdjustments = function _resetAdjustments() {\n\t this._element.style.paddingLeft = '';\n\t this._element.style.paddingRight = '';\n\t };\n\n\t _proto._checkScrollbar = function _checkScrollbar() {\n\t var rect = document.body.getBoundingClientRect();\n\t this._isBodyOverflowing = Math.round(rect.left + rect.right) < window.innerWidth;\n\t this._scrollbarWidth = this._getScrollbarWidth();\n\t };\n\n\t _proto._setScrollbar = function _setScrollbar() {\n\t var _this10 = this;\n\n\t if (this._isBodyOverflowing) {\n\t // Note: DOMNode.style.paddingRight returns the actual value or '' if not set\n\t // while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set\n\t // Adjust fixed content padding\n\t SelectorEngine.find(SELECTOR_FIXED_CONTENT).forEach(function (element) {\n\t var actualPadding = element.style.paddingRight;\n\t var calculatedPadding = window.getComputedStyle(element)['padding-right'];\n\t Manipulator.setDataAttribute(element, 'padding-right', actualPadding);\n\t element.style.paddingRight = parseFloat(calculatedPadding) + _this10._scrollbarWidth + \"px\";\n\t }); // Adjust sticky content margin\n\n\t SelectorEngine.find(SELECTOR_STICKY_CONTENT).forEach(function (element) {\n\t var actualMargin = element.style.marginRight;\n\t var calculatedMargin = window.getComputedStyle(element)['margin-right'];\n\t Manipulator.setDataAttribute(element, 'margin-right', actualMargin);\n\t element.style.marginRight = parseFloat(calculatedMargin) - _this10._scrollbarWidth + \"px\";\n\t }); // Adjust body padding\n\n\t var actualPadding = document.body.style.paddingRight;\n\t var calculatedPadding = window.getComputedStyle(document.body)['padding-right'];\n\t Manipulator.setDataAttribute(document.body, 'padding-right', actualPadding);\n\t document.body.style.paddingRight = parseFloat(calculatedPadding) + this._scrollbarWidth + \"px\";\n\t }\n\n\t document.body.classList.add(CLASS_NAME_OPEN);\n\t };\n\n\t _proto._resetScrollbar = function _resetScrollbar() {\n\t // Restore fixed content padding\n\t SelectorEngine.find(SELECTOR_FIXED_CONTENT).forEach(function (element) {\n\t var padding = Manipulator.getDataAttribute(element, 'padding-right');\n\n\t if (typeof padding !== 'undefined') {\n\t Manipulator.removeDataAttribute(element, 'padding-right');\n\t element.style.paddingRight = padding;\n\t }\n\t }); // Restore sticky content and navbar-toggler margin\n\n\t SelectorEngine.find(\"\" + SELECTOR_STICKY_CONTENT).forEach(function (element) {\n\t var margin = Manipulator.getDataAttribute(element, 'margin-right');\n\n\t if (typeof margin !== 'undefined') {\n\t Manipulator.removeDataAttribute(element, 'margin-right');\n\t element.style.marginRight = margin;\n\t }\n\t }); // Restore body padding\n\n\t var padding = Manipulator.getDataAttribute(document.body, 'padding-right');\n\n\t if (typeof padding === 'undefined') {\n\t document.body.style.paddingRight = '';\n\t } else {\n\t Manipulator.removeDataAttribute(document.body, 'padding-right');\n\t document.body.style.paddingRight = padding;\n\t }\n\t };\n\n\t _proto._getScrollbarWidth = function _getScrollbarWidth() {\n\t // thx d.walsh\n\t var scrollDiv = document.createElement('div');\n\t scrollDiv.className = CLASS_NAME_SCROLLBAR_MEASURER;\n\t document.body.appendChild(scrollDiv);\n\t var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;\n\t document.body.removeChild(scrollDiv);\n\t return scrollbarWidth;\n\t } // Static\n\t ;\n\n\t Modal.jQueryInterface = function jQueryInterface(config, relatedTarget) {\n\t return this.each(function () {\n\t var data = Data.getData(this, DATA_KEY$5);\n\n\t var _config = _objectSpread2(_objectSpread2(_objectSpread2({}, Default$3), Manipulator.getDataAttributes(this)), typeof config === 'object' && config ? config : {});\n\n\t if (!data) {\n\t data = new Modal(this, _config);\n\t }\n\n\t if (typeof config === 'string') {\n\t if (typeof data[config] === 'undefined') {\n\t throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n\t }\n\n\t data[config](relatedTarget);\n\t } else if (_config.show) {\n\t data.show(relatedTarget);\n\t }\n\t });\n\t };\n\n\t Modal.getInstance = function getInstance(element) {\n\t return Data.getData(element, DATA_KEY$5);\n\t };\n\n\t _createClass(Modal, null, [{\n\t key: \"VERSION\",\n\t get: function get() {\n\t return VERSION$5;\n\t }\n\t }, {\n\t key: \"Default\",\n\t get: function get() {\n\t return Default$3;\n\t }\n\t }]);\n\n\t return Modal;\n\t}();\n\t/**\n\t * ------------------------------------------------------------------------\n\t * Data Api implementation\n\t * ------------------------------------------------------------------------\n\t */\n\n\n\tEventHandler.on(document, EVENT_CLICK_DATA_API$5, SELECTOR_DATA_TOGGLE$3, function (event) {\n\t var _this11 = this;\n\n\t var target = getElementFromSelector(this);\n\n\t if (this.tagName === 'A' || this.tagName === 'AREA') {\n\t event.preventDefault();\n\t }\n\n\t EventHandler.one(target, EVENT_SHOW$2, function (showEvent) {\n\t if (showEvent.defaultPrevented) {\n\t // only register focus restorer if modal will actually get shown\n\t return;\n\t }\n\n\t EventHandler.one(target, EVENT_HIDDEN$2, function () {\n\t if (isVisible(_this11)) {\n\t _this11.focus();\n\t }\n\t });\n\t });\n\t var data = Data.getData(target, DATA_KEY$5);\n\n\t if (!data) {\n\t var config = _objectSpread2(_objectSpread2({}, Manipulator.getDataAttributes(target)), Manipulator.getDataAttributes(this));\n\n\t data = new Modal(target, config);\n\t }\n\n\t data.show(this);\n\t});\n\tvar $$6 = getjQuery();\n\t/**\n\t * ------------------------------------------------------------------------\n\t * jQuery\n\t * ------------------------------------------------------------------------\n\t * add .modal to jQuery only if jQuery is present\n\t */\n\n\t/* istanbul ignore if */\n\n\tif ($$6) {\n\t var JQUERY_NO_CONFLICT$5 = $$6.fn[NAME$5];\n\t $$6.fn[NAME$5] = Modal.jQueryInterface;\n\t $$6.fn[NAME$5].Constructor = Modal;\n\n\t $$6.fn[NAME$5].noConflict = function () {\n\t $$6.fn[NAME$5] = JQUERY_NO_CONFLICT$5;\n\t return Modal.jQueryInterface;\n\t };\n\t}\n\n\t/**\n\t * --------------------------------------------------------------------------\n\t * Bootstrap (v5.0.0-alpha1): util/sanitizer.js\n\t * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n\t * --------------------------------------------------------------------------\n\t */\n\tvar uriAttrs = ['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href'];\n\tvar ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i;\n\t/**\n\t * A pattern that recognizes a commonly useful subset of URLs that are safe.\n\t *\n\t * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n\t */\n\n\tvar SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/gi;\n\t/**\n\t * A pattern that matches safe data URLs. Only matches image, video and audio types.\n\t *\n\t * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n\t */\n\n\tvar DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z]+=*$/i;\n\n\tvar allowedAttribute = function allowedAttribute(attr, allowedAttributeList) {\n\t var attrName = attr.nodeName.toLowerCase();\n\n\t if (allowedAttributeList.indexOf(attrName) !== -1) {\n\t if (uriAttrs.indexOf(attrName) !== -1) {\n\t return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN));\n\t }\n\n\t return true;\n\t }\n\n\t var regExp = allowedAttributeList.filter(function (attrRegex) {\n\t return attrRegex instanceof RegExp;\n\t }); // Check if a regular expression validates the attribute.\n\n\t for (var i = 0, len = regExp.length; i < len; i++) {\n\t if (attrName.match(regExp[i])) {\n\t return true;\n\t }\n\t }\n\n\t return false;\n\t};\n\n\tvar DefaultWhitelist = {\n\t // Global attributes allowed on any supplied element below.\n\t '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n\t a: ['target', 'href', 'title', 'rel'],\n\t area: [],\n\t b: [],\n\t br: [],\n\t col: [],\n\t code: [],\n\t div: [],\n\t em: [],\n\t hr: [],\n\t h1: [],\n\t h2: [],\n\t h3: [],\n\t h4: [],\n\t h5: [],\n\t h6: [],\n\t i: [],\n\t img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n\t li: [],\n\t ol: [],\n\t p: [],\n\t pre: [],\n\t s: [],\n\t small: [],\n\t span: [],\n\t sub: [],\n\t sup: [],\n\t strong: [],\n\t u: [],\n\t ul: []\n\t};\n\tfunction sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {\n\t var _ref;\n\n\t if (!unsafeHtml.length) {\n\t return unsafeHtml;\n\t }\n\n\t if (sanitizeFn && typeof sanitizeFn === 'function') {\n\t return sanitizeFn(unsafeHtml);\n\t }\n\n\t var domParser = new window.DOMParser();\n\t var createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');\n\t var whitelistKeys = Object.keys(whiteList);\n\n\t var elements = (_ref = []).concat.apply(_ref, createdDocument.body.querySelectorAll('*'));\n\n\t var _loop = function _loop(i, len) {\n\t var _ref2;\n\n\t var el = elements[i];\n\t var elName = el.nodeName.toLowerCase();\n\n\t if (whitelistKeys.indexOf(elName) === -1) {\n\t el.parentNode.removeChild(el);\n\t return \"continue\";\n\t }\n\n\t var attributeList = (_ref2 = []).concat.apply(_ref2, el.attributes);\n\n\t var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || []);\n\t attributeList.forEach(function (attr) {\n\t if (!allowedAttribute(attr, whitelistedAttributes)) {\n\t el.removeAttribute(attr.nodeName);\n\t }\n\t });\n\t };\n\n\t for (var i = 0, len = elements.length; i < len; i++) {\n\t var _ret = _loop(i);\n\n\t if (_ret === \"continue\") continue;\n\t }\n\n\t return createdDocument.body.innerHTML;\n\t}\n\n\t/**\n\t * ------------------------------------------------------------------------\n\t * Constants\n\t * ------------------------------------------------------------------------\n\t */\n\n\tvar NAME$6 = 'tooltip';\n\tvar VERSION$6 = '5.0.0-alpha1';\n\tvar DATA_KEY$6 = 'bs.tooltip';\n\tvar EVENT_KEY$6 = \".\" + DATA_KEY$6;\n\tvar CLASS_PREFIX = 'bs-tooltip';\n\tvar BSCLS_PREFIX_REGEX = new RegExp(\"(^|\\\\s)\" + CLASS_PREFIX + \"\\\\S+\", 'g');\n\tvar DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn'];\n\tvar DefaultType$4 = {\n\t animation: 'boolean',\n\t template: 'string',\n\t title: '(string|element|function)',\n\t trigger: 'string',\n\t delay: '(number|object)',\n\t html: 'boolean',\n\t selector: '(string|boolean)',\n\t placement: '(string|function)',\n\t offset: '(number|string|function)',\n\t container: '(string|element|boolean)',\n\t fallbackPlacement: '(string|array)',\n\t boundary: '(string|element)',\n\t sanitize: 'boolean',\n\t sanitizeFn: '(null|function)',\n\t whiteList: 'object',\n\t popperConfig: '(null|object)'\n\t};\n\tvar AttachmentMap = {\n\t AUTO: 'auto',\n\t TOP: 'top',\n\t RIGHT: 'right',\n\t BOTTOM: 'bottom',\n\t LEFT: 'left'\n\t};\n\tvar Default$4 = {\n\t animation: true,\n\t template: '
' + '
' + '
',\n\t trigger: 'hover focus',\n\t title: '',\n\t delay: 0,\n\t html: false,\n\t selector: false,\n\t placement: 'top',\n\t offset: 0,\n\t container: false,\n\t fallbackPlacement: 'flip',\n\t boundary: 'scrollParent',\n\t sanitize: true,\n\t sanitizeFn: null,\n\t whiteList: DefaultWhitelist,\n\t popperConfig: null\n\t};\n\tvar Event$1 = {\n\t HIDE: \"hide\" + EVENT_KEY$6,\n\t HIDDEN: \"hidden\" + EVENT_KEY$6,\n\t SHOW: \"show\" + EVENT_KEY$6,\n\t SHOWN: \"shown\" + EVENT_KEY$6,\n\t INSERTED: \"inserted\" + EVENT_KEY$6,\n\t CLICK: \"click\" + EVENT_KEY$6,\n\t FOCUSIN: \"focusin\" + EVENT_KEY$6,\n\t FOCUSOUT: \"focusout\" + EVENT_KEY$6,\n\t MOUSEENTER: \"mouseenter\" + EVENT_KEY$6,\n\t MOUSELEAVE: \"mouseleave\" + EVENT_KEY$6\n\t};\n\tvar CLASS_NAME_FADE$1 = 'fade';\n\tvar CLASS_NAME_MODAL = 'modal';\n\tvar CLASS_NAME_SHOW$3 = 'show';\n\tvar HOVER_STATE_SHOW = 'show';\n\tvar HOVER_STATE_OUT = 'out';\n\tvar SELECTOR_TOOLTIP_INNER = '.tooltip-inner';\n\tvar TRIGGER_HOVER = 'hover';\n\tvar TRIGGER_FOCUS = 'focus';\n\tvar TRIGGER_CLICK = 'click';\n\tvar TRIGGER_MANUAL = 'manual';\n\t/**\n\t * ------------------------------------------------------------------------\n\t * Class Definition\n\t * ------------------------------------------------------------------------\n\t */\n\n\tvar Tooltip = /*#__PURE__*/function () {\n\t function Tooltip(element, config) {\n\t if (typeof Popper === 'undefined') {\n\t throw new TypeError('Bootstrap\\'s tooltips require Popper.js (https://popper.js.org)');\n\t } // private\n\n\n\t this._isEnabled = true;\n\t this._timeout = 0;\n\t this._hoverState = '';\n\t this._activeTrigger = {};\n\t this._popper = null; // Protected\n\n\t this.element = element;\n\t this.config = this._getConfig(config);\n\t this.tip = null;\n\n\t this._setListeners();\n\n\t Data.setData(element, this.constructor.DATA_KEY, this);\n\t } // Getters\n\n\n\t var _proto = Tooltip.prototype;\n\n\t // Public\n\t _proto.enable = function enable() {\n\t this._isEnabled = true;\n\t };\n\n\t _proto.disable = function disable() {\n\t this._isEnabled = false;\n\t };\n\n\t _proto.toggleEnabled = function toggleEnabled() {\n\t this._isEnabled = !this._isEnabled;\n\t };\n\n\t _proto.toggle = function toggle(event) {\n\t if (!this._isEnabled) {\n\t return;\n\t }\n\n\t if (event) {\n\t var dataKey = this.constructor.DATA_KEY;\n\t var context = Data.getData(event.target, dataKey);\n\n\t if (!context) {\n\t context = new this.constructor(event.target, this._getDelegateConfig());\n\t Data.setData(event.target, dataKey, context);\n\t }\n\n\t context._activeTrigger.click = !context._activeTrigger.click;\n\n\t if (context._isWithActiveTrigger()) {\n\t context._enter(null, context);\n\t } else {\n\t context._leave(null, context);\n\t }\n\t } else {\n\t if (this.getTipElement().classList.contains(CLASS_NAME_SHOW$3)) {\n\t this._leave(null, this);\n\n\t return;\n\t }\n\n\t this._enter(null, this);\n\t }\n\t };\n\n\t _proto.dispose = function dispose() {\n\t clearTimeout(this._timeout);\n\t Data.removeData(this.element, this.constructor.DATA_KEY);\n\t EventHandler.off(this.element, this.constructor.EVENT_KEY);\n\t EventHandler.off(this.element.closest(\".\" + CLASS_NAME_MODAL), 'hide.bs.modal', this._hideModalHandler);\n\n\t if (this.tip) {\n\t this.tip.parentNode.removeChild(this.tip);\n\t }\n\n\t this._isEnabled = null;\n\t this._timeout = null;\n\t this._hoverState = null;\n\t this._activeTrigger = null;\n\n\t if (this._popper) {\n\t this._popper.destroy();\n\t }\n\n\t this._popper = null;\n\t this.element = null;\n\t this.config = null;\n\t this.tip = null;\n\t };\n\n\t _proto.show = function show() {\n\t var _this = this;\n\n\t if (this.element.style.display === 'none') {\n\t throw new Error('Please use show on visible elements');\n\t }\n\n\t if (this.isWithContent() && this._isEnabled) {\n\t var showEvent = EventHandler.trigger(this.element, this.constructor.Event.SHOW);\n\t var shadowRoot = findShadowRoot(this.element);\n\t var isInTheDom = shadowRoot === null ? this.element.ownerDocument.documentElement.contains(this.element) : shadowRoot.contains(this.element);\n\n\t if (showEvent.defaultPrevented || !isInTheDom) {\n\t return;\n\t }\n\n\t var tip = this.getTipElement();\n\t var tipId = getUID(this.constructor.NAME);\n\t tip.setAttribute('id', tipId);\n\t this.element.setAttribute('aria-describedby', tipId);\n\t this.setContent();\n\n\t if (this.config.animation) {\n\t tip.classList.add(CLASS_NAME_FADE$1);\n\t }\n\n\t var placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this.element) : this.config.placement;\n\n\t var attachment = this._getAttachment(placement);\n\n\t this._addAttachmentClass(attachment);\n\n\t var container = this._getContainer();\n\n\t Data.setData(tip, this.constructor.DATA_KEY, this);\n\n\t if (!this.element.ownerDocument.documentElement.contains(this.tip)) {\n\t container.appendChild(tip);\n\t }\n\n\t EventHandler.trigger(this.element, this.constructor.Event.INSERTED);\n\t this._popper = new Popper(this.element, tip, this._getPopperConfig(attachment));\n\t tip.classList.add(CLASS_NAME_SHOW$3); // If this is a touch-enabled device we add extra\n\t // empty mouseover listeners to the body's immediate children;\n\t // only needed because of broken event delegation on iOS\n\t // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n\n\t if ('ontouchstart' in document.documentElement) {\n\t var _ref;\n\n\t (_ref = []).concat.apply(_ref, document.body.children).forEach(function (element) {\n\t EventHandler.on(element, 'mouseover', noop());\n\t });\n\t }\n\n\t var complete = function complete() {\n\t if (_this.config.animation) {\n\t _this._fixTransition();\n\t }\n\n\t var prevHoverState = _this._hoverState;\n\t _this._hoverState = null;\n\t EventHandler.trigger(_this.element, _this.constructor.Event.SHOWN);\n\n\t if (prevHoverState === HOVER_STATE_OUT) {\n\t _this._leave(null, _this);\n\t }\n\t };\n\n\t if (this.tip.classList.contains(CLASS_NAME_FADE$1)) {\n\t var transitionDuration = getTransitionDurationFromElement(this.tip);\n\t EventHandler.one(this.tip, TRANSITION_END, complete);\n\t emulateTransitionEnd(this.tip, transitionDuration);\n\t } else {\n\t complete();\n\t }\n\t }\n\t };\n\n\t _proto.hide = function hide() {\n\t var _this2 = this;\n\n\t var tip = this.getTipElement();\n\n\t var complete = function complete() {\n\t if (_this2._hoverState !== HOVER_STATE_SHOW && tip.parentNode) {\n\t tip.parentNode.removeChild(tip);\n\t }\n\n\t _this2._cleanTipClass();\n\n\t _this2.element.removeAttribute('aria-describedby');\n\n\t EventHandler.trigger(_this2.element, _this2.constructor.Event.HIDDEN);\n\n\t _this2._popper.destroy();\n\t };\n\n\t var hideEvent = EventHandler.trigger(this.element, this.constructor.Event.HIDE);\n\n\t if (hideEvent.defaultPrevented) {\n\t return;\n\t }\n\n\t tip.classList.remove(CLASS_NAME_SHOW$3); // If this is a touch-enabled device we remove the extra\n\t // empty mouseover listeners we added for iOS support\n\n\t if ('ontouchstart' in document.documentElement) {\n\t var _ref2;\n\n\t (_ref2 = []).concat.apply(_ref2, document.body.children).forEach(function (element) {\n\t return EventHandler.off(element, 'mouseover', noop);\n\t });\n\t }\n\n\t this._activeTrigger[TRIGGER_CLICK] = false;\n\t this._activeTrigger[TRIGGER_FOCUS] = false;\n\t this._activeTrigger[TRIGGER_HOVER] = false;\n\n\t if (this.tip.classList.contains(CLASS_NAME_FADE$1)) {\n\t var transitionDuration = getTransitionDurationFromElement(tip);\n\t EventHandler.one(tip, TRANSITION_END, complete);\n\t emulateTransitionEnd(tip, transitionDuration);\n\t } else {\n\t complete();\n\t }\n\n\t this._hoverState = '';\n\t };\n\n\t _proto.update = function update() {\n\t if (this._popper !== null) {\n\t this._popper.scheduleUpdate();\n\t }\n\t } // Protected\n\t ;\n\n\t _proto.isWithContent = function isWithContent() {\n\t return Boolean(this.getTitle());\n\t };\n\n\t _proto.getTipElement = function getTipElement() {\n\t if (this.tip) {\n\t return this.tip;\n\t }\n\n\t var element = document.createElement('div');\n\t element.innerHTML = this.config.template;\n\t this.tip = element.children[0];\n\t return this.tip;\n\t };\n\n\t _proto.setContent = function setContent() {\n\t var tip = this.getTipElement();\n\t this.setElementContent(SelectorEngine.findOne(SELECTOR_TOOLTIP_INNER, tip), this.getTitle());\n\t tip.classList.remove(CLASS_NAME_FADE$1, CLASS_NAME_SHOW$3);\n\t };\n\n\t _proto.setElementContent = function setElementContent(element, content) {\n\t if (element === null) {\n\t return;\n\t }\n\n\t if (typeof content === 'object' && isElement(content)) {\n\t if (content.jquery) {\n\t content = content[0];\n\t } // content is a DOM node or a jQuery\n\n\n\t if (this.config.html) {\n\t if (content.parentNode !== element) {\n\t element.innerHTML = '';\n\t element.appendChild(content);\n\t }\n\t } else {\n\t element.textContent = content.textContent;\n\t }\n\n\t return;\n\t }\n\n\t if (this.config.html) {\n\t if (this.config.sanitize) {\n\t content = sanitizeHtml(content, this.config.whiteList, this.config.sanitizeFn);\n\t }\n\n\t element.innerHTML = content;\n\t } else {\n\t element.textContent = content;\n\t }\n\t };\n\n\t _proto.getTitle = function getTitle() {\n\t var title = this.element.getAttribute('data-original-title');\n\n\t if (!title) {\n\t title = typeof this.config.title === 'function' ? this.config.title.call(this.element) : this.config.title;\n\t }\n\n\t return title;\n\t } // Private\n\t ;\n\n\t _proto._getPopperConfig = function _getPopperConfig(attachment) {\n\t var _this3 = this;\n\n\t var defaultBsConfig = {\n\t placement: attachment,\n\t modifiers: {\n\t offset: this._getOffset(),\n\t flip: {\n\t behavior: this.config.fallbackPlacement\n\t },\n\t arrow: {\n\t element: \".\" + this.constructor.NAME + \"-arrow\"\n\t },\n\t preventOverflow: {\n\t boundariesElement: this.config.boundary\n\t }\n\t },\n\t onCreate: function onCreate(data) {\n\t if (data.originalPlacement !== data.placement) {\n\t _this3._handlePopperPlacementChange(data);\n\t }\n\t },\n\t onUpdate: function onUpdate(data) {\n\t return _this3._handlePopperPlacementChange(data);\n\t }\n\t };\n\t return _objectSpread2(_objectSpread2({}, defaultBsConfig), this.config.popperConfig);\n\t };\n\n\t _proto._addAttachmentClass = function _addAttachmentClass(attachment) {\n\t this.getTipElement().classList.add(CLASS_PREFIX + \"-\" + attachment);\n\t };\n\n\t _proto._getOffset = function _getOffset() {\n\t var _this4 = this;\n\n\t var offset = {};\n\n\t if (typeof this.config.offset === 'function') {\n\t offset.fn = function (data) {\n\t data.offsets = _objectSpread2(_objectSpread2({}, data.offsets), _this4.config.offset(data.offsets, _this4.element) || {});\n\t return data;\n\t };\n\t } else {\n\t offset.offset = this.config.offset;\n\t }\n\n\t return offset;\n\t };\n\n\t _proto._getContainer = function _getContainer() {\n\t if (this.config.container === false) {\n\t return document.body;\n\t }\n\n\t if (isElement(this.config.container)) {\n\t return this.config.container;\n\t }\n\n\t return SelectorEngine.findOne(this.config.container);\n\t };\n\n\t _proto._getAttachment = function _getAttachment(placement) {\n\t return AttachmentMap[placement.toUpperCase()];\n\t };\n\n\t _proto._setListeners = function _setListeners() {\n\t var _this5 = this;\n\n\t var triggers = this.config.trigger.split(' ');\n\t triggers.forEach(function (trigger) {\n\t if (trigger === 'click') {\n\t EventHandler.on(_this5.element, _this5.constructor.Event.CLICK, _this5.config.selector, function (event) {\n\t return _this5.toggle(event);\n\t });\n\t } else if (trigger !== TRIGGER_MANUAL) {\n\t var eventIn = trigger === TRIGGER_HOVER ? _this5.constructor.Event.MOUSEENTER : _this5.constructor.Event.FOCUSIN;\n\t var eventOut = trigger === TRIGGER_HOVER ? _this5.constructor.Event.MOUSELEAVE : _this5.constructor.Event.FOCUSOUT;\n\t EventHandler.on(_this5.element, eventIn, _this5.config.selector, function (event) {\n\t return _this5._enter(event);\n\t });\n\t EventHandler.on(_this5.element, eventOut, _this5.config.selector, function (event) {\n\t return _this5._leave(event);\n\t });\n\t }\n\t });\n\n\t this._hideModalHandler = function () {\n\t if (_this5.element) {\n\t _this5.hide();\n\t }\n\t };\n\n\t EventHandler.on(this.element.closest(\".\" + CLASS_NAME_MODAL), 'hide.bs.modal', this._hideModalHandler);\n\n\t if (this.config.selector) {\n\t this.config = _objectSpread2(_objectSpread2({}, this.config), {}, {\n\t trigger: 'manual',\n\t selector: ''\n\t });\n\t } else {\n\t this._fixTitle();\n\t }\n\t };\n\n\t _proto._fixTitle = function _fixTitle() {\n\t var titleType = typeof this.element.getAttribute('data-original-title');\n\n\t if (this.element.getAttribute('title') || titleType !== 'string') {\n\t this.element.setAttribute('data-original-title', this.element.getAttribute('title') || '');\n\t this.element.setAttribute('title', '');\n\t }\n\t };\n\n\t _proto._enter = function _enter(event, context) {\n\t var dataKey = this.constructor.DATA_KEY;\n\t context = context || Data.getData(event.target, dataKey);\n\n\t if (!context) {\n\t context = new this.constructor(event.target, this._getDelegateConfig());\n\t Data.setData(event.target, dataKey, context);\n\t }\n\n\t if (event) {\n\t context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true;\n\t }\n\n\t if (context.getTipElement().classList.contains(CLASS_NAME_SHOW$3) || context._hoverState === HOVER_STATE_SHOW) {\n\t context._hoverState = HOVER_STATE_SHOW;\n\t return;\n\t }\n\n\t clearTimeout(context._timeout);\n\t context._hoverState = HOVER_STATE_SHOW;\n\n\t if (!context.config.delay || !context.config.delay.show) {\n\t context.show();\n\t return;\n\t }\n\n\t context._timeout = setTimeout(function () {\n\t if (context._hoverState === HOVER_STATE_SHOW) {\n\t context.show();\n\t }\n\t }, context.config.delay.show);\n\t };\n\n\t _proto._leave = function _leave(event, context) {\n\t var dataKey = this.constructor.DATA_KEY;\n\t context = context || Data.getData(event.target, dataKey);\n\n\t if (!context) {\n\t context = new this.constructor(event.target, this._getDelegateConfig());\n\t Data.setData(event.target, dataKey, context);\n\t }\n\n\t if (event) {\n\t context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = false;\n\t }\n\n\t if (context._isWithActiveTrigger()) {\n\t return;\n\t }\n\n\t clearTimeout(context._timeout);\n\t context._hoverState = HOVER_STATE_OUT;\n\n\t if (!context.config.delay || !context.config.delay.hide) {\n\t context.hide();\n\t return;\n\t }\n\n\t context._timeout = setTimeout(function () {\n\t if (context._hoverState === HOVER_STATE_OUT) {\n\t context.hide();\n\t }\n\t }, context.config.delay.hide);\n\t };\n\n\t _proto._isWithActiveTrigger = function _isWithActiveTrigger() {\n\t for (var trigger in this._activeTrigger) {\n\t if (this._activeTrigger[trigger]) {\n\t return true;\n\t }\n\t }\n\n\t return false;\n\t };\n\n\t _proto._getConfig = function _getConfig(config) {\n\t var dataAttributes = Manipulator.getDataAttributes(this.element);\n\t Object.keys(dataAttributes).forEach(function (dataAttr) {\n\t if (DISALLOWED_ATTRIBUTES.indexOf(dataAttr) !== -1) {\n\t delete dataAttributes[dataAttr];\n\t }\n\t });\n\n\t if (config && typeof config.container === 'object' && config.container.jquery) {\n\t config.container = config.container[0];\n\t }\n\n\t config = _objectSpread2(_objectSpread2(_objectSpread2({}, this.constructor.Default), dataAttributes), typeof config === 'object' && config ? config : {});\n\n\t if (typeof config.delay === 'number') {\n\t config.delay = {\n\t show: config.delay,\n\t hide: config.delay\n\t };\n\t }\n\n\t if (typeof config.title === 'number') {\n\t config.title = config.title.toString();\n\t }\n\n\t if (typeof config.content === 'number') {\n\t config.content = config.content.toString();\n\t }\n\n\t typeCheckConfig(NAME$6, config, this.constructor.DefaultType);\n\n\t if (config.sanitize) {\n\t config.template = sanitizeHtml(config.template, config.whiteList, config.sanitizeFn);\n\t }\n\n\t return config;\n\t };\n\n\t _proto._getDelegateConfig = function _getDelegateConfig() {\n\t var config = {};\n\n\t if (this.config) {\n\t for (var key in this.config) {\n\t if (this.constructor.Default[key] !== this.config[key]) {\n\t config[key] = this.config[key];\n\t }\n\t }\n\t }\n\n\t return config;\n\t };\n\n\t _proto._cleanTipClass = function _cleanTipClass() {\n\t var tip = this.getTipElement();\n\t var tabClass = tip.getAttribute('class').match(BSCLS_PREFIX_REGEX);\n\n\t if (tabClass !== null && tabClass.length > 0) {\n\t tabClass.map(function (token) {\n\t return token.trim();\n\t }).forEach(function (tClass) {\n\t return tip.classList.remove(tClass);\n\t });\n\t }\n\t };\n\n\t _proto._handlePopperPlacementChange = function _handlePopperPlacementChange(popperData) {\n\t var popperInstance = popperData.instance;\n\t this.tip = popperInstance.popper;\n\n\t this._cleanTipClass();\n\n\t this._addAttachmentClass(this._getAttachment(popperData.placement));\n\t };\n\n\t _proto._fixTransition = function _fixTransition() {\n\t var tip = this.getTipElement();\n\t var initConfigAnimation = this.config.animation;\n\n\t if (tip.getAttribute('x-placement') !== null) {\n\t return;\n\t }\n\n\t tip.classList.remove(CLASS_NAME_FADE$1);\n\t this.config.animation = false;\n\t this.hide();\n\t this.show();\n\t this.config.animation = initConfigAnimation;\n\t } // Static\n\t ;\n\n\t Tooltip.jQueryInterface = function jQueryInterface(config) {\n\t return this.each(function () {\n\t var data = Data.getData(this, DATA_KEY$6);\n\n\t var _config = typeof config === 'object' && config;\n\n\t if (!data && /dispose|hide/.test(config)) {\n\t return;\n\t }\n\n\t if (!data) {\n\t data = new Tooltip(this, _config);\n\t }\n\n\t if (typeof config === 'string') {\n\t if (typeof data[config] === 'undefined') {\n\t throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n\t }\n\n\t data[config]();\n\t }\n\t });\n\t };\n\n\t Tooltip.getInstance = function getInstance(element) {\n\t return Data.getData(element, DATA_KEY$6);\n\t };\n\n\t _createClass(Tooltip, null, [{\n\t key: \"VERSION\",\n\t get: function get() {\n\t return VERSION$6;\n\t }\n\t }, {\n\t key: \"Default\",\n\t get: function get() {\n\t return Default$4;\n\t }\n\t }, {\n\t key: \"NAME\",\n\t get: function get() {\n\t return NAME$6;\n\t }\n\t }, {\n\t key: \"DATA_KEY\",\n\t get: function get() {\n\t return DATA_KEY$6;\n\t }\n\t }, {\n\t key: \"Event\",\n\t get: function get() {\n\t return Event$1;\n\t }\n\t }, {\n\t key: \"EVENT_KEY\",\n\t get: function get() {\n\t return EVENT_KEY$6;\n\t }\n\t }, {\n\t key: \"DefaultType\",\n\t get: function get() {\n\t return DefaultType$4;\n\t }\n\t }]);\n\n\t return Tooltip;\n\t}();\n\n\tvar $$7 = getjQuery();\n\t/**\n\t * ------------------------------------------------------------------------\n\t * jQuery\n\t * ------------------------------------------------------------------------\n\t * add .tooltip to jQuery only if jQuery is present\n\t */\n\n\t/* istanbul ignore if */\n\n\tif ($$7) {\n\t var JQUERY_NO_CONFLICT$6 = $$7.fn[NAME$6];\n\t $$7.fn[NAME$6] = Tooltip.jQueryInterface;\n\t $$7.fn[NAME$6].Constructor = Tooltip;\n\n\t $$7.fn[NAME$6].noConflict = function () {\n\t $$7.fn[NAME$6] = JQUERY_NO_CONFLICT$6;\n\t return Tooltip.jQueryInterface;\n\t };\n\t}\n\n\t/**\n\t * ------------------------------------------------------------------------\n\t * Constants\n\t * ------------------------------------------------------------------------\n\t */\n\n\tvar NAME$7 = 'popover';\n\tvar VERSION$7 = '5.0.0-alpha1';\n\tvar DATA_KEY$7 = 'bs.popover';\n\tvar EVENT_KEY$7 = \".\" + DATA_KEY$7;\n\tvar CLASS_PREFIX$1 = 'bs-popover';\n\tvar BSCLS_PREFIX_REGEX$1 = new RegExp(\"(^|\\\\s)\" + CLASS_PREFIX$1 + \"\\\\S+\", 'g');\n\n\tvar Default$5 = _objectSpread2(_objectSpread2({}, Tooltip.Default), {}, {\n\t placement: 'right',\n\t trigger: 'click',\n\t content: '',\n\t template: '
' + '
' + '

' + '
'\n\t});\n\n\tvar DefaultType$5 = _objectSpread2(_objectSpread2({}, Tooltip.DefaultType), {}, {\n\t content: '(string|element|function)'\n\t});\n\n\tvar Event$2 = {\n\t HIDE: \"hide\" + EVENT_KEY$7,\n\t HIDDEN: \"hidden\" + EVENT_KEY$7,\n\t SHOW: \"show\" + EVENT_KEY$7,\n\t SHOWN: \"shown\" + EVENT_KEY$7,\n\t INSERTED: \"inserted\" + EVENT_KEY$7,\n\t CLICK: \"click\" + EVENT_KEY$7,\n\t FOCUSIN: \"focusin\" + EVENT_KEY$7,\n\t FOCUSOUT: \"focusout\" + EVENT_KEY$7,\n\t MOUSEENTER: \"mouseenter\" + EVENT_KEY$7,\n\t MOUSELEAVE: \"mouseleave\" + EVENT_KEY$7\n\t};\n\tvar CLASS_NAME_FADE$2 = 'fade';\n\tvar CLASS_NAME_SHOW$4 = 'show';\n\tvar SELECTOR_TITLE = '.popover-header';\n\tvar SELECTOR_CONTENT = '.popover-body';\n\t/**\n\t * ------------------------------------------------------------------------\n\t * Class Definition\n\t * ------------------------------------------------------------------------\n\t */\n\n\tvar Popover = /*#__PURE__*/function (_Tooltip) {\n\t _inheritsLoose(Popover, _Tooltip);\n\n\t function Popover() {\n\t return _Tooltip.apply(this, arguments) || this;\n\t }\n\n\t var _proto = Popover.prototype;\n\n\t // Overrides\n\t _proto.isWithContent = function isWithContent() {\n\t return this.getTitle() || this._getContent();\n\t };\n\n\t _proto.setContent = function setContent() {\n\t var tip = this.getTipElement(); // we use append for html objects to maintain js events\n\n\t this.setElementContent(SelectorEngine.findOne(SELECTOR_TITLE, tip), this.getTitle());\n\n\t var content = this._getContent();\n\n\t if (typeof content === 'function') {\n\t content = content.call(this.element);\n\t }\n\n\t this.setElementContent(SelectorEngine.findOne(SELECTOR_CONTENT, tip), content);\n\t tip.classList.remove(CLASS_NAME_FADE$2, CLASS_NAME_SHOW$4);\n\t };\n\n\t _proto._addAttachmentClass = function _addAttachmentClass(attachment) {\n\t this.getTipElement().classList.add(CLASS_PREFIX$1 + \"-\" + attachment);\n\t } // Private\n\t ;\n\n\t _proto._getContent = function _getContent() {\n\t return this.element.getAttribute('data-content') || this.config.content;\n\t };\n\n\t _proto._cleanTipClass = function _cleanTipClass() {\n\t var tip = this.getTipElement();\n\t var tabClass = tip.getAttribute('class').match(BSCLS_PREFIX_REGEX$1);\n\n\t if (tabClass !== null && tabClass.length > 0) {\n\t tabClass.map(function (token) {\n\t return token.trim();\n\t }).forEach(function (tClass) {\n\t return tip.classList.remove(tClass);\n\t });\n\t }\n\t } // Static\n\t ;\n\n\t Popover.jQueryInterface = function jQueryInterface(config) {\n\t return this.each(function () {\n\t var data = Data.getData(this, DATA_KEY$7);\n\n\t var _config = typeof config === 'object' ? config : null;\n\n\t if (!data && /dispose|hide/.test(config)) {\n\t return;\n\t }\n\n\t if (!data) {\n\t data = new Popover(this, _config);\n\t Data.setData(this, DATA_KEY$7, data);\n\t }\n\n\t if (typeof config === 'string') {\n\t if (typeof data[config] === 'undefined') {\n\t throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n\t }\n\n\t data[config]();\n\t }\n\t });\n\t };\n\n\t Popover.getInstance = function getInstance(element) {\n\t return Data.getData(element, DATA_KEY$7);\n\t };\n\n\t _createClass(Popover, null, [{\n\t key: \"VERSION\",\n\t // Getters\n\t get: function get() {\n\t return VERSION$7;\n\t }\n\t }, {\n\t key: \"Default\",\n\t get: function get() {\n\t return Default$5;\n\t }\n\t }, {\n\t key: \"NAME\",\n\t get: function get() {\n\t return NAME$7;\n\t }\n\t }, {\n\t key: \"DATA_KEY\",\n\t get: function get() {\n\t return DATA_KEY$7;\n\t }\n\t }, {\n\t key: \"Event\",\n\t get: function get() {\n\t return Event$2;\n\t }\n\t }, {\n\t key: \"EVENT_KEY\",\n\t get: function get() {\n\t return EVENT_KEY$7;\n\t }\n\t }, {\n\t key: \"DefaultType\",\n\t get: function get() {\n\t return DefaultType$5;\n\t }\n\t }]);\n\n\t return Popover;\n\t}(Tooltip);\n\n\tvar $$8 = getjQuery();\n\t/**\n\t * ------------------------------------------------------------------------\n\t * jQuery\n\t * ------------------------------------------------------------------------\n\t */\n\n\t/* istanbul ignore if */\n\n\tif ($$8) {\n\t var JQUERY_NO_CONFLICT$7 = $$8.fn[NAME$7];\n\t $$8.fn[NAME$7] = Popover.jQueryInterface;\n\t $$8.fn[NAME$7].Constructor = Popover;\n\n\t $$8.fn[NAME$7].noConflict = function () {\n\t $$8.fn[NAME$7] = JQUERY_NO_CONFLICT$7;\n\t return Popover.jQueryInterface;\n\t };\n\t}\n\n\t/**\n\t * ------------------------------------------------------------------------\n\t * Constants\n\t * ------------------------------------------------------------------------\n\t */\n\n\tvar NAME$8 = 'scrollspy';\n\tvar VERSION$8 = '5.0.0-alpha1';\n\tvar DATA_KEY$8 = 'bs.scrollspy';\n\tvar EVENT_KEY$8 = \".\" + DATA_KEY$8;\n\tvar DATA_API_KEY$6 = '.data-api';\n\tvar Default$6 = {\n\t offset: 10,\n\t method: 'auto',\n\t target: ''\n\t};\n\tvar DefaultType$6 = {\n\t offset: 'number',\n\t method: 'string',\n\t target: '(string|element)'\n\t};\n\tvar EVENT_ACTIVATE = \"activate\" + EVENT_KEY$8;\n\tvar EVENT_SCROLL = \"scroll\" + EVENT_KEY$8;\n\tvar EVENT_LOAD_DATA_API$1 = \"load\" + EVENT_KEY$8 + DATA_API_KEY$6;\n\tvar CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item';\n\tvar CLASS_NAME_ACTIVE$2 = 'active';\n\tvar SELECTOR_DATA_SPY = '[data-spy=\"scroll\"]';\n\tvar SELECTOR_NAV_LIST_GROUP = '.nav, .list-group';\n\tvar SELECTOR_NAV_LINKS = '.nav-link';\n\tvar SELECTOR_NAV_ITEMS = '.nav-item';\n\tvar SELECTOR_LIST_ITEMS = '.list-group-item';\n\tvar SELECTOR_DROPDOWN = '.dropdown';\n\tvar SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';\n\tvar METHOD_OFFSET = 'offset';\n\tvar METHOD_POSITION = 'position';\n\t/**\n\t * ------------------------------------------------------------------------\n\t * Class Definition\n\t * ------------------------------------------------------------------------\n\t */\n\n\tvar ScrollSpy = /*#__PURE__*/function () {\n\t function ScrollSpy(element, config) {\n\t var _this = this;\n\n\t this._element = element;\n\t this._scrollElement = element.tagName === 'BODY' ? window : element;\n\t this._config = this._getConfig(config);\n\t this._selector = this._config.target + \" \" + SELECTOR_NAV_LINKS + \",\" + (this._config.target + \" \" + SELECTOR_LIST_ITEMS + \",\") + (this._config.target + \" .\" + CLASS_NAME_DROPDOWN_ITEM);\n\t this._offsets = [];\n\t this._targets = [];\n\t this._activeTarget = null;\n\t this._scrollHeight = 0;\n\t EventHandler.on(this._scrollElement, EVENT_SCROLL, function (event) {\n\t return _this._process(event);\n\t });\n\t this.refresh();\n\n\t this._process();\n\n\t Data.setData(element, DATA_KEY$8, this);\n\t } // Getters\n\n\n\t var _proto = ScrollSpy.prototype;\n\n\t // Public\n\t _proto.refresh = function refresh() {\n\t var _this2 = this;\n\n\t var autoMethod = this._scrollElement === this._scrollElement.window ? METHOD_OFFSET : METHOD_POSITION;\n\t var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method;\n\t var offsetBase = offsetMethod === METHOD_POSITION ? this._getScrollTop() : 0;\n\t this._offsets = [];\n\t this._targets = [];\n\t this._scrollHeight = this._getScrollHeight();\n\t var targets = SelectorEngine.find(this._selector);\n\t targets.map(function (element) {\n\t var target;\n\t var targetSelector = getSelectorFromElement(element);\n\n\t if (targetSelector) {\n\t target = SelectorEngine.findOne(targetSelector);\n\t }\n\n\t if (target) {\n\t var targetBCR = target.getBoundingClientRect();\n\n\t if (targetBCR.width || targetBCR.height) {\n\t return [Manipulator[offsetMethod](target).top + offsetBase, targetSelector];\n\t }\n\t }\n\n\t return null;\n\t }).filter(function (item) {\n\t return item;\n\t }).sort(function (a, b) {\n\t return a[0] - b[0];\n\t }).forEach(function (item) {\n\t _this2._offsets.push(item[0]);\n\n\t _this2._targets.push(item[1]);\n\t });\n\t };\n\n\t _proto.dispose = function dispose() {\n\t Data.removeData(this._element, DATA_KEY$8);\n\t EventHandler.off(this._scrollElement, EVENT_KEY$8);\n\t this._element = null;\n\t this._scrollElement = null;\n\t this._config = null;\n\t this._selector = null;\n\t this._offsets = null;\n\t this._targets = null;\n\t this._activeTarget = null;\n\t this._scrollHeight = null;\n\t } // Private\n\t ;\n\n\t _proto._getConfig = function _getConfig(config) {\n\t config = _objectSpread2(_objectSpread2({}, Default$6), typeof config === 'object' && config ? config : {});\n\n\t if (typeof config.target !== 'string' && isElement(config.target)) {\n\t var id = config.target.id;\n\n\t if (!id) {\n\t id = getUID(NAME$8);\n\t config.target.id = id;\n\t }\n\n\t config.target = \"#\" + id;\n\t }\n\n\t typeCheckConfig(NAME$8, config, DefaultType$6);\n\t return config;\n\t };\n\n\t _proto._getScrollTop = function _getScrollTop() {\n\t return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop;\n\t };\n\n\t _proto._getScrollHeight = function _getScrollHeight() {\n\t return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);\n\t };\n\n\t _proto._getOffsetHeight = function _getOffsetHeight() {\n\t return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height;\n\t };\n\n\t _proto._process = function _process() {\n\t var scrollTop = this._getScrollTop() + this._config.offset;\n\n\t var scrollHeight = this._getScrollHeight();\n\n\t var maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight();\n\n\t if (this._scrollHeight !== scrollHeight) {\n\t this.refresh();\n\t }\n\n\t if (scrollTop >= maxScroll) {\n\t var target = this._targets[this._targets.length - 1];\n\n\t if (this._activeTarget !== target) {\n\t this._activate(target);\n\t }\n\n\t return;\n\t }\n\n\t if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n\t this._activeTarget = null;\n\n\t this._clear();\n\n\t return;\n\t }\n\n\t for (var i = this._offsets.length; i--;) {\n\t var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]);\n\n\t if (isActiveTarget) {\n\t this._activate(this._targets[i]);\n\t }\n\t }\n\t };\n\n\t _proto._activate = function _activate(target) {\n\t this._activeTarget = target;\n\n\t this._clear();\n\n\t var queries = this._selector.split(',').map(function (selector) {\n\t return selector + \"[data-target=\\\"\" + target + \"\\\"],\" + selector + \"[href=\\\"\" + target + \"\\\"]\";\n\t });\n\n\t var link = SelectorEngine.findOne(queries.join(','));\n\n\t if (link.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {\n\t SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE, link.closest(SELECTOR_DROPDOWN)).classList.add(CLASS_NAME_ACTIVE$2);\n\t link.classList.add(CLASS_NAME_ACTIVE$2);\n\t } else {\n\t // Set triggered link as active\n\t link.classList.add(CLASS_NAME_ACTIVE$2);\n\t SelectorEngine.parents(link, SELECTOR_NAV_LIST_GROUP).forEach(function (listGroup) {\n\t // Set triggered links parents as active\n\t // With both