PageSourceSearch

https://quinto-canal.com/wp-content/cache/wpfc-minified/jpyelhhw/rocz.js

js quinto-canal.com collected 2026-09-25 00:33:38 UTC 243,782 bytes, 6,550 lines download raw bytes

1// source --> https://quinto-canal.com/wp-content/themes/newsup/js/navigation.js?ver=7.1.1 
2/**
3 * navigation.js
4 *
5 * Handles toggling the navigation menu for small screens and enables tab
6 * support for dropdown menus.
7 */
8( function() {
9	var container, button, menu, links, subMenus;
10
11	container = document.getElementById( 'site-navigation' );
12	if ( ! container ) {
13		return;
14	}
15
16	button = container.getElementsByTagName( 'button' )[0];
17	if ( 'undefined' === typeof button ) {
18		return;
19	}
20
21	menu = container.getElementsByTagName( 'ul' )[0];
22
23	// Hide menu toggle button if menu is empty and return early.
24	if ( 'undefined' === typeof menu ) {
25		button.style.display = 'none';
26		return;
27	}
28
29	menu.setAttribute( 'aria-expanded', 'false' );
30	if ( -1 === menu.className.indexOf( 'nav-menu' ) ) {
31		menu.className += ' nav-menu';
32	}
33
34	button.onclick = function() {
35		if ( -1 !== container.className.indexOf( 'toggled' ) ) {
36			container.className = container.className.replace( ' toggled', '' );
37			button.setAttribute( 'aria-expanded', 'false' );
38			menu.setAttribute( 'aria-expanded', 'false' );
39		} else {
40			container.className += ' toggled';
41			button.setAttribute( 'aria-expanded', 'true' );
42			menu.setAttribute( 'aria-expanded', 'true' );
43		}
44	};
45
46	// Get all the link elements within the menu.
47	links    = menu.getElementsByTagName( 'a' );
48	subMenus = menu.getElementsByTagName( 'ul' );
49
50	// Set menu items with submenus to aria-haspopup="true".
51	for ( var i = 0, len = subMenus.length; i < len; i++ ) {
52		subMenus[i].parentNode.setAttribute( 'aria-haspopup', 'true' );
53	}
54
55	// Each time a menu link is focused or blurred, toggle focus.
56	for ( i = 0, len = links.length; i < len; i++ ) {
57		links[i].addEventListener( 'focus', toggleFocus, true );
58		links[i].addEventListener( 'blur', toggleFocus, true );
59	}
60
61	/**
62	 * Sets or removes .focus class on an element.
63	 */
64	function toggleFocus() {
65		var self = this;
66
67		// Move up through the ancestors of the current link until we hit .nav-menu.
68		while ( -1 === self.className.indexOf( 'navbar-nav' ) ) {
69
70			// On li elements toggle the class .focus.
71			if ( 'li' === self.tagName.toLowerCase() ) {
72				if ( -1 !== self.className.indexOf( 'focus' ) ) {
73					self.className = self.className.replace( ' focus', '' );
74				} else {
75					self.className += ' focus';
76				}
77			}
78
79			self = self.parentElement;
80		}
81	}
82} )();
83// source --> https://quinto-canal.com/wp-content/themes/newsup/js/bootstrap.js?ver=7.1.1 
84/*!
85  * Bootstrap v4.4.1 (https://getbootstrap.com/)
86  * Copyright 2011-2019 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
87  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
88  */
89(function (global, factory) {
90  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('jquery'), require('popper.js')) :
91  typeof define === 'function' && define.amd ? define(['exports', 'jquery', 'popper.js'], factory) :
92  (global = global || self, factory(global.bootstrap = {}, global.jQuery, global.Popper));
93}(this, (function (exports, $, Popper) { 'use strict';
94
95  $ = $ && $.hasOwnProperty('default') ? $['default'] : $;
96  Popper = Popper && Popper.hasOwnProperty('default') ? Popper['default'] : Popper;
97
98  function _defineProperties(target, props) {
99    for (var i = 0; i < props.length; i++) {
100      var descriptor = props[i];
101      descriptor.enumerable = descriptor.enumerable || false;
102      descriptor.configurable = true;
103      if ("value" in descriptor) descriptor.writable = true;
104      Object.defineProperty(target, descriptor.key, descriptor);
105    }
106  }
107
108  function _createClass(Constructor, protoProps, staticProps) {
109    if (protoProps) _defineProperties(Constructor.prototype, protoProps);
110    if (staticProps) _defineProperties(Constructor, staticProps);
111    return Constructor;
112  }
113
114  function _defineProperty(obj, key, value) {
115    if (key in obj) {
116      Object.defineProperty(obj, key, {
117        value: value,
118        enumerable: true,
119        configurable: true,
120        writable: true
121      });
122    } else {
123      obj[key] = value;
124    }
125
126    return obj;
127  }
128
129  function ownKeys(object, enumerableOnly) {
130    var keys = Object.keys(object);
131
132    if (Object.getOwnPropertySymbols) {
133      var symbols = Object.getOwnPropertySymbols(object);
134      if (enumerableOnly) symbols = symbols.filter(function (sym) {
135        return Object.getOwnPropertyDescriptor(object, sym).enumerable;
136      });
137      keys.push.apply(keys, symbols);
138    }
139
140    return keys;
141  }
142
143  function _objectSpread2(target) {
144    for (var i = 1; i < arguments.length; i++) {
145      var source = arguments[i] != null ? arguments[i] : {};
146
147      if (i % 2) {
148        ownKeys(Object(source), true).forEach(function (key) {
149          _defineProperty(target, key, source[key]);
150        });
151      } else if (Object.getOwnPropertyDescriptors) {
152        Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
153      } else {
154        ownKeys(Object(source)).forEach(function (key) {
155          Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
156        });
157      }
158    }
159
160    return target;
161  }
162
163  function _inheritsLoose(subClass, superClass) {
164    subClass.prototype = Object.create(superClass.prototype);
165    subClass.prototype.constructor = subClass;
166    subClass.__proto__ = superClass;
167  }
168
169  /**
170   * --------------------------------------------------------------------------
171   * Bootstrap (v4.4.1): util.js
172   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
173   * --------------------------------------------------------------------------
174   */
175  /**
176   * ------------------------------------------------------------------------
177   * Private TransitionEnd Helpers
178   * ------------------------------------------------------------------------
179   */
180
181  var TRANSITION_END = 'transitionend';
182  var MAX_UID = 1000000;
183  var MILLISECONDS_MULTIPLIER = 1000; // Shoutout AngusCroll (https://goo.gl/pxwQGp)
184
185  function toType(obj) {
186    return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase();
187  }
188
189  function getSpecialTransitionEndEvent() {
190    return {
191      bindType: TRANSITION_END,
192      delegateType: TRANSITION_END,
193      handle: function handle(event) {
194        if ($(event.target).is(this)) {
195          return event.handleObj.handler.apply(this, arguments); // eslint-disable-line prefer-rest-params
196        }
197
198        return undefined; // eslint-disable-line no-undefined
199      }
200    };
201  }
202
203  function transitionEndEmulator(duration) {
204    var _this = this;
205
206    var called = false;
207    $(this).one(Util.TRANSITION_END, function () {
208      called = true;
209    });
210    setTimeout(function () {
211      if (!called) {
212        Util.triggerTransitionEnd(_this);
213      }
214    }, duration);
215    return this;
216  }
217
218  function setTransitionEndSupport() {
219    $.fn.emulateTransitionEnd = transitionEndEmulator;
220    $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent();
221  }
222  /**
223   * --------------------------------------------------------------------------
224   * Public Util Api
225   * --------------------------------------------------------------------------
226   */
227
228
229  var Util = {
230    TRANSITION_END: 'bsTransitionEnd',
231    getUID: function getUID(prefix) {
232      do {
233        // eslint-disable-next-line no-bitwise
234        prefix += ~~(Math.random() * MAX_UID); // "~~" acts like a faster Math.floor() here
235      } while (document.getElementById(prefix));
236
237      return prefix;
238    },
239    getSelectorFromElement: function getSelectorFromElement(element) {
240      var selector = element.getAttribute('data-target');
241
242      if (!selector || selector === '#') {
243        var hrefAttr = element.getAttribute('href');
244        selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : '';
245      }
246
247      try {
248        return document.querySelector(selector) ? selector : null;
249      } catch (err) {
250        return null;
251      }
252    },
253    getTransitionDurationFromElement: function getTransitionDurationFromElement(element) {
254      if (!element) {
255        return 0;
256      } // Get transition-duration of the element
257
258
259      var transitionDuration = $(element).css('transition-duration');
260      var transitionDelay = $(element).css('transition-delay');
261      var floatTransitionDuration = parseFloat(transitionDuration);
262      var floatTransitionDelay = parseFloat(transitionDelay); // Return 0 if element or transition duration is not found
263
264      if (!floatTransitionDuration && !floatTransitionDelay) {
265        return 0;
266      } // If multiple durations are defined, take the first
267
268
269      transitionDuration = transitionDuration.split(',')[0];
270      transitionDelay = transitionDelay.split(',')[0];
271      return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;
272    },
273    reflow: function reflow(element) {
274      return element.offsetHeight;
275    },
276    triggerTransitionEnd: function triggerTransitionEnd(element) {
277      $(element).trigger(TRANSITION_END);
278    },
279    // TODO: Remove in v5
280    supportsTransitionEnd: function supportsTransitionEnd() {
281      return Boolean(TRANSITION_END);
282    },
283    isElement: function isElement(obj) {
284      return (obj[0] || obj).nodeType;
285    },
286    typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) {
287      for (var property in configTypes) {
288        if (Object.prototype.hasOwnProperty.call(configTypes, property)) {
289          var expectedTypes = configTypes[property];
290          var value = config[property];
291          var valueType = value && Util.isElement(value) ? 'element' : toType(value);
292
293          if (!new RegExp(expectedTypes).test(valueType)) {
294            throw new Error(componentName.toUpperCase() + ": " + ("Option \"" + property + "\" provided type \"" + valueType + "\" ") + ("but expected type \"" + expectedTypes + "\"."));
295          }
296        }
297      }
298    },
299    findShadowRoot: function findShadowRoot(element) {
300      if (!document.documentElement.attachShadow) {
301        return null;
302      } // Can find the shadow root otherwise it'll return the document
303
304
305      if (typeof element.getRootNode === 'function') {
306        var root = element.getRootNode();
307        return root instanceof ShadowRoot ? root : null;
308      }
309
310      if (element instanceof ShadowRoot) {
311        return element;
312      } // when we don't find a shadow root
313
314
315      if (!element.parentNode) {
316        return null;
317      }
318
319      return Util.findShadowRoot(element.parentNode);
320    },
321    jQueryDetection: function jQueryDetection() {
322      if (typeof $ === 'undefined') {
323        throw new TypeError('Bootstrap\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\'s JavaScript.');
324      }
325
326      var version = $.fn.jquery.split(' ')[0].split('.');
327      var minMajor = 1;
328      var ltMajor = 2;
329      var minMinor = 9;
330      var minPatch = 1;
331      var maxMajor = 4;
332
333      if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >
333= maxMajor) {
334        throw new Error('Bootstrap\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0');
335      }
336    }
337  };
338  Util.jQueryDetection();
339  setTransitionEndSupport();
340
341  /**
342   * ------------------------------------------------------------------------
343   * Constants
344   * ------------------------------------------------------------------------
345   */
346
347  var NAME = 'alert';
348  var VERSION = '4.4.1';
349  var DATA_KEY = 'bs.alert';
350  var EVENT_KEY = "." + DATA_KEY;
351  var DATA_API_KEY = '.data-api';
352  var JQUERY_NO_CONFLICT = $.fn[NAME];
353  var Selector = {
354    DISMISS: '[data-dismiss="alert"]'
355  };
356  var Event = {
357    CLOSE: "close" + EVENT_KEY,
358    CLOSED: "closed" + EVENT_KEY,
359    CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY
360  };
361  var ClassName = {
362    ALERT: 'alert',
363    FADE: 'fade',
364    SHOW: 'show'
365  };
366  /**
367   * ------------------------------------------------------------------------
368   * Class Definition
369   * ------------------------------------------------------------------------
370   */
371
372  var Alert =
373  /*#__PURE__*/
374  function () {
375    function Alert(element) {
376      this._element = element;
377    } // Getters
378
379
380    var _proto = Alert.prototype;
381
382    // Public
383    _proto.close = function close(element) {
384      var rootElement = this._element;
385
386      if (element) {
387        rootElement = this._getRootElement(element);
388      }
389
390      var customEvent = this._triggerCloseEvent(rootElement);
391
392      if (customEvent.isDefaultPrevented()) {
393        return;
394      }
395
396      this._removeElement(rootElement);
397    };
398
399    _proto.dispose = function dispose() {
400      $.removeData(this._element, DATA_KEY);
401      this._element = null;
402    } // Private
403    ;
404
405    _proto._getRootElement = function _getRootElement(element) {
406      var selector = Util.getSelectorFromElement(element);
407      var parent = false;
408
409      if (selector) {
410        parent = document.querySelector(selector);
411      }
412
413      if (!parent) {
414        parent = $(element).closest("." + ClassName.ALERT)[0];
415      }
416
417      return parent;
418    };
419
420    _proto._triggerCloseEvent = function _triggerCloseEvent(element) {
421      var closeEvent = $.Event(Event.CLOSE);
422      $(element).trigger(closeEvent);
423      return closeEvent;
424    };
425
426    _proto._removeElement = function _removeElement(element) {
427      var _this = this;
428
429      $(element).removeClass(ClassName.SHOW);
430
431      if (!$(element).hasClass(ClassName.FADE)) {
432        this._destroyElement(element);
433
434        return;
435      }
436
437      var transitionDuration = Util.getTransitionDurationFromElement(element);
438      $(element).one(Util.TRANSITION_END, function (event) {
439        return _this._destroyElement(element, event);
440      }).emulateTransitionEnd(transitionDuration);
441    };
442
443    _proto._destroyElement = function _destroyElement(element) {
444      $(element).detach().trigger(Event.CLOSED).remove();
445    } // Static
446    ;
447
448    Alert._jQueryInterface = function _jQueryInterface(config) {
449      return this.each(function () {
450        var $element = $(this);
451        var data = $element.data(DATA_KEY);
452
453        if (!data) {
454          data = new Alert(this);
455          $element.data(DATA_KEY, data);
456        }
457
458        if (config === 'close') {
459          data[config](this);
460        }
461      });
462    };
463
464    Alert._handleDismiss = function _handleDismiss(alertInstance) {
465      return function (event) {
466        if (event) {
467          event.preventDefault();
468        }
469
470        alertInstance.close(this);
471      };
472    };
473
474    _createClass(Alert, null, [{
475      key: "VERSION",
476      get: function get() {
477        return VERSION;
478      }
479    }]);
480
481    return Alert;
482  }();
483  /**
484   * ------------------------------------------------------------------------
485   * Data Api implementation
486   * ------------------------------------------------------------------------
487   */
488
489
490  $(document).on(Event.CLICK_DATA_API, Selector.DISMISS, Alert._handleDismiss(new Alert()));
491  /**
492   * ------------------------------------------------------------------------
493   * jQuery
494   * ------------------------------------------------------------------------
495   */
496
497  $.fn[NAME] = Alert._jQueryInterface;
498  $.fn[NAME].Constructor = Alert;
499
500  $.fn[NAME].noConflict = function () {
501    $.fn[NAME] = JQUERY_NO_CONFLICT;
502    return Alert._jQueryInterface;
503  };
504
505  /**
506   * ------------------------------------------------------------------------
507   * Constants
508   * ------------------------------------------------------------------------
509   */
510
511  var NAME$1 = 'button';
512  var VERSION$1 = '4.4.1';
513  var DATA_KEY$1 = 'bs.button';
514  var EVENT_KEY$1 = "." + DATA_KEY$1;
515  var DATA_API_KEY$1 = '.data-api';
516  var JQUERY_NO_CONFLICT$1 = $.fn[NAME$1];
517  var ClassName$1 = {
518    ACTIVE: 'active',
519    BUTTON: 'btn',
520    FOCUS: 'focus'
521  };
522  var Selector$1 = {
523    DATA_TOGGLE_CARROT: '[data-toggle^="button"]',
524    DATA_TOGGLES: '[data-toggle="buttons"]',
525    DATA_TOGGLE: '[data-toggle="button"]',
526    DATA_TOGGLES_BUTTONS: '[data-toggle="buttons"] .btn',
527    INPUT: 'input:not([type="hidden"])',
528    ACTIVE: '.active',
529    BUTTON: '.btn'
530  };
531  var Event$1 = {
532    CLICK_DATA_API: "click" + EVENT_KEY$1 + DATA_API_KEY$1,
533    FOCUS_BLUR_DATA_API: "focus" + EVENT_KEY$1 + DATA_API_KEY$1 + " " + ("blur" + EVENT_KEY$1 + DATA_API_KEY$1),
534    LOAD_DATA_API: "load" + EVENT_KEY$1 + DATA_API_KEY$1
535  };
536  /**
537   * ------------------------------------------------------------------------
538   * Class Definition
539   * ------------------------------------------------------------------------
540   */
541
542  var Button =
543  /*#__PURE__*/
544  function () {
545    function Button(element) {
546      this._element = element;
547    } // Getters
548
549
550    var _proto = Button.prototype;
551
552    // Public
553    _proto.toggle = function toggle() {
554      var triggerChangeEvent = true;
555      var addAriaPressed = true;
556      var rootElement = $(this._element).closest(Selector$1.DATA_TOGGLES)[0];
557
558      if (rootElement) {
559        var input = this._element.querySelector(Selector$1.INPUT);
560
561        if (input) {
562          if (input.type === 'radio') {
563            if (input.checked && this._element.classList.contains(ClassName$1.ACTIVE)) {
564              triggerChangeEvent = false;
565            } else {
566              var activeElement = rootElement.querySelector(Selector$1.ACTIVE);
567
568              if (activeElement) {
569                $(activeElement).removeClass(ClassName$1.ACTIVE);
570              }
571            }
572          } else if (input.type === 'checkbox') {
573            if (this._element.tagName === 'LABEL' && input.checked === this._element.classList.contains(ClassName$1.ACTIVE)) {
574              triggerChangeEvent = false;
575            }
576          } else {
577            // if it's not a radio button or checkbox don't add a pointless/invalid checked property to the input
578            triggerChangeEvent = false;
579          }
580
581          if (triggerChangeEvent) {
582            input.checked = !this._element.classList.contains(ClassName$1.ACTIVE);
583            $(input).trigger('change');
584          }
585
586          input.focus();
587          addAriaPressed = false;
588        }
589      }
590
591      if (!(this._element.hasAttribute('disabled') || this._element.classList.contains('disabled'))) {
592        if (addAriaPressed) {
593          this._element.setAttribute('aria-pressed', !this._element.classList.contains(ClassName$1.ACTIVE));
594        }
595
596        if (triggerChangeEvent) {
597          $(this._element).toggleClass(ClassName$1.ACTIVE);
598        }
599      }
600    };
601
602    _proto.dispose = function dispose() {
603      $.removeData(this._element, DATA_KEY$1);
604      this._element = null;
605    } // Static
606    ;
607
608    Button._jQueryInterface = function _jQueryInterface(config) {
609      return this.each(function () {
610        var data = $(this).data(DATA_KEY$1);
611
612        if (!data) {
613          data = new Button(this);
614          $(this).data(DATA_KEY$1, data);
615        }
616
617        if (config === 'toggle') {
618          data[config]();
619        }
620      });
621    };
622
623    _createClass(Button, null, [{
624      key: "VERSION",
625      get: function get() {
626        return VERSION$1;
627      }
628    }]);
629
630    return Button;
631  }();
632  /**
633   * ------------------------------------------------------------------------
634   * Data Api implementation
635   * ------------------------------------------------------------------------
636   */
637
638
639  $(document).on(Event$1.CLICK_DATA_API, Selector$1.DATA_TOGGLE_CARROT, function (event) {
640    var button = event.target;
641
642    if (!$(button).hasClass(ClassName$1.BUTTON)) {
643      button = $(button).closest(Selector$1.BUTTON)[0];
644    }
645
646    if (!button || button.hasAttribute('disabled') || button.classList.contains('disabled')) {
647      event.preventDefault(); // work around Firefox bug #1540995
648    } else {
649      var inputBtn = button.querySelector(Selector$1.INPUT);
650
651      if (inputBtn && (inputBtn.hasAttribute('disabled') || inputBtn.classList.contains('disabled'))) {
652        event.preventDefault(); // work around Firefox bug #1540995
653
654        return;
655      }
656
657      Button._jQueryInterface.call($(button), 'toggle');
658    }
659  }).on(Event$1.FOCUS_BLUR_DATA_API, Selector$1.DATA_TOGGLE_CARROT, function (event) {
660    var button = $(event.target).closest(Selector$1.BUTTON)[0];
661    $(button).toggleClass(ClassName$1.FOCUS, /^focus(in)?$/.test(event.type));
662  });
663  $(window).on(Event$1.LOAD_DATA_API, function () {
664    // ensure correct active class is set to match the controls' actual values/states
665    // find all checkboxes/readio buttons inside data-toggle groups
666    var buttons = [].slice.call(document.querySelectorAll(Selector$1.DATA_TOGGLES_BUTTONS));
667
668    for (var i = 0, len = buttons.length; i < len; i++) {
669      var button = buttons[i];
670      var input = button.querySelector(Selector$1.INPUT);
671
672      if (input.checked || input.hasAttribute('checked')) {
673        button.classList.add(ClassName$1.ACTIVE);
674      } else {
675        button.classList.remove(ClassName$1.ACTIVE);
676      }
677    } // find all button toggles
678
679
680    buttons = [].slice.call(document.querySelectorAll(Selector$1.DATA_TOGGLE));
681
682    for (var _i = 0, _len = buttons.length; _i < _len; _i++) {
683      var _button = buttons[_i];
684
685      if (_button.getAttribute('aria-pressed') === 'true') {
686        _button.classList.add(ClassName$1.ACTIVE);
687      } else {
688        _button.classList.remove(ClassName$1.ACTIVE);
689      }
690    }
691  });
692  /**
693   * ------------------------------------------------------------------------
694   * jQuery
695   * ------------------------------------------------------------------------
696   */
697
698  $.fn[NAME$1] = Button._jQueryInterface;
699  $.fn[NAME$1].Constructor = Button;
700
701  $.fn[NAME$1].noConflict = function () {
702    $.fn[NAME$1] = JQUERY_NO_CONFLICT$1;
703    return Button._jQueryInterface;
704  };
705
706  /**
707   * ------------------------------------------------------------------------
708   * Constants
709   * ------------------------------------------------------------------------
710   */
711
712  var NAME$2 = 'carousel';
713  var VERSION$2 = '4.4.1';
714  var DATA_KEY$2 = 'bs.carousel';
715  var EVENT_KEY$2 = "." + DATA_KEY$2;
716  var DATA_API_KEY$2 = '.data-api';
717  var JQUERY_NO_CONFLICT$2 = $.fn[NAME$2];
718  var ARROW_LEFT_KEYCODE = 37; // KeyboardEvent.which value for left arrow key
719
720  var ARROW_RIGHT_KEYCODE = 39; // KeyboardEvent.which value for right arrow key
721
722  var TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch
723
724  var SWIPE_THRESHOLD = 40;
725  var Default = {
726    interval: 5000,
727    keyboard: true,
728    slide: false,
729    pause: 'hover',
730    wrap: true,
731    touch: true
732  };
733  var DefaultType = {
734    interval: '(number|boolean)',
735    keyboard: 'boolean',
736    slide: '(boolean|string)',
737    pause: '(string|boolean)',
738    wrap: 'boolean',
739    touch: 'boolean'
740  };
741  var Direction = {
742    NEXT: 'next',
743    PREV: 'prev',
744    LEFT: 'left',
745    RIGHT: 'right'
746  };
747  var Event$2 = {
748    SLIDE: "slide" + EVENT_KEY$2,
749    SLID: "slid" + EVENT_KEY$2,
750    KEYDOWN: "keydown" + EVENT_KEY$2,
751    MOUSEENTER: "mouseenter" + EVENT_KEY$2,
752    MOUSELEAVE: "mouseleave" + EVENT_KEY$2,
753    TOUCHSTART: "touchstart" + EVENT_KEY$2,
754    TOUCHMOVE: "touchmove" + EVENT_KEY$2,
755    TOUCHEND: "touchend" + EVENT_KEY$2,
756    POINTERDOWN: "pointerdown" + EVENT_KEY$2,
757    POINTERUP: "pointerup" + EVENT_KEY$2,
758    DRAG_START: "dragstart" + EVENT_KEY$2,
759    LOAD_DATA_API: "load" + EVENT_KEY$2 + DATA_API_KEY$2,
760    CLICK_DATA_API: "click" + EVENT_KEY$2 + DATA_API_KEY$2
761  };
762  var ClassName$2 = {
763    CAROUSEL: 'carousel',
764    ACTIVE: 'active',
765    SLIDE: 'slide',
766    RIGHT: 'carousel-item-right',
767    LEFT: 'carousel-item-left',
768    NEXT: 'carousel-item-next',
769    PREV: 'carousel-item-prev',
770    ITEM: 'carousel-item',
771    POINTER_EVENT: 'pointer-event'
772  };
773  var Selector$2 = {
774    ACTIVE: '.active',
775    ACTIVE_ITEM: '.active.carousel-item',
776    ITEM: '.carousel-item',
777    ITEM_IMG: '.carousel-item img',
778    NEXT_PREV: '.carousel-item-next, .carousel-item-prev',
779    INDICATORS: '.carousel-indicators',
780    DATA_SLIDE: '[data-slide], [data-slide-to]',
781    DATA_RIDE: '[data-ride="carousel"]'
782  };
783  var PointerType = {
784    TOUCH: 'touch',
785    PEN: 'pen'
786  };
787  /**
788   * ------------------------------------------------------------------------
789   * Class Definition
790   * ------------------------------------------------------------------------
791   */
792
793  var Carousel =
794  /*#__PURE__*/
795  function () {
796    function Carousel(element, config) {
797      this._items = null;
798      this._interval = null;
799      this._activeElement = null;
800      this._isPaused = false;
801      this._isSliding = false;
802      this.touchTimeout = null;
803      this.touchStartX = 0;
804      this.touchDeltaX = 0;
805      this._config = this._getConfig(config);
806      this._element = element;
807      this._indicatorsElement = this._element.querySelector(Selector$2.INDICATORS);
808      this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;
809      this._pointerEvent = Boolean(window.PointerEvent || window.MSPointerEvent);
810
811      this._addEventListeners();
812    } // Getters
813
814
815    var _proto = Carousel.prototype;
816
817    // Public
818    _proto.next = function next() {
819      if (!this._isSliding) {
820        this._slide(Direction.NEXT);
821      }
822    };
823
824    _proto.nextWhenVisible = function nextWhenVisible() {
825      // Don't call next when the page isn't visible
826      // or the carousel or its parent isn't visible
827      if (!document.hidden && $(this._element).is(':visible') && $(this._element).css('visibility') !== 'hidden') {
828        this.next();
829      }
830    };
831
832    _proto.prev = function prev() {
833      if (!this._isSliding) {
834        this._slide(Direction.PREV);
835      }
836    };
837
838    _proto.pause = function pause(event) {
839      if (!event) {
840        this._isPaused = true;
841      }
842
843      if (this._element.querySelector(Selector$2.NEXT_PREV)) {
844        Util.triggerTransitionEnd(this._element);
845        this.cycle(true);
846      }
847
848      clearInterval(this._interval);
849      this._interval = null;
850    };
851
852    _proto.cycle = function cycle(event) {
853      if (!event) {
854        this._isPaused = false;
855      }
856
857      if (this._interval) {
858        clearInterval(this._interval);
859        this._interval = null;
860      }
861
862      if (this._config.interval && !this._isPaused) {
863        this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval);
864      }
865    };
866
867    _proto.to = function to(index) {
868      var _this = this;
869
870      this._activeElement = this._element.querySelector(Selector$2.ACTIVE_ITEM);
871
872      var activeIndex = this._getItemIndex(this._activeElement);
873
874      if (index > this._items.length - 1 || index < 0) {
875        return;
876      }
877
878      if (this._isSliding) {
879        $(this._element).one(Event$2.SLID, function () {
880          return _this.to(index);
881        });
882        return;
883      }
884
885      if (activeIndex === index) {
886        this.pause();
887        this.cycle();
888        return;
889      }
890
891      var direction = index > activeIndex ? Direction.NEXT : Direction.PREV;
892
893      this._slide(direction, this._items[index]);
894    };
895
896    _proto.dispose = function dispose() {
897      $(this._element).off(EVENT_KEY$2);
898      $.removeData(this._element, DATA_KEY$2);
899      this._items = null;
900      this._config = null;
901      this._element = null;
902      this._interval = null;
903      this._isPaused = null;
904      this._isSliding = null;
905      this._activeElement = null;
906      this._indicatorsElement = null;
907    } // Private
908    ;
909
910    _proto._getConfig = function _getConfig(config) {
911      config = _objectSpread2({}, Default, {}, config);
912      Util.typeCheckConfig(NAME$2, config, DefaultType);
913      return config;
914    };
915
916    _proto._handleSwipe = function _handleSwipe() {
917      var absDeltax = Math.abs(this.touchDeltaX);
918
919      if (absDeltax <= SWIPE_THRESHOLD) {
920        return;
921      }
922
923      var direction = absDeltax / this.touchDeltaX;
924      this.touchDeltaX = 0; // swipe left
925
926      if (direction > 0) {
927        this.prev();
928      } // swipe right
929
930
931      if (direction < 0) {
932        this.next();
933      }
934    };
935
936    _proto._addEventListeners = function _addEventListeners() {
937      var _this2 = this;
938
939      if (this._config.keyboard) {
940        $(this._element).on(Event$2.KEYDOWN, function (event) {
941          return _this2._keydown(event);
942        });
943      }
944
945      if (this._config.pause === 'hover') {
946        $(this._element).on(Event$2.MOUSEENTER, function (event) {
947          return _this2.pause(event);
948        }).on(Event$2.MOUSELEAVE, function (event) {
949          return _this2.cycle(event);
950        });
951      }
952
953      if (this._config.touch) {
954        this._addTouchEventListeners();
955      }
956    };
957
958    _proto._addTouchEventListeners = function _addTouchEventListeners() {
959      var _this3 = this;
960
961      if (!this._touchSupported) {
962        return;
963      }
964
965      var start = function start(event) {
966        if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {
967          _this3.touchStartX = event.originalEvent.clientX;
968        } else if (!_this3._pointerEvent) {
969          _this3.touchStartX = event.originalEvent.touches[0].clientX;
970        }
971      };
972
973      var move = function move(event) {
974        // ensure swiping with one touch and not pinching
975        if (event.originalEvent.touches && event.originalEvent.touches.length > 1) {
976          _this3.touchDeltaX = 0;
977        } else {
978          _this3.touchDeltaX = event.originalEvent.touches[0].clientX - _this3.touchStartX;
979        }
980      };
981
982      var end = function end(event) {
983        if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {
984          _this3.touchDeltaX = event.originalEvent.clientX - _this3.touchStartX;
985        }
986
987        _this3._handleSwipe();
988
989        if (_this3._config.pause === 'hover') {
990          // If it's a touch-enabled device, mouseenter/leave are fired as
991          // part of the mouse compatibility events on first tap - the carousel
992          // would stop cycling until user tapped out of it;
993          // here, we listen for touchend, explicitly pause the carousel
994          // (as if it's the second time we tap on it, mouseenter compat event
995          // is NOT fired) and after a timeout (to allow for mouse compatibility
996          // events to fire) we explicitly restart cycling
997          _this3.pause();
998
999          if (_this3.touchTimeout) {
1000            clearTimeout(_this3.touchTimeout);
1001          }
1002
1003          _this3.touchTimeout = setTimeout(function (event) {
1004            return _this3.cycle(event);
1005          }, TOUCHEVENT_COMPAT_WAIT + _this3._config.interval);
1006        }
1007      };
1008
1009      $(this._element.querySelectorAll(Selector$2.ITEM_IMG)).on(Event$2.DRAG_START, function (e) {
1010        return e.preventDefault();
1011      });
1012
1013      if (this._pointerEvent) {
1014        $(this._element).on(Event$2.POINTERDOWN, function (event) {
1015          return start(event);
1016        });
1017        $(this._element).on(Event$2.POINTERUP, function (event) {
1018          return end(event);
1019        });
1020
1021        this._element.classList.add(ClassName$2.POINTER_EVENT);
1022      } else {
1023        $(this._element).on(Event$2.TOUCHSTART, function (event) {
1024          return start(event);
1025        });
1026        $(this._element).on(Event$2.TOUCHMOVE, function (event) {
1027          return move(event);
1028        });
1029        $(this._element).on(Event$2.TOUCHEND, function (event) {
1030          return end(event);
1031        });
1032      }
1033    };
1034
1035    _proto._keydown = function _keydown(event) {
1036      if (/input|textarea/i.test(event.target.tagName)) {
1037        return;
1038      }
1039
1040      switch (event.which) {
1041        case ARROW_LEFT_KEYCODE:
1042          event.preventDefault();
1043          this.prev();
1044          break;
1045
1046        case ARROW_RIGHT_KEYCODE:
1047          event.preventDefault();
1048          this.next();
1049          break;
1050      }
1051    };
1052
1053    _proto._getItemIndex = function _getItemIndex(element) {
1054      this._items = element && element.parentNode ? [].slice.call(element.parentNode.querySelectorAll(Selector$2.ITEM)) : [];
1055      return this._items.indexOf(element);
1056    };
1057
1058    _proto._getItemByDirection = function _getItemByDirection(direction, activeElement) {
1059      var isNextDirection = direction === Direction.NEXT;
1060      var isPrevDirection = direction === Direction.PREV;
1061
1062      var activeIndex = this._getItemIndex(activeElement);
1063
1064      var lastItemIndex = this._items.length - 1;
1065      var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex === lastItemIndex;
1066
1067      if (isGoingToWrap && !this._config.wrap) {
1068        return activeElement;
1069      }
1070
1071      var delta = direction === Direction.PREV ? -1 : 1;
1072      var itemIndex = (activeIndex + delta) % this._items.length;
1073      return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex];
1074    };
1075
1076    _proto._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) {
1077      var targetIndex = this._getItemIndex(relatedTarget);
1078
1079      var fromIndex = this._getItemIndex(this._element.querySelector(Selector$2.ACTIVE_ITEM));
1080
1081      var slideEvent = $.Event(Event$2.SLIDE, {
1082        relatedTarget: relatedTarget,
1083        direction: eventDirectionName,
1084        from: fromIndex,
1085        to: targetIndex
1086      });
1087      $(this._element).trigger(slideEvent);
1088      return slideEvent;
1089    };
1090
1091    _proto._setActiveIndicatorElement = function _setActiveIndicatorElement(element) {
1092      if (this._indicatorsElement) {
1093        var indicators = [].slice.call(this._indicatorsElement.querySelectorAll(Selector$2.ACTIVE));
1094        $(indicators).removeClass(ClassName$2.ACTIVE);
1095
1096        var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)];
1097
1098        if (nextIndicator) {
1099          $(nextIndicator).addClass(ClassName$2.ACTIVE);
1100        }
1101      }
1102    };
1103
1104    _proto._slide = function _slide(direction, element) {
1105      var _this4 = this;
1106
1107      var activeElement = this._element.querySelector(Selector$2.ACTIVE_ITEM);
1108
1109      var activeElementIndex = this._getItemIndex(activeElement);
1110
1111      var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement);
1112
1113      var nextElementIndex = this._getItemIndex(nextElement);
1114
1115      var isCycling = Boolean(this._interval);
1116      var directionalClassName;
1117      var orderClassName;
1118      var eventDirectionName;
1119
1120      if (direction === Direction.NEXT) {
1121        directionalClassName = ClassName$2.LEFT;
1122        orderClassName = ClassName$2.NEXT;
1123        eventDirectionName = Direction.LEFT;
1124      } else {
1125        directionalClassName = ClassName$2.RIGHT;
1126        orderClassName = ClassName$2.PREV;
1127        eventDirectionName = Direction.RIGHT;
1128      }
1129
1130      if (nextElement && $(nextElement).hasClass(ClassName$2.ACTIVE)) {
1131        this._isSliding = false;
1132        return;
1133      }
1134
1135      var slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName);
1136
1137      if (slideEvent.isDefaultPrevented()) {
1138        return;
1139      }
1140
1141      if (!activeElement || !nextElement) {
1142        // Some weirdness is happening, so we bail
1143        return;
1144      }
1145
1146      this._isSliding = true;
1147
1148      if (isCycling) {
1149        this.pause();
1150      }
1151
1152      this._setActiveIndicatorElement(nextElement);
1153
1154      var slidEvent = $.Event(Event$2.SLID, {
1155        relatedTarget: nextElement,
1156        direction: eventDirectionName,
1157        from: activeElementIndex,
1158        to: nextElementIndex
1159      });
1160
1161      if ($(this._element).hasClass(ClassName$2.SLIDE)) {
1162        $(nextElement).addClass(orderClassName);
1163        Util.reflow(nextElement);
1164        $(activeElement).addClass(directionalClassName);
1165        $(nextElement).addClass(directionalClassName);
1166        var nextElementInterval = parseInt(nextElement.getAttribute('data-interval'), 10);
1167
1168        if (nextElementInterval) {
1169          this._config.defaultInterval = this._config.defaultInterval || this._config.interval;
1170          this._config.interval = nextElementInterval;
1171        } else {
1172          this._config.interval = this._config.defaultInterval || this._config.interval;
1173        }
1174
1175        var transitionDuration = Util.getTransitionDurationFromElement(activeElement);
1176        $(activeElement).one(Util.TRANSITION_END, function () {
1177          $(nextElement).removeClass(directionalClassName + " " + orderClassName).addClass(ClassName$2.ACTIVE);
1178          $(activeElement).removeClass(ClassName$2.ACTIVE + " " + orderClassName + " " + directionalClassName);
1179          _this4._isSliding = false;
1180          setTimeout(function () {
1181            return $(_this4._element).trigger(slidEvent);
1182          }, 0);
1183        }).emulateTransitionEnd(transitionDuration);
1184      } else {
1185        $(activeElement).removeClass(ClassName$2.ACTIVE);
1186        $(nextElement).addClass(ClassName$2.ACTIVE);
1187        this._isSliding = false;
1188        $(this._element).trigger(slidEvent);
1189      }
1190
1191      if (isCycling) {
1192        this.cycle();
1193      }
1194    } // Static
1195    ;
1196
1197    Carousel._jQueryInterface = function _jQueryInterface(config) {
1198      return this.each(function () {
1199        var data = $(this).data(DATA_KEY$2);
1200
1201        var _config = _objectSpread2({}, Default, {}, $(this).data());
1202
1203        if (typeof config === 'object') {
1204          _config = _objectSpread2({}, _config, {}, config);
1205        }
1206
1207        var action = typeof config === 'string' ? config : _config.slide;
1208
1209        if (!data) {
1210          data = new Carousel(this, _config);
1211          $(this).data(DATA_KEY$2, data);
1212        }
1213
1214        if (typeof config === 'number') {
1215          data.to(config);
1216        } else if (typeof action === 'string') {
1217          if (typeof data[action] === 'undefined') {
1218            throw new TypeError("No method named \"" + action + "\"");
1219          }
1220
1221          data[action]();
1222        } else if (_config.interval && _config.ride) {
1223          data.pause();
1224          data.cycle();
1225        }
1226      });
1227    };
1228
1229    Carousel._dataApiClickHandler = function _dataApiClickHandler(event) {
1230      var selector = Util.getSelectorFromElement(this);
1231
1232      if (!selector) {
1233        return;
1234      }
1235
1236      var target = $(selector)[0];
1237
1238      if (!target || !$(target).hasClass(ClassName$2.CAROUSEL)) {
1239        return;
1240      }
1241
1242      var config = _objectSpread2({}, $(target).data(), {}, $(this).data());
1243
1244      var slideIndex = this.getAttribute('data-slide-to');
1245
1246      if (slideIndex) {
1247        config.interval = false;
1248      }
1249
1250      Carousel._jQueryInterface.call($(target), config);
1251
1252      if (slideIndex) {
1253        $(target).data(DATA_KEY$2).to(slideIndex);
1254      }
1255
1256      event.preventDefault();
1257    };
1258
1259    _createClass(Carousel, null, [{
1260      key: "VERSION",
1261      get: function get() {
1262        return VERSION$2;
1263      }
1264    }, {
1265      key: "Default",
1266      get: function get() {
1267        return Default;
1268      }
1269    }]);
1270
1271    return Carousel;
1272  }();
1273  /**
1274   * ------------------------------------------------------------------------
1275   * Data Api implementation
1276   * ------------------------------------------------------------------------
1277   */
1278
1279
1280  $(document).on(Event$2.CLICK_DATA_API, Selector$2.DATA_SLIDE, Carousel._dataApiClickHandler);
1281  $(window).on(Event$2.LOAD_DATA_API, function () {
1282    var carousels = [].slice.call(document.querySelectorAll(Selector$2.DATA_RIDE));
1283
1284    for (var i = 0, len = carousels.length; i < len; i++) {
1285      var $carousel = $(carousels[i]);
1286
1287      Carousel._jQueryInterface.call($carousel, $carousel.data());
1288    }
1289  });
1290  /**
1291   * ------------------------------------------------------------------------
1292   * jQuery
1293   * ------------------------------------------------------------------------
1294   */
1295
1296  $.fn[NAME$2] = Carousel._jQueryInterface;
1297  $.fn[NAME$2].Constructor = Carousel;
1298
1299  $.fn[NAME$2].noConflict = function () {
1300    $.fn[NAME$2] = JQUERY_NO_CONFLICT$2;
1301    return Carousel._jQueryInterface;
1302  };
1303
1304  /**
1305   * ------------------------------------------------------------------------
1306   * Constants
1307   * ------------------------------------------------------------------------
1308   */
1309
1310  var NAME$3 = 'collapse';
1311  var VERSION$3 = '4.4.1';
1312  var DATA_KEY$3 = 'bs.collapse';
1313  var EVENT_KEY$3 = "." + DATA_KEY$3;
1314  var DATA_API_KEY$3 = '.data-api';
1315  var JQUERY_NO_CONFLICT$3 = $.fn[NAME$3];
1316  var Default$1 = {
1317    toggle: true,
1318    parent: ''
1319  };
1320  var DefaultType$1 = {
1321    toggle: 'boolean',
1322    parent: '(string|element)'
1323  };
1324  var Event$3 = {
1325    SHOW: "show" + EVENT_KEY$3,
1326    SHOWN: "shown" + EVENT_KEY$3,
1327    HIDE: "hide" + EVENT_KEY$3,
1328    HIDDEN: "hidden" + EVENT_KEY$3,
1329    CLICK_DATA_API: "click" + EVENT_KEY$3 + DATA_API_KEY$3
1330  };
1331  var ClassName$3 = {
1332    SHOW: 'show',
1333    COLLAPSE: 'collapse',
1334    COLLAPSING: 'collapsing',
1335    COLLAPSED: 'collapsed'
1336  };
1337  var Dimension = {
1338    WIDTH: 'width',
1339    HEIGHT: 'height'
1340  };
1341  var Selector$3 = {
1342    ACTIVES: '.show, .collapsing',
1343    DATA_TOGGLE: '[data-toggle="collapse"]'
1344  };
1345  /**
1346   * ------------------------------------------------------------------------
1347   * Class Definition
1348   * ------------------------------------------------------------------------
1349   */
1350
1351  var Collapse =
1352  /*#__PURE__*/
1353  function () {
1354    function Collapse(element, config) {
1355      this._isTransitioning = false;
1356      this._element = element;
1357      this._config = this._getConfig(config);
1358      this._triggerArray = [].slice.call(document.querySelectorAll("[data-toggle=\"collapse\"][href=\"#" + element.i
1358d + "\"]," + ("[data-toggle=\"collapse\"][data-target=\"#" + element.id + "\"]")));
1359      var toggleList = [].slice.call(document.querySelectorAll(Selector$3.DATA_TOGGLE));
1360
1361      for (var i = 0, len = toggleList.length; i < len; i++) {
1362        var elem = toggleList[i];
1363        var selector = Util.getSelectorFromElement(elem);
1364        var filterElement = [].slice.call(document.querySelectorAll(selector)).filter(function (foundElem) {
1365          return foundElem === element;
1366        });
1367
1368        if (selector !== null && filterElement.length > 0) {
1369          this._selector = selector;
1370
1371          this._triggerArray.push(elem);
1372        }
1373      }
1374
1375      this._parent = this._config.parent ? this._getParent() : null;
1376
1377      if (!this._config.parent) {
1378        this._addAriaAndCollapsedClass(this._element, this._triggerArray);
1379      }
1380
1381      if (this._config.toggle) {
1382        this.toggle();
1383      }
1384    } // Getters
1385
1386
1387    var _proto = Collapse.prototype;
1388
1389    // Public
1390    _proto.toggle = function toggle() {
1391      if ($(this._element).hasClass(ClassName$3.SHOW)) {
1392        this.hide();
1393      } else {
1394        this.show();
1395      }
1396    };
1397
1398    _proto.show = function show() {
1399      var _this = this;
1400
1401      if (this._isTransitioning || $(this._element).hasClass(ClassName$3.SHOW)) {
1402        return;
1403      }
1404
1405      var actives;
1406      var activesData;
1407
1408      if (this._parent) {
1409        actives = [].slice.call(this._parent.querySelectorAll(Selector$3.ACTIVES)).filter(function (elem) {
1410          if (typeof _this._config.parent === 'string') {
1411            return elem.getAttribute('data-parent') === _this._config.parent;
1412          }
1413
1414          return elem.classList.contains(ClassName$3.COLLAPSE);
1415        });
1416
1417        if (actives.length === 0) {
1418          actives = null;
1419        }
1420      }
1421
1422      if (actives) {
1423        activesData = $(actives).not(this._selector).data(DATA_KEY$3);
1424
1425        if (activesData && activesData._isTransitioning) {
1426          return;
1427        }
1428      }
1429
1430      var startEvent = $.Event(Event$3.SHOW);
1431      $(this._element).trigger(startEvent);
1432
1433      if (startEvent.isDefaultPrevented()) {
1434        return;
1435      }
1436
1437      if (actives) {
1438        Collapse._jQueryInterface.call($(actives).not(this._selector), 'hide');
1439
1440        if (!activesData) {
1441          $(actives).data(DATA_KEY$3, null);
1442        }
1443      }
1444
1445      var dimension = this._getDimension();
1446
1447      $(this._element).removeClass(ClassName$3.COLLAPSE).addClass(ClassName$3.COLLAPSING);
1448      this._element.style[dimension] = 0;
1449
1450      if (this._triggerArray.length) {
1451        $(this._triggerArray).removeClass(ClassName$3.COLLAPSED).attr('aria-expanded', true);
1452      }
1453
1454      this.setTransitioning(true);
1455
1456      var complete = function complete() {
1457        $(_this._element).removeClass(ClassName$3.COLLAPSING).addClass(ClassName$3.COLLAPSE).addClass(ClassName$3.SHOW);
1458        _this._element.style[dimension] = '';
1459
1460        _this.setTransitioning(false);
1461
1462        $(_this._element).trigger(Event$3.SHOWN);
1463      };
1464
1465      var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);
1466      var scrollSize = "scroll" + capitalizedDimension;
1467      var transitionDuration = Util.getTransitionDurationFromElement(this._element);
1468      $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
1469      this._element.style[dimension] = this._element[scrollSize] + "px";
1470    };
1471
1472    _proto.hide = function hide() {
1473      var _this2 = this;
1474
1475      if (this._isTransitioning || !$(this._element).hasClass(ClassName$3.SHOW)) {
1476        return;
1477      }
1478
1479      var startEvent = $.Event(Event$3.HIDE);
1480      $(this._element).trigger(startEvent);
1481
1482      if (startEvent.isDefaultPrevented()) {
1483        return;
1484      }
1485
1486      var dimension = this._getDimension();
1487
1488      this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + "px";
1489      Util.reflow(this._element);
1490      $(this._element).addClass(ClassName$3.COLLAPSING).removeClass(ClassName$3.COLLAPSE).removeClass(ClassName$3.SHOW);
1491      var triggerArrayLength = this._triggerArray.length;
1492
1493      if (triggerArrayLength > 0) {
1494        for (var i = 0; i < triggerArrayLength; i++) {
1495          var trigger = this._triggerArray[i];
1496          var selector = Util.getSelectorFromElement(trigger);
1497
1498          if (selector !== null) {
1499            var $elem = $([].slice.call(document.querySelectorAll(selector)));
1500
1501            if (!$elem.hasClass(ClassName$3.SHOW)) {
1502              $(trigger).addClass(ClassName$3.COLLAPSED).attr('aria-expanded', false);
1503            }
1504          }
1505        }
1506      }
1507
1508      this.setTransitioning(true);
1509
1510      var complete = function complete() {
1511        _this2.setTransitioning(false);
1512
1513        $(_this2._element).removeClass(ClassName$3.COLLAPSING).addClass(ClassName$3.COLLAPSE).trigger(Event$3.HIDDEN);
1514      };
1515
1516      this._element.style[dimension] = '';
1517      var transitionDuration = Util.getTransitionDurationFromElement(this._element);
1518      $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
1519    };
1520
1521    _proto.setTransitioning = function setTransitioning(isTransitioning) {
1522      this._isTransitioning = isTransitioning;
1523    };
1524
1525    _proto.dispose = function dispose() {
1526      $.removeData(this._element, DATA_KEY$3);
1527      this._config = null;
1528      this._parent = null;
1529      this._element = null;
1530      this._triggerArray = null;
1531      this._isTransitioning = null;
1532    } // Private
1533    ;
1534
1535    _proto._getConfig = function _getConfig(config) {
1536      config = _objectSpread2({}, Default$1, {}, config);
1537      config.toggle = Boolean(config.toggle); // Coerce string values
1538
1539      Util.typeCheckConfig(NAME$3, config, DefaultType$1);
1540      return config;
1541    };
1542
1543    _proto._getDimension = function _getDimension() {
1544      var hasWidth = $(this._element).hasClass(Dimension.WIDTH);
1545      return hasWidth ? Dimension.WIDTH : Dimension.HEIGHT;
1546    };
1547
1548    _proto._getParent = function _getParent() {
1549      var _this3 = this;
1550
1551      var parent;
1552
1553      if (Util.isElement(this._config.parent)) {
1554        parent = this._config.parent; // It's a jQuery object
1555
1556        if (typeof this._config.parent.jquery !== 'undefined') {
1557          parent = this._config.parent[0];
1558        }
1559      } else {
1560        parent = document.querySelector(this._config.parent);
1561      }
1562
1563      var selector = "[data-toggle=\"collapse\"][data-parent=\"" + this._config.parent + "\"]";
1564      var children = [].slice.call(parent.querySelectorAll(selector));
1565      $(children).each(function (i, element) {
1566        _this3._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]);
1567      });
1568      return parent;
1569    };
1570
1571    _proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) {
1572      var isOpen = $(element).hasClass(ClassName$3.SHOW);
1573
1574      if (triggerArray.length) {
1575        $(triggerArray).toggleClass(ClassName$3.COLLAPSED, !isOpen).attr('aria-expanded', isOpen);
1576      }
1577    } // Static
1578    ;
1579
1580    Collapse._getTargetFromElement = function _getTargetFromElement(element) {
1581      var selector = Util.getSelectorFromElement(element);
1582      return selector ? document.querySelector(selector) : null;
1583    };
1584
1585    Collapse._jQueryInterface = function _jQueryInterface(config) {
1586      return this.each(function () {
1587        var $this = $(this);
1588        var data = $this.data(DATA_KEY$3);
1589
1590        var _config = _objectSpread2({}, Default$1, {}, $this.data(), {}, typeof config === 'object' && config ? config : {});
1591
1592        if (!data && _config.toggle && /show|hide/.test(config)) {
1593          _config.toggle = false;
1594        }
1595
1596        if (!data) {
1597          data = new Collapse(this, _config);
1598          $this.data(DATA_KEY$3, data);
1599        }
1600
1601        if (typeof config === 'string') {
1602          if (typeof data[config] === 'undefined') {
1603            throw new TypeError("No method named \"" + config + "\"");
1604          }
1605
1606          data[config]();
1607        }
1608      });
1609    };
1610
1611    _createClass(Collapse, null, [{
1612      key: "VERSION",
1613      get: function get() {
1614        return VERSION$3;
1615      }
1616    }, {
1617      key: "Default",
1618      get: function get() {
1619        return Default$1;
1620      }
1621    }]);
1622
1623    return Collapse;
1624  }();
1625  /**
1626   * ------------------------------------------------------------------------
1627   * Data Api implementation
1628   * ------------------------------------------------------------------------
1629   */
1630
1631
1632  $(document).on(Event$3.CLICK_DATA_API, Selector$3.DATA_TOGGLE, function (event) {
1633    // preventDefault only for <a> elements (which change the URL) not inside the collapsible element
1634    if (event.currentTarget.tagName === 'A') {
1635      event.preventDefault();
1636    }
1637
1638    var $trigger = $(this);
1639    var selector = Util.getSelectorFromElement(this);
1640    var selectors = [].slice.call(document.querySelectorAll(selector));
1641    $(selectors).each(function () {
1642      var $target = $(this);
1643      var data = $target.data(DATA_KEY$3);
1644      var config = data ? 'toggle' : $trigger.data();
1645
1646      Collapse._jQueryInterface.call($target, config);
1647    });
1648  });
1649  /**
1650   * ------------------------------------------------------------------------
1651   * jQuery
1652   * ------------------------------------------------------------------------
1653   */
1654
1655  $.fn[NAME$3] = Collapse._jQueryInterface;
1656  $.fn[NAME$3].Constructor = Collapse;
1657
1658  $.fn[NAME$3].noConflict = function () {
1659    $.fn[NAME$3] = JQUERY_NO_CONFLICT$3;
1660    return Collapse._jQueryInterface;
1661  };
1662
1663  /**
1664   * ------------------------------------------------------------------------
1665   * Constants
1666   * ------------------------------------------------------------------------
1667   */
1668
1669  var NAME$4 = 'dropdown';
1670  var VERSION$4 = '4.4.1';
1671  var DATA_KEY$4 = 'bs.dropdown';
1672  var EVENT_KEY$4 = "." + DATA_KEY$4;
1673  var DATA_API_KEY$4 = '.data-api';
1674  var JQUERY_NO_CONFLICT$4 = $.fn[NAME$4];
1675  var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key
1676
1677  var SPACE_KEYCODE = 32; // KeyboardEvent.which value for space key
1678
1679  var TAB_KEYCODE = 9; // KeyboardEvent.which value for tab key
1680
1681  var ARROW_UP_KEYCODE = 38; // KeyboardEvent.which value for up arrow key
1682
1683  var ARROW_DOWN_KEYCODE = 40; // KeyboardEvent.which value for down arrow key
1684
1685  var RIGHT_MOUSE_BUTTON_WHICH = 3; // MouseEvent.which value for the right button (assuming a right-handed mouse)
1686
1687  var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEYCODE + "|" + ARROW_DOWN_KEYCODE + "|" + ESCAPE_KEYCODE);
1688  var Event$4 = {
1689    HIDE: "hide" + EVENT_KEY$4,
1690    HIDDEN: "hidden" + EVENT_KEY$4,
1691    SHOW: "show" + EVENT_KEY$4,
1692    SHOWN: "shown" + EVENT_KEY$4,
1693    CLICK: "click" + EVENT_KEY$4,
1694    CLICK_DATA_API: "click" + EVENT_KEY$4 + DATA_API_KEY$4,
1695    KEYDOWN_DATA_API: "keydown" + EVENT_KEY$4 + DATA_API_KEY$4,
1696    KEYUP_DATA_API: "keyup" + EVENT_KEY$4 + DATA_API_KEY$4
1697  };
1698  var ClassName$4 = {
1699    DISABLED: 'disabled',
1700    SHOW: 'show',
1701    DROPUP: 'dropup',
1702    DROPRIGHT: 'dropright',
1703    DROPLEFT: 'dropleft',
1704    MENURIGHT: 'dropdown-menu-right',
1705    MENULEFT: 'dropdown-menu-left',
1706    POSITION_STATIC: 'position-static'
1707  };
1708  var Selector$4 = {
1709    DATA_TOGGLE: '[data-toggle="dropdown"]',
1710    FORM_CHILD: '.dropdown form',
1711    MENU: '.dropdown-menu',
1712    NAVBAR_NAV: '.navbar-nav',
1713    VISIBLE_ITEMS: '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'
1714  };
1715  var AttachmentMap = {
1716    TOP: 'top-start',
1717    TOPEND: 'top-end',
1718    BOTTOM: 'bottom-start',
1719    BOTTOMEND: 'bottom-end',
1720    RIGHT: 'right-start',
1721    RIGHTEND: 'right-end',
1722    LEFT: 'left-start',
1723    LEFTEND: 'left-end'
1724  };
1725  var Default$2 = {
1726    offset: 0,
1727    flip: true,
1728    boundary: 'scrollParent',
1729    reference: 'toggle',
1730    display: 'dynamic',
1731    popperConfig: null
1732  };
1733  var DefaultType$2 = {
1734    offset: '(number|string|function)',
1735    flip: 'boolean',
1736    boundary: '(string|element)',
1737    reference: '(string|element)',
1738    display: 'string',
1739    popperConfig: '(null|object)'
1740  };
1741  /**
1742   * ------------------------------------------------------------------------
1743   * Class Definition
1744   * ------------------------------------------------------------------------
1745   */
1746
1747  var Dropdown =
1748  /*#__PURE__*/
1749  function () {
1750    function Dropdown(element, config) {
1751      this._element = element;
1752      this._popper = null;
1753      this._config = this._getConfig(config);
1754      this._menu = this._getMenuElement();
1755      this._inNavbar = this._detectNavbar();
1756
1757      this._addEventListeners();
1758    } // Getters
1759
1760
1761    var _proto = Dropdown.prototype;
1762
1763    // Public
1764    _proto.toggle = function toggle() {
1765      if (this._element.disabled || $(this._element).hasClass(ClassName$4.DISABLED)) {
1766        return;
1767      }
1768
1769      var isActive = $(this._menu).hasClass(ClassName$4.SHOW);
1770
1771      Dropdown._clearMenus();
1772
1773      if (isActive) {
1774        return;
1775      }
1776
1777      this.show(true);
1778    };
1779
1780    _proto.show = function show(usePopper) {
1781      if (usePopper === void 0) {
1782        usePopper = false;
1783      }
1784
1785      if (this._element.disabled || $(this._element).hasClass(ClassName$4.DISABLED) || $(this._menu).hasClass(ClassName$4.SHOW)) {
1786        return;
1787      }
1788
1789      var relatedTarget = {
1790        relatedTarget: this._element
1791      };
1792      var showEvent = $.Event(Event$4.SHOW, relatedTarget);
1793
1794      var parent = Dropdown._getParentFromElement(this._element);
1795
1796      $(parent).trigger(showEvent);
1797
1798      if (showEvent.isDefaultPrevented()) {
1799        return;
1800      } // Disable totally Popper.js for Dropdown in Navbar
1801
1802
1803      if (!this._inNavbar && usePopper) {
1804        /**
1805         * Check for Popper dependency
1806         * Popper - https://popper.js.org
1807         */
1808        if (typeof Popper === 'undefined') {
1809          throw new TypeError('Bootstrap\'s dropdowns require Popper.js (https://popper.js.org/)');
1810        }
1811
1812        var referenceElement = this._element;
1813
1814        if (this._config.reference === 'parent') {
1815          referenceElement = parent;
1816        } else if (Util.isElement(this._config.reference)) {
1817          referenceElement = this._config.reference; // Check if it's jQuery element
1818
1819          if (typeof this._config.reference.jquery !== 'undefined') {
1820            referenceElement = this._config.reference[0];
1821          }
1822        } // If boundary is not `scrollParent`, then set position to `static`
1823        // to allow the menu to "escape" the scroll parent's boundaries
1824        // https://github.com/twbs/bootstrap/issues/24251
1825
1826
1827        if (this._config.boundary !== 'scrollParent') {
1828          $(parent).addClass(ClassName$4.POSITION_STATIC);
1829        }
1830
1831        this._popper = new Popper(referenceElement, this._menu, this._getPopperConfig());
1832      } // If this is a touch-enabled device we add extra
1833      // empty mouseover listeners to the body's immediate children;
1834      // only needed because of broken event delegation on iOS
1835      // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
1836
1837
1838      if ('ontouchstart' in document.documentElement && $(parent).closest(Selector$4.NAVBAR_NAV).length === 0) {
1839        $(document.body).children().on('mouseover', null, $.noop);
1840      }
1841
1842      this._element.focus();
1843
1844      this._element.setAttribute('aria-expanded', true);
1845
1846      $(this._menu).toggleClass(ClassName$4.SHOW);
1847      $(parent).toggleClass(ClassName$4.SHOW).trigger($.Event(Event$4.SHOWN, relatedTarget));
1848    };
1849
1850    _proto.hide = function hide() {
1851      if (this._element.disabled || $(this._element).hasClass(ClassName$4.DISABLED) || !$(this._menu).hasClass(ClassName$4.SHOW)) {
1852        return;
1853      }
1854
1855      var relatedTarget = {
1856        relatedTarget: this._element
1857      };
1858      var hideEvent = $.Event(Event$4.HIDE, relatedTarget);
1859
1860      var parent = Dropdown._getParentFromElement(this._element);
1861
1862      $(parent).trigger(hideEvent);
1863
1864      if (hideEvent.isDefaultPrevented()) {
1865        return;
1866      }
1867
1868      if (this._popper) {
1869        this._popper.destroy();
1870      }
1871
1872      $(this._menu).toggleClass(ClassName$4.SHOW);
1873      $(parent).toggleClass(ClassName$4.SHOW).trigger($.Event(Event$4.HIDDEN, relatedTarget));
1874    };
1875
1876    _proto.dispose = function dispose() {
1877      $.removeData(this._element, DATA_KEY$4);
1878      $(this._element).off(EVENT_KEY$4);
1879      this._element = null;
1880      this._menu = null;
1881
1882      if (this._popper !== null) {
1883        this._popper.destroy();
1884
1885        this._popper = null;
1886      }
1887    };
1888
1889    _proto.update = function update() {
1890      this._inNavbar = this._detectNavbar();
1891
1892      if (this._popper !== null) {
1893        this._popper.scheduleUpdate();
1894      }
1895    } // Private
1896    ;
1897
1898    _proto._addEventListeners = function _addEventListeners() {
1899      var _this = this;
1900
1901      $(this._element).on(Event$4.CLICK, function (event) {
1902        event.preventDefault();
1903        event.stopPropagation();
1904
1905        _this.toggle();
1906      });
1907    };
1908
1909    _proto._getConfig = function _getConfig(config) {
1910      config = _objectSpread2({}, this.constructor.Default, {}, $(this._element).data(), {}, config);
1911      Util.typeCheckConfig(NAME$4, config, this.constructor.DefaultType);
1912      return config;
1913    };
1914
1915    _proto._getMenuElement = function _getMenuElement() {
1916      if (!this._menu) {
1917        var parent = Dropdown._getParentFromElement(this._element);
1918
1919        if (parent) {
1920          this._menu = parent.querySelector(Selector$4.MENU);
1921        }
1922      }
1923
1924      return this._menu;
1925    };
1926
1927    _proto._getPlacement = function _getPlacement() {
1928      var $parentDropdown = $(this._element.parentNode);
1929      var placement = AttachmentMap.BOTTOM; // Handle dropup
1930
1931      if ($parentDropdown.hasClass(ClassName$4.DROPUP)) {
1932        placement = AttachmentMap.TOP;
1933
1934        if ($(this._menu).hasClass(ClassName$4.MENURIGHT)) {
1935          placement = AttachmentMap.TOPEND;
1936        }
1937      } else if ($parentDropdown.hasClass(ClassName$4.DROPRIGHT)) {
1938        placement = AttachmentMap.RIGHT;
1939      } else if ($parentDropdown.hasClass(ClassName$4.DROPLEFT)) {
1940        placement = AttachmentMap.LEFT;
1941      } else if ($(this._menu).hasClass(ClassName$4.MENURIGHT)) {
1942        placement = AttachmentMap.BOTTOMEND;
1943      }
1944
1945      return placement;
1946    };
1947
1948    _proto._detectNavbar = function _detectNavbar() {
1949      return $(this._element).closest('.navbar').length > 0;
1950    };
1951
1952    _proto._getOffset = function _getOffset() {
1953      var _this2 = this;
1954
1955      var offset = {};
1956
1957      if (typeof this._config.offset === 'function') {
1958        offset.fn = function (data) {
1959          data.offsets = _objectSpread2({}, data.offsets, {}, _this2._config.offset(data.offsets, _this2._element) || {});
1960          return data;
1961        };
1962      } else {
1963        offset.offset = this._config.offset;
1964      }
1965
1966      return offset;
1967    };
1968
1969    _proto._getPopperConfig = function _getPopperConfig() {
1970      var popperConfig = {
1971        placement: this._getPlacement(),
1972        modifiers: {
1973          offset: this._getOffset(),
1974          flip: {
1975            enabled: this._config.flip
1976          },
1977          preventOverflow: {
1978            boundariesElement: this._config.boundary
1979          }
1980        }
1981      }; // Disable Popper.js if we have a static display
1982
1983      if (this._config.display === 'static') {
1984        popperConfig.modifiers.applyStyle = {
1985          enabled: false
1986        };
1987      }
1988
1989      return _objectSpread2({}, popperConfig, {}, this._config.popperConfig);
1990    } // Static
1991    ;
1992
1993    Dropdown._jQueryInterface = function _jQueryInterface(config) {
1994      return this.each(function () {
1995        var data = $(this).data(DATA_KEY$4);
1996
1997        var _config = typeof config === 'object' ? config : null;
1998
1999        if (!data) {
2000          data = new Dropdown(this, _config);
2001          $(this).data(DATA_KEY$4, data);
2002        }
2003
2004        if (typeof config === 'string') {
2005          if (typeof data[config] === 'undefined') {
2006            throw new TypeError("No method named \"" + config + "\"");
2007          }
2008
2009          data[config]();
2010        }
2011      });
2012    };
2013
2014    Dropdown._clearMenus = function _clearMenus(event) {
2015      if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH || event.type === 'keyup' && event.which !== TAB_KEYCODE)) {
2016        return;
2017      }
2018
2019      var toggles = [].slice.call(document.querySelectorAll(Selector$4.DATA_TOGGLE));
2020
2021      for (var i = 0, len = toggles.length; i < len; i++) {
2022        var parent = Dropdown._getParentFromElement(toggles[i]);
2023
2024        var context = $(toggles[i]).data(DATA_KEY$4);
2025        var relatedTarget = {
2026          relatedTarget: toggles[i]
2027        };
2028
2029        if (event && event.type === 'click') {
2030          relatedTarget.clickEvent = event;
2031        }
2032
2033        if (!context) {
2034          continue;
2035        }
2036
2037        var dropdownMenu = context._menu;
2038
2039        if (!$(parent).hasClass(ClassName$4.SHOW)) {
2040          continue;
2041        }
2042
2043        if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) && $.contains(parent, event.target)) {
2044          continue;
2045        }
2046
2047        var hideEvent = $.Event(Event$4.HIDE, relatedTarget);
2048        $(parent).trigger(hideEvent);
2049
2050        if (hideEvent.isDefaultPrevented()) {
2051          continue;
2052        } // If this is a touch-enabled device we remove the extra
2053        // empty mouseover listeners we added for iOS support
2054
2055
2056        if ('ontouchstart' in document.documentElement) {
2057          $(document.body).children().off('mouseover', null, $.noop);
2058        }
2059
2060        toggles[i].setAttribute('aria-expanded', 'false');
2061
2062        if (context._popper) {
2063          context._popper.destroy();
2064        }
2065
2066        $(dropdownMenu).removeClass(ClassName$4.SHOW);
2067        $(parent).removeClass(ClassName$4.SHOW).trigger($.Event(Event$4.HIDDEN, relatedTarget));
2068      }
2069    };
2070
2071    Dropdown._getParentFromElement = function _getParentFromElement(element) {
2072      var parent;
2073      var selector = Util.getSelectorFromElement(element);
2074
2075      if (selector) {
2076        parent = document.querySelector(selector);
2077      }
2078
2079      return parent || element.parentNode;
2080    } // eslint-disable-next-line complexity
2081    ;
2082
2083    Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) {
2084      // If not input/textarea:
2085      //  - And not a key in REGEXP_KEYDOWN => not a dropdown command
2086      // If input/textarea:
2087      //  - If space key => not a dropdown command
2088      //  - If key is other than escape
2089      //    - If key is not up or down => not a dropdown command
2090      //    - If trigger inside the menu =>
2090 not a dropdown command
2091      if (/input|textarea/i.test(event.target.tagName) ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE && (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE || $(event.target).closest(Selector$4.MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {
2092        return;
2093      }
2094
2095      event.preventDefault();
2096      event.stopPropagation();
2097
2098      if (this.disabled || $(this).hasClass(ClassName$4.DISABLED)) {
2099        return;
2100      }
2101
2102      var parent = Dropdown._getParentFromElement(this);
2103
2104      var isActive = $(parent).hasClass(ClassName$4.SHOW);
2105
2106      if (!isActive && event.which === ESCAPE_KEYCODE) {
2107        return;
2108      }
2109
2110      if (!isActive || isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) {
2111        if (event.which === ESCAPE_KEYCODE) {
2112          var toggle = parent.querySelector(Selector$4.DATA_TOGGLE);
2113          $(toggle).trigger('focus');
2114        }
2115
2116        $(this).trigger('click');
2117        return;
2118      }
2119
2120      var items = [].slice.call(parent.querySelectorAll(Selector$4.VISIBLE_ITEMS)).filter(function (item) {
2121        return $(item).is(':visible');
2122      });
2123
2124      if (items.length === 0) {
2125        return;
2126      }
2127
2128      var index = items.indexOf(event.target);
2129
2130      if (event.which === ARROW_UP_KEYCODE && index > 0) {
2131        // Up
2132        index--;
2133      }
2134
2135      if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) {
2136        // Down
2137        index++;
2138      }
2139
2140      if (index < 0) {
2141        index = 0;
2142      }
2143
2144      items[index].focus();
2145    };
2146
2147    _createClass(Dropdown, null, [{
2148      key: "VERSION",
2149      get: function get() {
2150        return VERSION$4;
2151      }
2152    }, {
2153      key: "Default",
2154      get: function get() {
2155        return Default$2;
2156      }
2157    }, {
2158      key: "DefaultType",
2159      get: function get() {
2160        return DefaultType$2;
2161      }
2162    }]);
2163
2164    return Dropdown;
2165  }();
2166  /**
2167   * ------------------------------------------------------------------------
2168   * Data Api implementation
2169   * ------------------------------------------------------------------------
2170   */
2171
2172
2173  $(document).on(Event$4.KEYDOWN_DATA_API, Selector$4.DATA_TOGGLE, Dropdown._dataApiKeydownHandler).on(Event$4.KEYDOWN_DATA_API, Selector$4.MENU, Dropdown._dataApiKeydownHandler).on(Event$4.CLICK_DATA_API + " " + Event$4.KEYUP_DATA_API, Dropdown._clearMenus).on(Event$4.CLICK_DATA_API, Selector$4.DATA_TOGGLE, function (event) {
2174    event.preventDefault();
2175    event.stopPropagation();
2176
2177    Dropdown._jQueryInterface.call($(this), 'toggle');
2178  }).on(Event$4.CLICK_DATA_API, Selector$4.FORM_CHILD, function (e) {
2179    e.stopPropagation();
2180  });
2181  /**
2182   * ------------------------------------------------------------------------
2183   * jQuery
2184   * ------------------------------------------------------------------------
2185   */
2186
2187  $.fn[NAME$4] = Dropdown._jQueryInterface;
2188  $.fn[NAME$4].Constructor = Dropdown;
2189
2190  $.fn[NAME$4].noConflict = function () {
2191    $.fn[NAME$4] = JQUERY_NO_CONFLICT$4;
2192    return Dropdown._jQueryInterface;
2193  };
2194
2195  /**
2196   * ------------------------------------------------------------------------
2197   * Constants
2198   * ------------------------------------------------------------------------
2199   */
2200
2201  var NAME$5 = 'modal';
2202  var VERSION$5 = '4.4.1';
2203  var DATA_KEY$5 = 'bs.modal';
2204  var EVENT_KEY$5 = "." + DATA_KEY$5;
2205  var DATA_API_KEY$5 = '.data-api';
2206  var JQUERY_NO_CONFLICT$5 = $.fn[NAME$5];
2207  var ESCAPE_KEYCODE$1 = 27; // KeyboardEvent.which value for Escape (Esc) key
2208
2209  var Default$3 = {
2210    backdrop: true,
2211    keyboard: true,
2212    focus: true,
2213    show: true
2214  };
2215  var DefaultType$3 = {
2216    backdrop: '(boolean|string)',
2217    keyboard: 'boolean',
2218    focus: 'boolean',
2219    show: 'boolean'
2220  };
2221  var Event$5 = {
2222    HIDE: "hide" + EVENT_KEY$5,
2223    HIDE_PREVENTED: "hidePrevented" + EVENT_KEY$5,
2224    HIDDEN: "hidden" + EVENT_KEY$5,
2225    SHOW: "show" + EVENT_KEY$5,
2226    SHOWN: "shown" + EVENT_KEY$5,
2227    FOCUSIN: "focusin" + EVENT_KEY$5,
2228    RESIZE: "resize" + EVENT_KEY$5,
2229    CLICK_DISMISS: "click.dismiss" + EVENT_KEY$5,
2230    KEYDOWN_DISMISS: "keydown.dismiss" + EVENT_KEY$5,
2231    MOUSEUP_DISMISS: "mouseup.dismiss" + EVENT_KEY$5,
2232    MOUSEDOWN_DISMISS: "mousedown.dismiss" + EVENT_KEY$5,
2233    CLICK_DATA_API: "click" + EVENT_KEY$5 + DATA_API_KEY$5
2234  };
2235  var ClassName$5 = {
2236    SCROLLABLE: 'modal-dialog-scrollable',
2237    SCROLLBAR_MEASURER: 'modal-scrollbar-measure',
2238    BACKDROP: 'modal-backdrop',
2239    OPEN: 'modal-open',
2240    FADE: 'fade',
2241    SHOW: 'show',
2242    STATIC: 'modal-static'
2243  };
2244  var Selector$5 = {
2245    DIALOG: '.modal-dialog',
2246    MODAL_BODY: '.modal-body',
2247    DATA_TOGGLE: '[data-toggle="modal"]',
2248    DATA_DISMISS: '[data-dismiss="modal"]',
2249    FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',
2250    STICKY_CONTENT: '.sticky-top'
2251  };
2252  /**
2253   * ------------------------------------------------------------------------
2254   * Class Definition
2255   * ------------------------------------------------------------------------
2256   */
2257
2258  var Modal =
2259  /*#__PURE__*/
2260  function () {
2261    function Modal(element, config) {
2262      this._config = this._getConfig(config);
2263      this._element = element;
2264      this._dialog = element.querySelector(Selector$5.DIALOG);
2265      this._backdrop = null;
2266      this._isShown = false;
2267      this._isBodyOverflowing = false;
2268      this._ignoreBackdropClick = false;
2269      this._isTransitioning = false;
2270      this._scrollbarWidth = 0;
2271    } // Getters
2272
2273
2274    var _proto = Modal.prototype;
2275
2276    // Public
2277    _proto.toggle = function toggle(relatedTarget) {
2278      return this._isShown ? this.hide() : this.show(relatedTarget);
2279    };
2280
2281    _proto.show = function show(relatedTarget) {
2282      var _this = this;
2283
2284      if (this._isShown || this._isTransitioning) {
2285        return;
2286      }
2287
2288      if ($(this._element).hasClass(ClassName$5.FADE)) {
2289        this._isTransitioning = true;
2290      }
2291
2292      var showEvent = $.Event(Event$5.SHOW, {
2293        relatedTarget: relatedTarget
2294      });
2295      $(this._element).trigger(showEvent);
2296
2297      if (this._isShown || showEvent.isDefaultPrevented()) {
2298        return;
2299      }
2300
2301      this._isShown = true;
2302
2303      this._checkScrollbar();
2304
2305      this._setScrollbar();
2306
2307      this._adjustDialog();
2308
2309      this._setEscapeEvent();
2310
2311      this._setResizeEvent();
2312
2313      $(this._element).on(Event$5.CLICK_DISMISS, Selector$5.DATA_DISMISS, function (event) {
2314        return _this.hide(event);
2315      });
2316      $(this._dialog).on(Event$5.MOUSEDOWN_DISMISS, function () {
2317        $(_this._element).one(Event$5.MOUSEUP_DISMISS, function (event) {
2318          if ($(event.target).is(_this._element)) {
2319            _this._ignoreBackdropClick = true;
2320          }
2321        });
2322      });
2323
2324      this._showBackdrop(function () {
2325        return _this._showElement(relatedTarget);
2326      });
2327    };
2328
2329    _proto.hide = function hide(event) {
2330      var _this2 = this;
2331
2332      if (event) {
2333        event.preventDefault();
2334      }
2335
2336      if (!this._isShown || this._isTransitioning) {
2337        return;
2338      }
2339
2340      var hideEvent = $.Event(Event$5.HIDE);
2341      $(this._element).trigger(hideEvent);
2342
2343      if (!this._isShown || hideEvent.isDefaultPrevented()) {
2344        return;
2345      }
2346
2347      this._isShown = false;
2348      var transition = $(this._element).hasClass(ClassName$5.FADE);
2349
2350      if (transition) {
2351        this._isTransitioning = true;
2352      }
2353
2354      this._setEscapeEvent();
2355
2356      this._setResizeEvent();
2357
2358      $(document).off(Event$5.FOCUSIN);
2359      $(this._element).removeClass(ClassName$5.SHOW);
2360      $(this._element).off(Event$5.CLICK_DISMISS);
2361      $(this._dialog).off(Event$5.MOUSEDOWN_DISMISS);
2362
2363      if (transition) {
2364        var transitionDuration = Util.getTransitionDurationFromElement(this._element);
2365        $(this._element).one(Util.TRANSITION_END, function (event) {
2366          return _this2._hideModal(event);
2367        }).emulateTransitionEnd(transitionDuration);
2368      } else {
2369        this._hideModal();
2370      }
2371    };
2372
2373    _proto.dispose = function dispose() {
2374      [window, this._element, this._dialog].forEach(function (htmlElement) {
2375        return $(htmlElement).off(EVENT_KEY$5);
2376      });
2377      /**
2378       * `document` has 2 events `Event.FOCUSIN` and `Event.CLICK_DATA_API`
2379       * Do not move `document` in `htmlElements` array
2380       * It will remove `Event.CLICK_DATA_API` event that should remain
2381       */
2382
2383      $(document).off(Event$5.FOCUSIN);
2384      $.removeData(this._element, DATA_KEY$5);
2385      this._config = null;
2386      this._element = null;
2387      this._dialog = null;
2388      this._backdrop = null;
2389      this._isShown = null;
2390      this._isBodyOverflowing = null;
2391      this._ignoreBackdropClick = null;
2392      this._isTransitioning = null;
2393      this._scrollbarWidth = null;
2394    };
2395
2396    _proto.handleUpdate = function handleUpdate() {
2397      this._adjustDialog();
2398    } // Private
2399    ;
2400
2401    _proto._getConfig = function _getConfig(config) {
2402      config = _objectSpread2({}, Default$3, {}, config);
2403      Util.typeCheckConfig(NAME$5, config, DefaultType$3);
2404      return config;
2405    };
2406
2407    _proto._triggerBackdropTransition = function _triggerBackdropTransition() {
2408      var _this3 = this;
2409
2410      if (this._config.backdrop === 'static') {
2411        var hideEventPrevented = $.Event(Event$5.HIDE_PREVENTED);
2412        $(this._element).trigger(hideEventPrevented);
2413
2414        if (hideEventPrevented.defaultPrevented) {
2415          return;
2416        }
2417
2418        this._element.classList.add(ClassName$5.STATIC);
2419
2420        var modalTransitionDuration = Util.getTransitionDurationFromElement(this._element);
2421        $(this._element).one(Util.TRANSITION_END, function () {
2422          _this3._element.classList.remove(ClassName$5.STATIC);
2423        }).emulateTransitionEnd(modalTransitionDuration);
2424
2425        this._element.focus();
2426      } else {
2427        this.hide();
2428      }
2429    };
2430
2431    _proto._showElement = function _showElement(relatedTarget) {
2432      var _this4 = this;
2433
2434      var transition = $(this._element).hasClass(ClassName$5.FADE);
2435      var modalBody = this._dialog ? this._dialog.querySelector(Selector$5.MODAL_BODY) : null;
2436
2437      if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {
2438        // Don't move modal's DOM position
2439        document.body.appendChild(this._element);
2440      }
2441
2442      this._element.style.display = 'block';
2443
2444      this._element.removeAttribute('aria-hidden');
2445
2446      this._element.setAttribute('aria-modal', true);
2447
2448      if ($(this._dialog).hasClass(ClassName$5.SCROLLABLE) && modalBody) {
2449        modalBody.scrollTop = 0;
2450      } else {
2451        this._element.scrollTop = 0;
2452      }
2453
2454      if (transition) {
2455        Util.reflow(this._element);
2456      }
2457
2458      $(this._element).addClass(ClassName$5.SHOW);
2459
2460      if (this._config.focus) {
2461        this._enforceFocus();
2462      }
2463
2464      var shownEvent = $.Event(Event$5.SHOWN, {
2465        relatedTarget: relatedTarget
2466      });
2467
2468      var transitionComplete = function transitionComplete() {
2469        if (_this4._config.focus) {
2470          _this4._element.focus();
2471        }
2472
2473        _this4._isTransitioning = false;
2474        $(_this4._element).trigger(shownEvent);
2475      };
2476
2477      if (transition) {
2478        var transitionDuration = Util.getTransitionDurationFromElement(this._dialog);
2479        $(this._dialog).one(Util.TRANSITION_END, transitionComplete).emulateTransitionEnd(transitionDuration);
2480      } else {
2481        transitionComplete();
2482      }
2483    };
2484
2485    _proto._enforceFocus = function _enforceFocus() {
2486      var _this5 = this;
2487
2488      $(document).off(Event$5.FOCUSIN) // Guard against infinite focus loop
2489      .on(Event$5.FOCUSIN, function (event) {
2490        if (document !== event.target && _this5._element !== event.target && $(_this5._element).has(event.target).length === 0) {
2491          _this5._element.focus();
2492        }
2493      });
2494    };
2495
2496    _proto._setEscapeEvent = function _setEscapeEvent() {
2497      var _this6 = this;
2498
2499      if (this._isShown && this._config.keyboard) {
2500        $(this._element).on(Event$5.KEYDOWN_DISMISS, function (event) {
2501          if (event.which === ESCAPE_KEYCODE$1) {
2502            _this6._triggerBackdropTransition();
2503          }
2504        });
2505      } else if (!this._isShown) {
2506        $(this._element).off(Event$5.KEYDOWN_DISMISS);
2507      }
2508    };
2509
2510    _proto._setResizeEvent = function _setResizeEvent() {
2511      var _this7 = this;
2512
2513      if (this._isShown) {
2514        $(window).on(Event$5.RESIZE, function (event) {
2515          return _this7.handleUpdate(event);
2516        });
2517      } else {
2518        $(window).off(Event$5.RESIZE);
2519      }
2520    };
2521
2522    _proto._hideModal = function _hideModal() {
2523      var _this8 = this;
2524
2525      this._element.style.display = 'none';
2526
2527      this._element.setAttribute('aria-hidden', true);
2528
2529      this._element.removeAttribute('aria-modal');
2530
2531      this._isTransitioning = false;
2532
2533      this._showBackdrop(function () {
2534        $(document.body).removeClass(ClassName$5.OPEN);
2535
2536        _this8._resetAdjustments();
2537
2538        _this8._resetScrollbar();
2539
2540        $(_this8._element).trigger(Event$5.HIDDEN);
2541      });
2542    };
2543
2544    _proto._removeBackdrop = function _removeBackdrop() {
2545      if (this._backdrop) {
2546        $(this._backdrop).remove();
2547        this._backdrop = null;
2548      }
2549    };
2550
2551    _proto._showBackdrop = function _showBackdrop(callback) {
2552      var _this9 = this;
2553
2554      var animate = $(this._element).hasClass(ClassName$5.FADE) ? ClassName$5.FADE : '';
2555
2556      if (this._isShown && this._config.backdrop) {
2557        this._backdrop = document.createElement('div');
2558        this._backdrop.className = ClassName$5.BACKDROP;
2559
2560        if (animate) {
2561          this._backdrop.classList.add(animate);
2562        }
2563
2564        $(this._backdrop).appendTo(document.body);
2565        $(this._element).on(Event$5.CLICK_DISMISS, function (event) {
2566          if (_this9._ignoreBackdropClick) {
2567            _this9._ignoreBackdropClick = false;
2568            return;
2569          }
2570
2571          if (event.target !== event.currentTarget) {
2572            return;
2573          }
2574
2575          _this9._triggerBackdropTransition();
2576        });
2577
2578        if (animate) {
2579          Util.reflow(this._backdrop);
2580        }
2581
2582        $(this._backdrop).addClass(ClassName$5.SHOW);
2583
2584        if (!callback) {
2585          return;
2586        }
2587
2588        if (!animate) {
2589          callback();
2590          return;
2591        }
2592
2593        var backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);
2594        $(this._backdrop).one(Util.TRANSITION_END, callback).emulateTransitionEnd(backdropTransitionDuration);
2595      } else if (!this._isShown && this._backdrop) {
2596        $(this._backdrop).removeClass(ClassName$5.SHOW);
2597
2598        var callbackRemove = function callbackRemove() {
2599          _this9._removeBackdrop();
2600
2601          if (callback) {
2602            callback();
2603          }
2604        };
2605
2606        if ($(this._element).hasClass(ClassName$5.FADE)) {
2607          var _backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);
2608
2609          $(this._backdrop).one(Util.TRANSITION_END, callbackRemove).emulateTransitionEnd(_backdropTransitionDuration);
2610        } else {
2611          callbackRemove();
2612        }
2613      } else if (callback) {
2614        callback();
2615      }
2616    } // ----------------------------------------------------------------------
2617    // the following methods are used to handle overflowing modals
2618    // todo (fat): these should probably be refactored out of modal.js
2619    // ----------------------------------------------------------------------
2620    ;
2621
2622    _proto._adjustDialog = function _adjustDialog() {
2623      var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
2624
2625      if (!this._isBodyOverflowing && isModalOverflowing) {
2626        this._element.style.paddingLeft = this._scrollbarWidth + "px";
2627      }
2628
2629      if (this._isBodyOverflowing && !isModalOverflowing) {
2630        this._element.style.paddingRight = this._scrollbarWidth + "px";
2631      }
2632    };
2633
2634    _proto._resetAdjustments = function _resetAdjustments() {
2635      this._element.style.paddingLeft = '';
2636      this._element.style.paddingRight = '';
2637    };
2638
2639    _proto._checkScrollbar = function _checkScrollbar() {
2640      var rect = document.body.getBoundingClientRect();
2641      this._isBodyOverflowing = rect.left + rect.right < window.innerWidth;
2642      this._scrollbarWidth = this._getScrollbarWidth();
2643    };
2644
2645    _proto._setScrollbar = function _setScrollbar() {
2646      var _this10 = this;
2647
2648      if (this._isBodyOverflowing) {
2649        // Note: DOMNode.style.paddingRight returns the actual value or '' if not set
2650        //   while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set
2651        var fixedContent = [].slice.call(document.querySelectorAll(Selector$5.FIXED_CONTENT));
2652        var stickyContent = [].slice.call(document.querySelectorAll(Selector$5.STICKY_CONTENT)); // Adjust fixed content padding
2653
2654        $(fixedContent).each(function (index, element) {
2655          var actualPadding = element.style.paddingRight;
2656          var calculatedPadding = $(element).css('padding-right');
2657          $(element).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + _this10._scrollbarWidth + "px");
2658        }); // Adjust sticky content margin
2659
2660        $(stickyContent).each(function (index, element) {
2661          var actualMargin = element.style.marginRight;
2662          var calculatedMargin = $(element).css('margin-right');
2663          $(element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) - _this10._scrollbarWidth + "px");
2664        }); // Adjust body padding
2665
2666        var actualPadding = document.body.style.paddingRight;
2667        var calculatedPadding = $(document.body).css('padding-right');
2668        $(document.body).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + this._scrollbarWidth + "px");
2669      }
2670
2671      $(document.body).addClass(ClassName$5.OPEN);
2672    };
2673
2674    _proto._resetScrollbar = function _resetScrollbar() {
2675      // Restore fixed content padding
2676      var fixedContent = [].slice.call(document.querySelectorAll(Selector$5.FIXED_CONTENT));
2677      $(fixedContent).each(function (index, element) {
2678        var padding = $(element).data('padding-right');
2679        $(element).removeData('padding-right');
2680        element.style.paddingRight = padding ? padding : '';
2681      }); // Restore sticky content
2682
2683      var elements = [].slice.call(document.querySelectorAll("" + Selector$5.STICKY_CONTENT));
2684      $(elements).each(function (index, element) {
2685        var margin = $(element).data('margin-right');
2686
2687        if (typeof margin !== 'undefined') {
2688          $(element).css('margin-right', margin).removeData('margin-right');
2689        }
2690      }); // Restore body padding
2691
2692      var padding = $(document.body).data('padding-right');
2693      $(document.body).removeData('padding-right');
2694      document.body.style.paddingRight = padding ? padding : '';
2695    };
2696
2697    _proto._getScrollbarWidth = function _getScrollbarWidth() {
2698      // thx d.walsh
2699      var scrollDiv = document.createElement('div');
2700      scrollDiv.className = ClassName$5.SCROLLBAR_MEASURER;
2701      document.body.appendChild(scrollDiv);
2702      var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;
2703      document.body.removeChild(scrollDiv);
2704      return scrollbarWidth;
2705    } // Static
2706    ;
2707
2708    Modal._jQueryInterface = function _jQueryInterface(config, relatedTarget) {
2709      return this.each(function () {
2710        var data = $(this).data(DATA_KEY$5);
2711
2712        var _config = _objectSpread2({}, Default$3, {}, $(this).data(), {}, typeof config === 'object' && config ? config : {});
2713
2714        if (!data) {
2715          data = new Modal(this, _config);
2716          $(this).data(DATA_KEY$5, data);
2717        }
2718
2719        if (typeof config === 'string') {
2720          if (typeof data[config] === 'undefined') {
2721            throw new TypeError("No method named \"" + config + "\"");
2722          }
2723
2724          data[config](relatedTarget);
2725        } else if (_config.show) {
2726          data.show(relatedTarget);
2727        }
2728      });
2729    };
2730
2731    _createClass(Modal, null, [{
2732      key: "VERSION",
2733      get: function get() {
2734        return VERSION$5;
2735      }
2736    }, {
2737      key: "Default",
2738      get: function get() {
2739        return Default$3;
2740      }
2741    }]);
2742
2743    return Modal;
2744  }();
2745  /**
2746   * ------------------------------------------------------------------------
2747   * Data Api implementation
2748   * ------------------------------------------------------------------------
2749   */
2750
2751
2752  $(document).on(Event$5.CLICK_DATA_API, Selector$5.DATA_TOGGLE, function (event) {
2753    var _this11 = this;
2754
2755    var target;
2756    var selector = Util.getSelectorFromElement(this);
2757
2758    if (selector) {
2759      target = document.querySelector(selector);
2760    }
2761
2762    var config = $(target).data(DATA_KEY$5) ? 'toggle' : _objectSpread2({}, $(target).data(), {}, $(this).data());
2763
2764    if (this.tagName === 'A' || this.tagName === 'AREA') {
2765      event.preventDefault();
2766    }
2767
2768    var $target = $(target).one(Event$5.SHOW, function (showEvent) {
2769      if (showEvent.isDefaultPrevented()) {
2770        // Only register focus restorer if modal will actually get shown
2771        return;
2772      }
2773
2774      $target.one(Event$5.HIDDEN, function () {
2775        if ($(_this11).is(':visible')) {
2776          _this11.focus();
2777        }
2778      });
2779    });
2780
2781    Modal._jQueryInterface.call($(target), config, this);
2782  });
2783  /**
2784   * ------------------------------------------------------------------------
2785   * jQuery
2786   * ------------------------------------------------------------------------
2787   */
2788
2789  $.fn[NAME$5] = Modal._jQueryInterface;
2790  $.fn[NAME$5].Constructor = Modal;
2791
2792  $.fn[NAME$5].noConflict = function () {
2793    $.fn[NAME$5] = JQUERY_NO_CONFLICT$5;
2794    return Modal._jQueryInterface;
2795  };
2796
2797  /**
2798   * --------------------------------------------------------------------------
2799   * Bootstrap (v4.4.1): tools/sanitizer.js
2800   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
2801   * --------------------------------------------------------------------------
2802   */
2803  var uriAttrs = ['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href'];
2804  var ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i;
2805  var DefaultWhitelist = {
2806    // Global attributes allowed on any supplied element below.
2807    '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],
2808    a: ['target', 'href', 'title', 'rel'],
2809    area: [],
2810    b: [],
2811    br: [],
2812    col: [],
2813    code: [],
2814    div: [],
2815    em: [],
2816    hr: [],
2817    h1: [],
2818    h2: [],
2819    h3: [],
2820    h4: [],
2821    h5: [],
2822    h6: [],
2823    i: [],
2824    img: ['src', 'alt', 'title', 'width', 'height'],
2825    li: [],
2826    ol: [],
2827    p: [],
2828    pre: [],
2829    s: [],
2830    small: [],
2831    span: [],
2832    sub: [],
2833    sup: [],
2834    strong: [],
2835    u: [],
2836    ul: []
2837  };
2838  /**
2839   * A pattern that recognizes a commonly useful subset of URLs that are safe.
2840   *
2841   * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts
2842   */
2843
2844  var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi;
2845  /**
2846   * A pattern that matches safe data URLs. Only matches image, video and audio types.
2847   *
2848   * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts
2849   */
2850
2851  var DATA_URL_PATTERN = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i;
2852
2853  function allowedAttribute(attr, allowedAttributeList) {
2854    var attrName = attr.nodeName.toLowerCase();
2855
2856    if (allowedAttributeList.indexOf(attrName) !== -1) {
2857      if (uriAttrs.indexOf(attrName) !== -1) {
2858        return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN));
2859      }
2860
2861      return true;
2862    }
2863
2864    var regExp = allowedAttributeList.filter(function (attrRegex) {
2865      return attrRegex instanceof RegExp;
2866    }); // Check if a regular expression validates the attribute.
2867
2868    for (var i = 0, l = regExp.length; i < l; i++) {
2869      if (attrName.match(regExp[i])) {
2870        return true;
2871      }
2872    }
2873
2874    return false;
2875  }
2876
2877  function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {
2878    if (unsafeHtml.length === 0) {
2879      return unsafeHtml;
2880    }
2881
2882    if (sanitizeFn && typeof sanitizeFn === 'function') {
2883      return sanitizeFn(unsafeHtml);
2884    }
2885
2886    var domParser = new window.DOMParser();
2887    var createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');
2888    var whitelistKeys = Object.keys(whiteList);
2889    var elements = [].slice.call(createdDocument.body.querySelectorAll('*'));
2890
2891    var _loop = function _loop(i, len) {
2892      var el = elements[i];
2893      var elName = el.nodeName.toLowerCase();
2894
2895      if (whitelistKeys.indexOf(el.nodeName.toLowerCase()) === -1) {
2896        el.parentNode.removeChild(el);
2897        return "continue";
2898      }
2899
2900      var attributeList = [].slice.call(el.attributes);
2901      var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || []);
2902      attributeList.forEach(function (attr) {
2903        if (!allowedAttribute(attr, whitelistedAttributes)) {
2904          el.removeAttribute(attr.nodeName);
2905        }
2906      });
2907    };
2908
2909    for (var i = 0, len = elements.length; i < len; i++) {
2910      var _ret = _loop(i);
2911
2912      if (_ret === "continue") continue;
2913    }
2914
2915    return createdDocument.body.innerHTML;
2916  }
2917
2918  /**
2919   * ------------------------------------------------------------------------
2920   * Constants
2921   * ------------------------------------------------------------------------
2922   */
2923
2924  var NAME$6 = 'tooltip';
2925  var VERSION$6 = '4.4.1';
2926  var DATA_KEY$6 = 'bs.tooltip';
2927  var EVENT_KEY$6 = "." + DATA_KEY$6;
2928  var JQUERY_NO_CONFLICT$6 = $.fn[NAME$6];
2929  var CLASS_PREFIX = 'bs-tooltip';
2930  var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)" + CLASS_PREFIX + "\\S+", 'g');
2931  var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn'];
2932  var DefaultType$4 = {
2933    animation: 'boolean',
2934    template: 'string',
2935    title: '(string|element|function)',
2936    trigger: 'string',
2937    delay: '(number|object)',
2938    html: 'boolean',
2939    selector: '(string|boolean)',
2940    placement: '(string|function)',
2941    offset: '(number|string|function)',
2942    container: '(string|element|boolean)',
2943    fallbackPlacement: '(string|array)',
2944    boundary: '(string|element)',
2945    sanitize: 'boolean',
2946    sanitizeFn: '(null|function)',
2947    whiteList: 'object',
2948    popperConfig: '(null|object)'
2949  };
2950  var AttachmentMap$1 = {
2951    AUTO: 'auto',
2952    TOP: 'top',
2953    RIGHT: 'right',
2954    BOTTOM: 'bottom',
2955    LEFT: 'left'
2956  };
2957  var Default$4 = {
2958    animation: true,
2959    template: '<div class="tooltip" role="tooltip">' + '<div class="arrow"></div>' + '<div class="tooltip-inner"></div></div>',
2960    trigger: 'hover focus',
2961    title: '',
2962    delay: 0,
2963    html: false,
2964    selector: false,
2965    placement: 'top',
2966    offset: 0,
2967    container: false,
2968    fallbackPlacement: 'flip',
2969    boundary: 'scrollParent',
2970    sanitize: true,
2971    sanitizeFn: null,
2972    whiteList: DefaultWhitelist,
2973    popperConfig: null
2974  };
2975  var HoverState = {
2976    SHOW: 'show',
2977    OUT: 'out'
2978  };
2979  var Event$6 = {
2980    HIDE: "hide" + EVENT_KEY$6,
2981    HIDDEN: "hidden" + EVENT_KEY$6,
2982    SHOW: "show" + EVENT_KEY$6,
2983    SHOWN: "shown" + EVENT_KEY$6,
2984    INSERTED: "inserted" + EVENT_KEY$6,
2985    CLICK: "click" + EVENT_KEY$6,
2986    FOCUSIN: "focusin" + EVENT_KEY$6,
2987    FOCUSOUT: "focusout" + EVENT_KEY$6,
2988    MOUSEENTER: "mouseenter" + EVENT_KEY$6,
2989    MOUSELEAVE: "mouseleave" + EVENT_KEY$6
2990  };
2991  var ClassName$6 = {
2992    FADE: 'fade',
2993    SHOW: 'show'
2994  };
2995  var Selector$6 = {
2996    TOOLTIP: '.tooltip',
2997    TOOLTIP_INNER: '.tooltip-inner',
2998    ARROW: '.arrow'
2999  };
3000  var Trigger = {
3001    HOVER: 'hover',
3002    FOCUS: 'focus',
3003    CLICK: 'click',
3004    MANUAL: 'manual'
3005  };
3006  /**
3007   * ------------------------------------------------------------------------
3008   * Class Definition
3009   * ------------------------------------------------------------------------
3010   */
3011
3012  var Tooltip =
3013  /*#__PURE__*/
3014  function () {
3015    function Tooltip(element, config) {
3016      if (typeof Popper === 'undefined') {
3017        throw new TypeError('Bootstrap\'s tooltips require Popper.js (https://popper.js.org/)');
3018      } // private
3019
3020
3021      this._isEnabled = true;
3022      this._timeout = 0;
3023      this._hoverState = '';
3024      this._activeTrigger = {};
3025      this._popper = null; // Protected
3026
3027      this.element = element;
3028      this.config = this._getConfig(config);
3029      this.tip = null;
3030
3031      this._setListeners();
3032    } // Getters
3033
3034
3035    var _proto = Tooltip.prototype;
3036
3037    // Public
3038    _proto.enable = function enable() {
3039      this._isEnabled = true;
3040    };
3041
3042    _proto.disable = function disable() {
3043      this._isEnabled = false;
3044    };
3045
3046    _proto.toggleEnabled = function toggleEnabled() {
3047      this._isEnabled = !this._isEnabled;
3048    };
3049
3050    _proto.toggle = function toggle(event) {
3051      if (!this._isEnabled) {
3052        return;
3053      }
3054
3055      if (event) {
3056        var dataKey = this.constructor.DATA_KEY;
3057        var context = $(event.currentTarget).data(dataKey);
3058
3059        if (!context) {
3060          context = new this.constructor(event.currentTarget, this._getDelegateConfig());
3061          $(event.currentTarget).data(dataKey, context);
3062        }
3063
3064        context._activeTrigger.click = !context._activeTrigger.click;
3065
3066        if (context._isWithActiveTrigger()) {
3067          context._enter(null, context);
3068        } else {
3069          context._leave(null, context);
3070        }
3071      } else {
3072        if ($(this.getTipElement()).hasClass(ClassName$6.SHOW)) {
3073          this._leave(null, this);
3074
3075          return;
3076        }
3077
3078        this._enter(null, this);
3079      }
3080    };
3081
3082    _proto.dispose = function dispose() {
3083      clearTimeout(this._timeout);
3084      $.removeData(this.element, this.constructor.DATA_KEY);
3085      $(this.element).off(this.constructor.EVENT_KEY);
3086      $(this.element).closest('.modal').off('hide.bs.modal', this._hideModalHandler);
3087
3088      if (this.tip) {
3089        $(this.tip).remove();
3090      }
3091
3092      this._isEnabled = null;
3093      this._timeout = null;
3094      this._hoverState = null;
3095      this._activeTrigger = null;
3096
3097      if (this._popper) {
3098        this._popper.destroy();
3099      }
3100
3101      this._popper = null;
3102      this.element = null;
3103      this.config = null;
3104      this.tip = null;
3105    };
3106
3107    _proto.show = function show() {
3108      var _this = this;
3109
3110      if ($(this.element).css('display') === 'none') {
3111        throw new Error('Please use show on visible elements');
3112      }
3113
3114      var showEvent = $.Event(this.constructor.Event.SHOW);
3115
3116      if (this.isWithContent() && this._isEnabled) {
3117        $(this.element).trigger(showEvent);
3118        var shadowRoot = Util.findShadowRoot(this.element);
3119        var isInTheDom = $.contains(shadowRoot !== null ? shadowRoot : this.element.ownerDocument.documentElement, this.element);
3120
3121        if (showEvent.isDefaultPrevented() || !isInTheDom) {
3122          return;
3123        }
3124
3125        var tip = this.getTipElement();
3126        var tipId = Util.getUID(this.constructor.NAME);
3127        tip.setAttribute('id', tipId);
3128        this.element.setAttribute('aria-describedby', tipId);
3129        this.setContent();
3130
3131        if (this.config.animation) {
3132          $(tip).addClass(ClassName$6.FADE);
3133        }
3134
3135        var placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this.element) : this.config.placement;
3136
3137        var attachment = this._getAttachment(placement);
3138
3139        this.addAttachmentClass(attachment);
3140
3141        var container = this._getContainer();
3142
3143        $(tip).data(this.constructor.DATA_KEY, this);
3144
3145        if (!$.contains(this.element.ownerDocument.documentElement, this.tip)) {
3146          $(tip).appendTo(container);
3147        }
3148
3149        $(this.element).trigger(this.constructor.Event.INSERTED);
3150        this._popper = new Popper(this.element, tip, this._getPopperConfig(attachment));
3151        $(tip).addClass(ClassName$6.SHOW); // If this is a touch-enabled device we add extra
3152        // empty mouseover listeners to the body's immediate children;
3153        // only needed because of broken event delegation on iOS
3154        // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
3155
3156        if ('ontouchstart' in document.documentElement) {
3157          $(document.body).children().on('mouseover', null, $.noop);
3158        }
3159
3160        var complete = function complete() {
3161          if (_this.config.animation) {
3162            _this._fixTransition();
3163          }
3164
3165          var prevHoverState = _this._hoverState;
3166          _this._hoverState = null;
3167          $(_this.element).trigger(_this.constructor.Event.SHOWN);
3168
3169          if (prevHoverState === HoverState.OUT) {
3170            _this._leave(null, _this);
3171          }
3172        };
3173
3174        if ($(this.tip).hasClass(ClassName$6.FADE)) {
3175          var transitionDuration = Util.getTransitionDurationFromElement(this.tip);
3176          $(this.tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
3177        } else {
3178          complete();
3179        }
3180      }
3181    };
3182
3183    _proto.hide = function hide(callback) {
3184      var _this2 = this;
3185
3186      var tip = this.getTipElement();
3187      var hideEvent = $.Event(this.constructor.Event.HIDE);
3188
3189      var complete = function complete() {
3190        if (_this2._hoverState !== HoverState.SHOW && tip.parentNode) {
3191          tip.parentNode.removeChild(tip);
3192        }
3193
3194        _this2._cleanTipClass();
3195
3196        _this2.element.removeAttribute('aria-describedby');
3197
3198        $(_this2.element).trigger(_this2.constructor.Event.HIDDEN);
3199
3200        if (_this2._popper !== null) {
3201          _this2._popper.destroy();
3202        }
3203
3204        if (callback) {
3205          callback();
3206        }
3207      };
3208
3209      $(this.element).trigger(hideEvent);
3210
3211      if (hideEvent.isDefaultPrevented()) {
3212        return;
3213      }
3214
3215      $(tip).removeClass(ClassName$6.SHOW); // If this is a touch-enabled device we remove the extra
3216      // empty mouseover listeners we added for iOS support
3217
3218      if ('ontouchstart' in document.documentElement) {
3219        $(document.body).children().off('mouseover', null, $.noop);
3220      }
3221
3222      this._activeTrigger[Trigger.CLICK] = false;
3223      this._activeTrigger[Trigger.FOCUS] = false;
3224      this._activeTrigger[Trigger.HOVER] = false;
3225
3226      if ($(this.tip).hasClass(ClassName$6.FADE)) {
3227        var transitionDuration = Util.getTransitionDurationFromElement(tip);
3228        $(tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
3229      } else {
3230        complete();
3231      }
3232
3233      this._hoverState = '';
3234    };
3235
3236    _proto.update = function update() {
3237      if (this._popper !== null) {
3238        this._popper.scheduleUpdate();
3239      }
3240    } // Protected
3241    ;
3242
3243    _proto.isWithContent = function isWithContent() {
3244      return Boolean(this.getTitle());
3245    };
3246
3247    _proto.addAttachmentClass = function addAttachmentClass(attachment) {
3248      $(this.getTipElement()).addClass(CLASS_PREFIX + "-" + attachment);
3249    };
3250
3251    _proto.getTipElement = function getTipElement() {
3252      this.tip = this.tip || $(this.config.template)[0];
3253      return this.tip;
3254    };
3255
3256    _proto.setContent = function setContent() {
3257      var tip = this.getTipElement();
3258      this.setElementContent($(tip.querySelectorAll(Selector$6.TOOLTIP_INNER)), this.getTitle());
3259      $(tip).removeClass(ClassName$6.FADE + " " + ClassName$6.SHOW);
3260    };
3261
3262    _proto.setElementContent = function setElementContent($element, content) {
3263      if (typeof content === 'object' && (content.nodeType || content.jquery)) {
3264        // Content is a DOM node or a jQuery
3265        if (this.config.html) {
3266          if (!$(content).parent().is($element)) {
3267            $element.empty().append(content);
3268          }
3269        } else {
3270          $element.text($(content).text());
3271        }
3272
3273        return;
3274      }
3275
3276      if (this.config.html) {
3277        if (this.config.sanitize) {
3278          content = sanitizeHtml(content, this.config.whiteList, this.config.sanitizeFn);
3279        }
3280
3281        $element.html(content);
3282      } else {
3283        $element.text(content);
3284      }
3285    };
3286
3287    _proto.getTitle = function getTitle() {
3288      var title = this.element.getAttribute('data-original-title');
3289
3290      if (!title) {
3291        title = typeof this.config.title === 'function' ? this.config.title.call(this.element) : this.config.title;
3292      }
3293
3294      return title;
3295    } // Private
3296    ;
3297
3298    _proto._getPopperConfig = function _getPopperConfig(attachment) {
3299      var _this3 = this;
3300
3301      var defaultBsConfig = {
3302        placement: attachment,
3303        modifiers: {
3304          offset: this._getOffset(),
3305          flip: {
3306            behavior: this.config.fallbackPlacement
3307          },
3308          arrow: {
3309            element: Selector$6.ARROW
3310          },
3311          preventOverflow: {
3312            boundariesElement: this.config.boundary
3313          }
3314        },
3315        onCreate: function onCreate(data) {
3316          if (data.originalPlacement !== data.placement) {
3317            _this3._handlePopperPlacementChange(data);
3318          }
3319        },
3320        onUpdate: function onUpdate(data) {
3321          return _this3._handlePopperPlacementChange(data);
3322        }
3323      };
3324      return _objectSpread2({}, defaultBsConfig, {}, this.config.popperConfig);
3325    };
3326
3327    _proto._getOffset = function _getOffset() {
3328      var _this4 = this;
3329
3330      var offset = {};
3331
3332      if (typeof this.config.offset === 'function') {
3333        offset.fn = function (data) {
3334          data.offsets = _objectSpread2({}, data.offsets, {}, _this4.config.offset(data.offsets, _this4.element) || {});
3335          return data;
3336        };
3337      } else {
3338        offset.offset = this.config.offset;
3339      }
3340
3341      return offset;
3342    };
3343
3344    _proto._getContainer = function _getContainer() {
3345      if (this.config.container === false) {
3346        return document.body;
3347      }
3348
3349      if (Util.isElement(this.config.container)) {
3350        return $(this.config.container);
3351      }
3352
3353      return $(document).find(this.config.container);
3354    };
3355
3356    _proto._getAttachment = function _getAttachment(placement) {
3357      return AttachmentMap$1[placement.toUpperCase()];
3358    };
3359
3360    _proto._setListeners = function _setListeners() {
3361      var _this5 = this;
3362
3363      var triggers = this.config.trigger.split(' ');
3364      triggers.forEach(function (trigger) {
3365        if (trigger === 'click') {
3366          $(_this5.element).on(_this5.constructor.Event.CLICK, _this5.config.selector, function (event) {
3367            return _this5.toggle(event);
3368          });
3369        } else if (trigger !== Trigger.MANUAL) {
3370          var eventIn = trigger === Trigger.HOVER ? _this5.constructor.Event.MOUSEENTER : _this5.constructor.Event.FOCUSIN;
3371          var eventOut = trigger === Trigger.HOVER ? _this5.constructor.Event.MOUSELEAVE : _this5.constructor.Event.FOCUSOUT;
3372          $(_this5.element).on(eventIn, _this5.config.selector, function (event) {
3373            return _this5._enter(event);
3374          }).on(eventOut, _this5.config.selector, function (event) {
3375            return _this5._leave(event);
3376          });
3377        }
3378      });
3379
3380      this._hideModalHandler = function () {
3381        if (_this5.element) {
3382          _this5.hide();
3383        }
3384      };
3385
3386      $(this.element).closest('.modal').on('hide.bs.modal', this._hideModalHandler);
3387
3388      if (this.config.selector) {
3389        this.config = _objectSpread2({}, this.config, {
3390          trigger: 'manual',
3391          selector: ''
3392        });
3393      } else {
3394        this._fixTitle();
3395      }
3396    };
3397
3398    _proto._fixTitle = function _fixTitle() {
3399      var titleType = typeof this.element.getAttribute('data-original-title');
3400
3401      if (this.element.getAttribute('title') || titleType !== 'string') {
3402        this.element.setAttribute('data-original-title', this.element.getAttribute('title') || '');
3403        this.element.setAttribute('title', '');
3404      }
3405    };
3406
3407    _proto._enter = function _enter(event, context) {
3408      var dataKey = this.constructor.DATA_KEY;
3409      context = context || $(event.currentTarget).data(dataKey);
3410
3411      if (!context) {
3412        context = new this.constructor(event.currentTarget, this._getDelegateConfig());
3413        $(event.currentTarget).data(dataKey, context);
3414      }
3415
3416      if (event) {
3417        context._activeTrigger[event.type === 'focusin' ? Trigger.FOCUS : Trigger.HOVER] = true;
3418      }
3419
3420      if ($(context.getTipElement()).hasClass(ClassName$6.SHOW) || context._hoverState === HoverState.SHOW) {
3421        context._hoverState = HoverState.SHOW;
3422        return;
3423      }
3424
3425      clearTimeout(context._timeout);
3426      context._hoverState = HoverState.SHOW;
3427
3428      if (!context.config.delay || !context.config.delay.show) {
3429        context.show();
3430        return;
3431      }
3432
3433      context._timeout = setTimeout(function () {
3434        if (context._hoverState === HoverState.SHOW) {
3435          context.show();
3436        }
3437      }, context.config.delay.show);
3438    };
3439
3440    _proto._leave = function _leave(event, context) {
3441      var dataKey = this.constructor.DATA_KEY;
3442      context = context || $(event.currentTarget).data(dataKey);
3443
3444      if (!context) {
3445        context = new this.constructor(event.currentTarget, this._getDelegateConfig());
3446        $(event.currentTarget).data(dataKey, context);
3447      }
3448
3449      if (event) {
3450        context._activeTrigger[event.type === 'focusout' ? Trigger.FOCUS : Trigger.HOVER] = false;
3451      }
3452
3453      if (context._isWithActiveTrigger()) {
3454        return;
3455      }
3456
3457      clearTimeout(context._timeout);
3458      context._hoverState = HoverState.OUT;
3459
3460      if (!context.config.delay || !context.config.delay.hide) {
3461        context.hide();
3462        return;
3463      }
3464
3465      context._timeout = setTimeout(function () {
3466        if (context._hoverState === HoverState.OUT) {
3467          context.hide();
3468        }
3469      }, context.config.delay.hide);
3470    };
3471
3472    _proto._isWithActiveTrigger = function _isWithActiveTrigger() {
3473      for (var trigger in this._activeTrigger) {
3474        if (this._activeTrigger[trigger]) {
3475          return true;
3476        }
3477      }
3478
3479      return false;
3480    };
3481
3482    _proto._getConfig = function _getConfig(config) {
3483      var dataAttributes = $(this.element).data();
3484      Object.keys(dataAttributes).forEach(function (dataAttr) {
3485        if (DISALLOWED_ATTRIBUTES.indexOf(dataAttr) !== -1) {
3486          delete dataAttributes[dataAttr];
3487        }
3488      });
3489      config = _objectSpread2({}, this.constructor.Default, {}, dataAttributes, {}, typeof config === 'object' && config ? config : {});
3490
3491      if (typeof config.delay === 'number') {
3492        config.delay = {
3493          show: config.delay,
3494          hide: config.delay
3495        };
3496      }
3497
3498      if (typeof config.title === 'number') {
3499        config.title = config.title.toString();
3500      }
3501
3502      if (typeof config.content === 'number') {
3503        config.content = config.content.toString();
3504      }
3505
3506      Util.typeCheckConfig(NAME$6, config, this.constructor.DefaultType);
3507
3508      if (config.sanitize) {
3509        config.template = sanitizeHtml(config.template, config.whiteList, config.sanitizeFn);
3510      }
3511
3512      return config;
3513    };
3514
3515    _proto._getDelegateConfig = function _getDelegateConfig() {
3516      var config = {};
3517
3518      if (this.config) {
3519        for (var key in this.config) {
3520          if (this.constructor.Default[key] !== this.config[key]) {
3521            config[key] = this.config[key];
3522          }
3523        }
3524      }
3525
3526      return config;
3527    };
3528
3529    _proto._cleanTipClass = function _cleanTipClass() {
3530      var $tip = $(this.getTipElement());
3531      var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX);
3532
3533      if (tabClass !== null && tabClass.length) {
3534        $tip.removeClass(tabClass.join(''));
3535      }
3536    };
3537
3538    _proto._handlePopperPlacementChange = function _handlePopperPlacementChange(popperData) {
3539      var popperInstance = popperData.instance;
3540      this.tip = popperInstance.popper;
3541
3542      this._cleanTipClass();
3543
3544      this.addAttachmentClass(this._getAttachment(popperData.placement));
3545    };
3546
3547    _proto._fixTransition = function _fixTransition() {
3548      var tip = this.getTipElement();
3549      var initConfigAnimation = this.config.animation;
3550
3551      if (tip.getAttribute('x-placement') !== null) {
3552        return;
3553      }
3554
3555      $(tip).removeClass(ClassName$6.FADE);
3556      this.config.animation = false;
3557      this.hide();
3558      this.show();
3559      this.config.animation = initConfigAnimation;
3560    } // Static
3561    ;
3562
3563    Tooltip._jQueryInterface = function _jQueryInterface(config) {
3564      return this.each(function () {
3565        var data = $(this).data(DATA_KEY$6);
3566
3567        var _config = typeof config === 'object' && config;
3568
3569        if (!data && /dispose|hide/.test(config)) {
3570          return;
3571        }
3572
3573        if (!data) {
3574          data = new Tooltip(this, _config);
3575          $(this).data(DATA_KEY$6, data);
3576        }
3577
3578        if (typeof config === 'string') {
3579          if (typeof data[config] === 'undefined') {
3580            throw new TypeError("No method named \"" + config + "\"");
3581          }
3582
3583          data[config]();
3584        }
3585      });
3586    };
3587
3588    _createClass(Tooltip, null, [{
3589      key: "VERSION",
3590      get: function get() {
3591        return VERSION$6;
3592      }
3593    }, {
3594      key: "Default",
3595      get: function get() {
3596        return Default$4;
3597      }
3598    }, {
3599      key: "NAME",
3600      get: function get() {
3601        return NAME$6;
3602      }
3603    }, {
3604      key: "DATA_KEY",
3605      get: function get() {
3606        return DATA_KEY$6;
3607      }
3608    }, {
3609      key: "Event",
3610      get: function get() {
3611        return Event$6;
3612      }
3613    }, {
3614      key: "EVENT_KEY",
3615      get: function get() {
3616        return EVENT_KEY$6;
3617      }
3618    }, {
3619      key: "DefaultType",
3620      get: function get() {
3621        return DefaultType$4;
3622      }
3623    }]);
3624
3625    return Tooltip;
3626  }();
3627  /**
3628   * ------------------------------------------------------------------------
3629   * jQuery
3630   * ------------------------------------------------------------------------
3631   */
3632
3633
3634  $.fn[NAME$6] = Tooltip._jQueryInterface;
3635  $.fn[NAME$6].Constructor = Tooltip;
3636
3637  $.fn[NAME$6].noConflict = function () {
3638    $.fn[NAME$6] = JQUERY_NO_CONFLICT$6;
3639    return Tooltip._jQueryInterface;
3640  };
3641
3642  /**
3643   * ------------------------------------------------------------------------
3644   * Constants
3645   * ------------------------------------------------------------------------
3646   */
3647
3648  var NAME$7 = 'popover';
3649  var VERSION$7 = '4.4.1';
3650  var DATA_KEY$7 = 'bs.popover';
3651  var EVENT_KEY$7 = "." + DATA_KEY$7;
3652  var JQUERY_NO_CONFLICT$7 = $.fn[NAME$7];
3653  var CLASS_PREFIX$1 = 'bs-popover';
3654  var BSCLS_PREFIX_REGEX$1 = new RegExp("(^|\\s)" + CLASS_PREFIX$1 + "\\S+", 'g');
3655
3656  var Default$5 = _objectSpread2({}, Tooltip.Default, {
3657    placement: 'right',
3658    trigger: 'click',
3659    content: '',
3660    template: '<div class="popover" role="tooltip">' + '<div class="arrow"></div>' + '<h3 class="popover-header"></h3>' + '<div class="popover-body"></div></div>'
3661  });
3662
3663  var DefaultType$5 = _objectSpread2({}, Tooltip.DefaultType, {
3664    content: '(string|element|function)'
3665  });
3666
3667  var ClassName$7 = {
3668    FADE: 'fade',
3669    SHOW: 'show'
3670  };
3671  var Selector$7 = {
3672    TITLE: '.popover-header',
3673    CONTENT: '.popover-body'
3674  };
3675  var Event$7 = {
3676    HIDE: "hide" + EVENT_KEY$7,
3677    HIDDEN: "hidden" + EVENT_KEY$7,
3678    SHOW: "show" + EVENT_KEY$7,
3679    SHOWN: "shown" + EVENT_KEY$7,
3680    INSERTED: "inserted" + EVENT_KEY$7,
3681    CLICK: "click" + EVENT_KEY$7,
3682    FOCUSIN: "focusin" + EVENT_KEY$7,
3683    FOCUSOUT: "focusout" + EVENT_KEY$7,
3684    MOUSEENTER: "mouseenter" + EVENT_KEY$7,
3685    MOUSELEAVE: "mouseleave" + EVENT_KEY$7
3686  };
3687  /**
3688   * ------------------------------------------------------------------------
3689   * Class Definition
3690   * ------------------------------------------------------------------------
3691   */
3692
3693  var Popover =
3694  /*#__PURE__*/
3695  function (_Tooltip) {
3696    _inheritsLoose(Popover, _Tooltip);
3697
3698    function Popover() {
3699      return _Tooltip.apply(this, arguments) || this;
3700    }
3701
3702    var _proto = Popover.prototype;
3703
3704    // Overrides
3705    _proto.isWithContent = function isWithContent() {
3706      return this.getTitle() || this._getContent();
3707    };
3708
3709    _proto.addAttachmentClass = function addAttachmentClass(attachment) {
3710      $(this.getTipElement()).addClass(CLASS_PREFIX$1 + "-" + attachment);
3711    };
3712
3713    _proto.getTipElement = function getTipElement() {
3714      this.tip = this.tip || $(this.config.template)[0];
3715      return this.tip;
3716    };
3717
3718    _proto.setContent = function setContent() {
3719      var $tip = $(this.getTipElement()); // We use append for html objects to maintain js events
3720
3721      this.setElementContent($tip.find(Selector$7.TITLE), this.getTitle());
3722
3723      var content = this._getContent();
3724
3725      if (typeof content === 'function') {
3726        content = content.call(this.element);
3727      }
3728
3729      this.setElementContent($tip.find(Selector$7.CONTENT), content);
3730      $tip.removeClass(ClassName$7.FADE + " " + ClassName$7.SHOW);
3731    } // Private
3732    ;
3733
3734    _proto._getContent = function _getContent() {
3735      return this.element.getAttribute('data-content') || this.config.content;
3736    };
3737
3738    _proto._cleanTipClass = function _cleanTipClass() {
3739      var $tip = $(this.getTipElement());
3740      var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX$1);
3741
3742      if (tabClass !== null && tabClass.length > 0) {
3743        $tip.removeClass(tabClass.join(''));
3744      }
3745    } // Static
3746    ;
3747
3748    Popover._jQueryInterface = function _jQueryInterface(config) {
3749      return this.each(function () {
3750        var data = $(this).data(DATA_KEY$7);
3751
3752        var _config = typeof config === 'object' ? config : null;
3753
3754        if (!data && /dispose|hide/.test(config)) {
3755          return;
3756        }
3757
3758        if (!data) {
3759          data = new Popover(this, _config);
3760          $(this).data(DATA_KEY$7, data);
3761        }
3762
3763        if (typeof config === 'string') {
3764          if (typeof data[config] === 'undefined') {
3765            throw new TypeError("No method named \"" + config + "\"");
3766          }
3767
3768          data[config]();
3769        }
3770      });
3771    };
3772
3773    _createClass(Popover, null, [{
3774      key: "VERSION",
3775      // Getters
3776      get: function get() {
3777        return VERSION$7;
3778      }
3779    }, {
3780      key: "Default",
3781      get: function get() {
3782        return Default$5;
3783      }
3784    }, {
3785      key: "NAME",
3786      get: function get() {
3787        return NAME$7;
3788      }
3789    }, {
3790      key: "DATA_KEY",
3791      get: function get() {
3792        return DATA_KEY$7;
3793      }
3794    }, {
3795      key: "Event",
3796      get: function get() {
3797        return Event$7;
3798      }
3799    }, {
3800      key: "EVENT_KEY",
3801      get: function get() {
3802        return EVENT_KEY$7;
3803      }
3804    }, {
3805      key: "DefaultType",
3806      get: function get() {
3807        return DefaultType$5;
3808      }
3809    }]);
3810
3811    return Popover;
3812  }(Tooltip);
3813  /**
3814   * ------------------------------------------------------------------------
3815   * jQuery
3816   * ------------------------------------------------------------------------
3817   */
3818
3819
3820  $.fn[NAME$7] = Popover._jQueryInterface;
3821  $.fn[NAME$7].Constructor = Popover;
3822
3823  $.fn[NAME$7].noConflict = function () {
3824    $.fn[NAME$7] = JQUERY_NO_CONFLICT$7;
3825    return Popover._jQueryInterface;
3826  };
3827
3828  /**
3829   * ------------------------------------------------------------------------
3830   * Constants
3831   * ------------------------------------------------------------------------
3832   */
3833
3834  var NAME$8 = 'scrollspy';
3835  var VERSION$8 = '4.4.1';
3836  var DATA_KEY$8 = 'bs.scrollspy';
3837  var EVENT_KEY$8 = "." + DATA_KEY$8;
3838  var DATA_API_KEY$6 = '.data-api';
3839  var JQUERY_NO_CONFLICT$8 = $.fn[NAME$8];
3840  var Default$6 = {
3841    offset: 10,
3842    method: 'auto',
3843    target: ''
3844  };
3845  var DefaultType$6 = {
3846    offset: 'number',
3847    method: 'string',
3848    target: '(string|element)'
3849  };
3850  var Event$8 = {
3851    ACTIVATE: "activate" + EVENT_KEY$8,
3852    SCROLL: "scroll" + EVENT_KEY$8,
3853    LOAD_DATA_API: "load" + EVENT_KEY$8 + DATA_API_KEY$6
3854  };
3855  var ClassName$8 = {
3856    DROPDOWN_ITEM: 'dropdown-item',
3857    DROPDOWN_MENU: 'dropdown-menu',
3858    ACTIVE: 'active'
3859  };
3860  var Selector$8 = {
3861    DATA_SPY: '[data-spy="scroll"]',
3862    ACTIVE: '.active',
3863    NAV_LIST_GROUP: '.nav, .list-group',
3864    NAV_LINKS: '.nav-link',
3865    NAV_ITEMS: '.nav-item',
3866    LIST_ITEMS: '.list-group-item',
3867    DROPDOWN: '.dropdown',
3868    DROPDOWN_ITEMS: '.dropdown-item',
3869    DROPDOWN_TOGGLE: '.dropdown-toggle'
3870  };
3871  var OffsetMethod = {
3872    OFFSET: 'offset',
3873    POSITION: 'position'
3874  };
3875  /**
3876   * ------------------------------------------------------------------------
3877   * Class Definition
3878   * ------------------------------------------------------------------------
3879   */
3880
3881  var ScrollSpy =
3882  /*#__PURE__*/
3883  function () {
3884    function ScrollSpy(element, config) {
3885      var _this = this;
3886
3887      this._element = element;
3888      this._scrollElement = element.tagName === 'BODY' ? window : element;
3889      this._config = this._getConfig(config);
3890      this._selector = this._config.target + " " + Selector$8.NAV_LINKS + "," + (this._config.target + " " + Selector$8.LIST_ITEMS + ",") + (this._config.target + " " + Selector$8.DROPDOWN_ITEMS);
3891      this._offsets = [];
3892      this._targets = [];
3893      this._activeTarget = null;
3894      this._scrollHeight = 0;
3895      $(this._scrollElement).on(Event$8.SCROLL, function (event) {
3896        return _this._process(event);
3897      });
3898      this.refresh();
3899
3900      this._process();
3901    } // Getters
3902
3903
3904    var _proto = ScrollSpy.prototype;
3905
3906    // Public
3907    _proto.refresh = function refresh() {
3908      var _this2 = this;
3909
3910      var autoMethod = this._scrollElement === this._scrollElement.window ? OffsetMethod.OFFSET : OffsetMethod.POSITION;
3911      var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method;
3912      var offsetBase = offsetMethod === OffsetMethod.POSITION ? this._getScrollTop() : 0;
3913      this._offsets = [];
3914      this._targets = [];
3915      this._scrollHeight = this._getScrollHeight();
3916      var targets = [].slice.call(document.querySelectorAll(this._selector));
3917      targets.map(function (element) {
3918        var target;
3919        var targetSelector = Util.getSelectorFromElement(element);
3920
3921        if (targetSelector) {
3922          target = document.querySelector(targetSelector);
3923        }
3924
3925        if (target) {
3926          var targetBCR = target.getBoundingClientRect();
3927
3928          if (targetBCR.width || targetBCR.height) {
3929            // TODO (fat): remove sketch reliance on jQuery position/offset
3930            return [$(target)[offsetMethod]().top + offsetBase, targetSelector];
3931          }
3932        }
3933
3934        return null;
3935      }).filter(function (item) {
3936        return item;
3937      }).sort(function (a, b) {
3938        return a[0] - b[0];
3939      }
3939).forEach(function (item) {
3940        _this2._offsets.push(item[0]);
3941
3942        _this2._targets.push(item[1]);
3943      });
3944    };
3945
3946    _proto.dispose = function dispose() {
3947      $.removeData(this._element, DATA_KEY$8);
3948      $(this._scrollElement).off(EVENT_KEY$8);
3949      this._element = null;
3950      this._scrollElement = null;
3951      this._config = null;
3952      this._selector = null;
3953      this._offsets = null;
3954      this._targets = null;
3955      this._activeTarget = null;
3956      this._scrollHeight = null;
3957    } // Private
3958    ;
3959
3960    _proto._getConfig = function _getConfig(config) {
3961      config = _objectSpread2({}, Default$6, {}, typeof config === 'object' && config ? config : {});
3962
3963      if (typeof config.target !== 'string') {
3964        var id = $(config.target).attr('id');
3965
3966        if (!id) {
3967          id = Util.getUID(NAME$8);
3968          $(config.target).attr('id', id);
3969        }
3970
3971        config.target = "#" + id;
3972      }
3973
3974      Util.typeCheckConfig(NAME$8, config, DefaultType$6);
3975      return config;
3976    };
3977
3978    _proto._getScrollTop = function _getScrollTop() {
3979      return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop;
3980    };
3981
3982    _proto._getScrollHeight = function _getScrollHeight() {
3983      return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);
3984    };
3985
3986    _proto._getOffsetHeight = function _getOffsetHeight() {
3987      return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height;
3988    };
3989
3990    _proto._process = function _process() {
3991      var scrollTop = this._getScrollTop() + this._config.offset;
3992
3993      var scrollHeight = this._getScrollHeight();
3994
3995      var maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight();
3996
3997      if (this._scrollHeight !== scrollHeight) {
3998        this.refresh();
3999      }
4000
4001      if (scrollTop >= maxScroll) {
4002        var target = this._targets[this._targets.length - 1];
4003
4004        if (this._activeTarget !== target) {
4005          this._activate(target);
4006        }
4007
4008        return;
4009      }
4010
4011      if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {
4012        this._activeTarget = null;
4013
4014        this._clear();
4015
4016        return;
4017      }
4018
4019      var offsetLength = this._offsets.length;
4020
4021      for (var i = offsetLength; i--;) {
4022        var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]);
4023
4024        if (isActiveTarget) {
4025          this._activate(this._targets[i]);
4026        }
4027      }
4028    };
4029
4030    _proto._activate = function _activate(target) {
4031      this._activeTarget = target;
4032
4033      this._clear();
4034
4035      var queries = this._selector.split(',').map(function (selector) {
4036        return selector + "[data-target=\"" + target + "\"]," + selector + "[href=\"" + target + "\"]";
4037      });
4038
4039      var $link = $([].slice.call(document.querySelectorAll(queries.join(','))));
4040
4041      if ($link.hasClass(ClassName$8.DROPDOWN_ITEM)) {
4042        $link.closest(Selector$8.DROPDOWN).find(Selector$8.DROPDOWN_TOGGLE).addClass(ClassName$8.ACTIVE);
4043        $link.addClass(ClassName$8.ACTIVE);
4044      } else {
4045        // Set triggered link as active
4046        $link.addClass(ClassName$8.ACTIVE); // Set triggered links parents as active
4047        // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor
4048
4049        $link.parents(Selector$8.NAV_LIST_GROUP).prev(Selector$8.NAV_LINKS + ", " + Selector$8.LIST_ITEMS).addClass(ClassName$8.ACTIVE); // Handle special case when .nav-link is inside .nav-item
4050
4051        $link.parents(Selector$8.NAV_LIST_GROUP).prev(Selector$8.NAV_ITEMS).children(Selector$8.NAV_LINKS).addClass(ClassName$8.ACTIVE);
4052      }
4053
4054      $(this._scrollElement).trigger(Event$8.ACTIVATE, {
4055        relatedTarget: target
4056      });
4057    };
4058
4059    _proto._clear = function _clear() {
4060      [].slice.call(document.querySelectorAll(this._selector)).filter(function (node) {
4061        return node.classList.contains(ClassName$8.ACTIVE);
4062      }
4062).forEach(function (node) {
4063        return node.classList.remove(ClassName$8.ACTIVE);
4064      });
4065    } // Static
4066    ;
4067
4068    ScrollSpy._jQueryInterface = function _jQueryInterface(config) {
4069      return this.each(function () {
4070        var data = $(this).data(DATA_KEY$8);
4071
4072        var _config = typeof config === 'object' && config;
4073
4074        if (!data) {
4075          data = new ScrollSpy(this, _config);
4076          $(this).data(DATA_KEY$8, data);
4077        }
4078
4079        if (typeof config === 'string') {
4080          if (typeof data[config] === 'undefined') {
4081            throw new TypeError("No method named \"" + config + "\"");
4082          }
4083
4084          data[config]();
4085        }
4086      });
4087    };
4088
4089    _createClass(ScrollSpy, null, [{
4090      key: "VERSION",
4091      get: function get() {
4092        return VERSION$8;
4093      }
4094    }, {
4095      key: "Default",
4096      get: function get() {
4097        return Default$6;
4098      }
4099    }]);
4100
4101    return ScrollSpy;
4102  }();
4103  /**
4104   * ------------------------------------------------------------------------
4105   * Data Api implementation
4106   * ------------------------------------------------------------------------
4107   */
4108
4109
4110  $(window).on(Event$8.LOAD_DATA_API, function () {
4111    var scrollSpys = [].slice.call(document.querySelectorAll(Selector$8.DATA_SPY));
4112    var scrollSpysLength = scrollSpys.length;
4113
4114    for (var i = scrollSpysLength; i--;) {
4115      var $spy = $(scrollSpys[i]);
4116
4117      ScrollSpy._jQueryInterface.call($spy, $spy.data());
4118    }
4119  });
4120  /**
4121   * ------------------------------------------------------------------------
4122   * jQuery
4123   * ------------------------------------------------------------------------
4124   */
4125
4126  $.fn[NAME$8] = ScrollSpy._jQueryInterface;
4127  $.fn[NAME$8].Constructor = ScrollSpy;
4128
4129  $.fn[NAME$8].noConflict = function () {
4130    $.fn[NAME$8] = JQUERY_NO_CONFLICT$8;
4131    return ScrollSpy._jQueryInterface;
4132  };
4133
4134  /**
4135   * ------------------------------------------------------------------------
4136   * Constants
4137   * ------------------------------------------------------------------------
4138   */
4139
4140  var NAME$9 = 'tab';
4141  var VERSION$9 = '4.4.1';
4142  var DATA_KEY$9 = 'bs.tab';
4143  var EVENT_KEY$9 = "." + DATA_KEY$9;
4144  var DATA_API_KEY$7 = '.data-api';
4145  var JQUERY_NO_CONFLICT$9 = $.fn[NAME$9];
4146  var Event$9 = {
4147    HIDE: "hide" + EVENT_KEY$9,
4148    HIDDEN: "hidden" + EVENT_KEY$9,
4149    SHOW: "show" + EVENT_KEY$9,
4150    SHOWN: "shown" + EVENT_KEY$9,
4151    CLICK_DATA_API: "click" + EVENT_KEY$9 + DATA_API_KEY$7
4152  };
4153  var ClassName$9 = {
4154    DROPDOWN_MENU: 'dropdown-menu',
4155    ACTIVE: 'active',
4156    DISABLED: 'disabled',
4157    FADE: 'fade',
4158    SHOW: 'show'
4159  };
4160  var Selector$9 = {
4161    DROPDOWN: '.dropdown',
4162    NAV_LIST_GROUP: '.nav, .list-group',
4163    ACTIVE: '.active',
4164    ACTIVE_UL: '> li > .active',
4165    DATA_TOGGLE: '[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]',
4166    DROPDOWN_TOGGLE: '.dropdown-toggle',
4167    DROPDOWN_ACTIVE_CHILD: '> .dropdown-menu .active'
4168  };
4169  /**
4170   * ------------------------------------------------------------------------
4171   * Class Definition
4172   * ------------------------------------------------------------------------
4173   */
4174
4175  var Tab =
4176  /*#__PURE__*/
4177  function () {
4178    function Tab(element) {
4179      this._element = element;
4180    } // Getters
4181
4182
4183    var _proto = Tab.prototype;
4184
4185    // Public
4186    _proto.show = function show() {
4187      var _this = this;
4188
4189      if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && $(this._element).hasClass(ClassName$9.ACTIVE) || $(this._element).hasClass(ClassName$9.DISABLED)) {
4190        return;
4191      }
4192
4193      var target;
4194      var previous;
4195      var listElement = $(this._element).closest(Selector$9.NAV_LIST_GROUP)[0];
4196      var selector = Util.getSelectorFromElement(this._element);
4197
4198      if (listElement) {
4199        var itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? Selector$9.ACTIVE_UL : Selector$9.ACTIVE;
4200        previous = $.makeArray($(listElement).find(itemSelector));
4201        previous = previous[previous.length - 1];
4202      }
4203
4204      var hideEvent = $.Event(Event$9.HIDE, {
4205        relatedTarget: this._element
4206      });
4207      var showEvent = $.Event(Event$9.SHOW, {
4208        relatedTarget: previous
4209      });
4210
4211      if (previous) {
4212        $(previous).trigger(hideEvent);
4213      }
4214
4215      $(this._element).trigger(showEvent);
4216
4217      if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) {
4218        return;
4219      }
4220
4221      if (selector) {
4222        target = document.querySelector(selector);
4223      }
4224
4225      this._activate(this._element, listElement);
4226
4227      var complete = function complete() {
4228        var hiddenEvent = $.Event(Event$9.HIDDEN, {
4229          relatedTarget: _this._element
4230        });
4231        var shownEvent = $.Event(Event$9.SHOWN, {
4232          relatedTarget: previous
4233        });
4234        $(previous).trigger(hiddenEvent);
4235        $(_this._element).trigger(shownEvent);
4236      };
4237
4238      if (target) {
4239        this._activate(target, target.parentNode, complete);
4240      } else {
4241        complete();
4242      }
4243    };
4244
4245    _proto.dispose = function dispose() {
4246      $.removeData(this._element, DATA_KEY$9);
4247      this._element = null;
4248    } // Private
4249    ;
4250
4251    _proto._activate = function _activate(element, container, callback) {
4252      var _this2 = this;
4253
4254      var activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ? $(container).find(Selector$9.ACTIVE_UL) : $(container).children(Selector$9.ACTIVE);
4255      var active = activeElements[0];
4256      var isTransitioning = callback && active && $(active).hasClass(ClassName$9.FADE);
4257
4258      var complete = function complete() {
4259        return _this2._transitionComplete(element, active, callback);
4260      };
4261
4262      if (active && isTransitioning) {
4263        var transitionDuration = Util.getTransitionDurationFromElement(active);
4264        $(active).removeClass(ClassName$9.SHOW).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
4265      } else {
4266        complete();
4267      }
4268    };
4269
4270    _proto._transitionComplete = function _transitionComplete(element, active, callback) {
4271      if (active) {
4272        $(active).removeClass(ClassName$9.ACTIVE);
4273        var dropdownChild = $(active.parentNode).find(Selector$9.DROPDOWN_ACTIVE_CHILD)[0];
4274
4275        if (dropdownChild) {
4276          $(dropdownChild).removeClass(ClassName$9.ACTIVE);
4277        }
4278
4279        if (active.getAttribute('role') === 'tab') {
4280          active.setAttribute('aria-selected', false);
4281        }
4282      }
4283
4284      $(element).addClass(ClassName$9.ACTIVE);
4285
4286      if (element.getAttribute('role') === 'tab') {
4287        element.setAttribute('aria-selected', true);
4288      }
4289
4290      Util.reflow(element);
4291
4292      if (element.classList.contains(ClassName$9.FADE)) {
4293        element.classList.add(ClassName$9.SHOW);
4294      }
4295
4296      if (element.parentNode && $(element.parentNode).hasClass(ClassName$9.DROPDOWN_MENU)) {
4297        var dropdownElement = $(element).closest(Selector$9.DROPDOWN)[0];
4298
4299        if (dropdownElement) {
4300          var dropdownToggleList = [].slice.call(dropdownElement.querySelectorAll(Selector$9.DROPDOWN_TOGGLE));
4301          $(dropdownToggleList).addClass(ClassName$9.ACTIVE);
4302        }
4303
4304        element.setAttribute('aria-expanded', true);
4305      }
4306
4307      if (callback) {
4308        callback();
4309      }
4310    } // Static
4311    ;
4312
4313    Tab._jQueryInterface = function _jQueryInterface(config) {
4314      return this.each(function () {
4315        var $this = $(this);
4316        var data = $this.data(DATA_KEY$9);
4317
4318        if (!data) {
4319          data = new Tab(this);
4320          $this.data(DATA_KEY$9, data);
4321        }
4322
4323        if (typeof config === 'string') {
4324          if (typeof data[config] === 'undefined') {
4325            throw new TypeError("No method named \"" + config + "\"");
4326          }
4327
4328          data[config]();
4329        }
4330      });
4331    };
4332
4333    _createClass(Tab, null, [{
4334      key: "VERSION",
4335      get: function get() {
4336        return VERSION$9;
4337      }
4338    }]);
4339
4340    return Tab;
4341  }();
4342  /**
4343   * ------------------------------------------------------------------------
4344   * Data Api implementation
4345   * ------------------------------------------------------------------------
4346   */
4347
4348
4349  $(document).on(Event$9.CLICK_DATA_API, Selector$9.DATA_TOGGLE, function (event) {
4350    event.preventDefault();
4351
4352    Tab._jQueryInterface.call($(this), 'show');
4353  });
4354  /**
4355   * ------------------------------------------------------------------------
4356   * jQuery
4357   * ------------------------------------------------------------------------
4358   */
4359
4360  $.fn[NAME$9] = Tab._jQueryInterface;
4361  $.fn[NAME$9].Constructor = Tab;
4362
4363  $.fn[NAME$9].noConflict = function () {
4364    $.fn[NAME$9] = JQUERY_NO_CONFLICT$9;
4365    return Tab._jQueryInterface;
4366  };
4367
4368  /**
4369   * ------------------------------------------------------------------------
4370   * Constants
4371   * ------------------------------------------------------------------------
4372   */
4373
4374  var NAME$a = 'toast';
4375  var VERSION$a = '4.4.1';
4376  var DATA_KEY$a = 'bs.toast';
4377  var EVENT_KEY$a = "." + DATA_KEY$a;
4378  var JQUERY_NO_CONFLICT$a = $.fn[NAME$a];
4379  var Event$a = {
4380    CLICK_DISMISS: "click.dismiss" + EVENT_KEY$a,
4381    HIDE: "hide" + EVENT_KEY$a,
4382    HIDDEN: "hidden" + EVENT_KEY$a,
4383    SHOW: "show" + EVENT_KEY$a,
4384    SHOWN: "shown" + EVENT_KEY$a
4385  };
4386  var ClassName$a = {
4387    FADE: 'fade',
4388    HIDE: 'hide',
4389    SHOW: 'show',
4390    SHOWING: 'showing'
4391  };
4392  var DefaultType$7 = {
4393    animation: 'boolean',
4394    autohide: 'boolean',
4395    delay: 'number'
4396  };
4397  var Default$7 = {
4398    animation: true,
4399    autohide: true,
4400    delay: 500
4401  };
4402  var Selector$a = {
4403    DATA_DISMISS: '[data-dismiss="toast"]'
4404  };
4405  /**
4406   * ------------------------------------------------------------------------
4407   * Class Definition
4408   * ------------------------------------------------------------------------
4409   */
4410
4411  var Toast =
4412  /*#__PURE__*/
4413  function () {
4414    function Toast(element, config) {
4415      this._element = element;
4416      this._config = this._getConfig(config);
4417      this._timeout = null;
4418
4419      this._setListeners();
4420    } // Getters
4421
4422
4423    var _proto = Toast.prototype;
4424
4425    // Public
4426    _proto.show = function show() {
4427      var _this = this;
4428
4429      var showEvent = $.Event(Event$a.SHOW);
4430      $(this._element).trigger(showEvent);
4431
4432      if (showEvent.isDefaultPrevented()) {
4433        return;
4434      }
4435
4436      if (this._config.animation) {
4437        this._element.classList.add(ClassName$a.FADE);
4438      }
4439
4440      var complete = function complete() {
4441        _this._element.classList.remove(ClassName$a.SHOWING);
4442
4443        _this._element.classList.add(ClassName$a.SHOW);
4444
4445        $(_this._element).trigger(Event$a.SHOWN);
4446
4447        if (_this._config.autohide) {
4448          _this._timeout = setTimeout(function () {
4449            _this.hide();
4450          }, _this._config.delay);
4451        }
4452      };
4453
4454      this._element.classList.remove(ClassName$a.HIDE);
4455
4456      Util.reflow(this._element);
4457
4458      this._element.classList.add(ClassName$a.SHOWING);
4459
4460      if (this._config.animation) {
4461        var transitionDuration = Util.getTransitionDurationFromElement(this._element);
4462        $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
4463      } else {
4464        complete();
4465      }
4466    };
4467
4468    _proto.hide = function hide() {
4469      if (!this._element.classList.contains(ClassName$a.SHOW)) {
4470        return;
4471      }
4472
4473      var hideEvent = $.Event(Event$a.HIDE);
4474      $(this._element).trigger(hideEvent);
4475
4476      if (hideEvent.isDefaultPrevented()) {
4477        return;
4478      }
4479
4480      this._close();
4481    };
4482
4483    _proto.dispose = function dispose() {
4484      clearTimeout(this._timeout);
4485      this._timeout = null;
4486
4487      if (this._element.classList.contains(ClassName$a.SHOW)) {
4488        this._element.classList.remove(ClassName$a.SHOW);
4489      }
4490
4491      $(this._element).off(Event$a.CLICK_DISMISS);
4492      $.removeData(this._element, DATA_KEY$a);
4493      this._element = null;
4494      this._config = null;
4495    } // Private
4496    ;
4497
4498    _proto._getConfig = function _getConfig(config) {
4499      config = _objectSpread2({}, Default$7, {}, $(this._element).data(), {}, typeof config === 'object' && config ? config : {});
4500      Util.typeCheckConfig(NAME$a, config, this.constructor.DefaultType);
4501      return config;
4502    };
4503
4504    _proto._setListeners = function _setListeners() {
4505      var _this2 = this;
4506
4507      $(this._element).on(Event$a.CLICK_DISMISS, Selector$a.DATA_DISMISS, function () {
4508        return _this2.hide();
4509      });
4510    };
4511
4512    _proto._close = function _close() {
4513      var _this3 = this;
4514
4515      var complete = function complete() {
4516        _this3._element.classList.add(ClassName$a.HIDE);
4517
4518        $(_this3._element).trigger(Event$a.HIDDEN);
4519      };
4520
4521      this._element.classList.remove(ClassName$a.SHOW);
4522
4523      if (this._config.animation) {
4524        var transitionDuration = Util.getTransitionDurationFromElement(this._element);
4525        $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
4526      } else {
4527        complete();
4528      }
4529    } // Static
4530    ;
4531
4532    Toast._jQueryInterface = function _jQueryInterface(config) {
4533      return this.each(function () {
4534        var $element = $(this);
4535        var data = $element.data(DATA_KEY$a);
4536
4537        var _config = typeof config === 'object' && config;
4538
4539        if (!data) {
4540          data = new Toast(this, _config);
4541          $element.data(DATA_KEY$a, data);
4542        }
4543
4544        if (typeof config === 'string') {
4545          if (typeof data[config] === 'undefined') {
4546            throw new TypeError("No method named \"" + config + "\"");
4547          }
4548
4549          data[config](this);
4550        }
4551      });
4552    };
4553
4554    _createClass(Toast, null, [{
4555      key: "VERSION",
4556      get: function get() {
4557        return VERSION$a;
4558      }
4559    }, {
4560      key: "DefaultType",
4561      get: function get() {
4562        return DefaultType$7;
4563      }
4564    }, {
4565      key: "Default",
4566      get: function get() {
4567        return Default$7;
4568      }
4569    }]);
4570
4571    return Toast;
4572  }();
4573  /**
4574   * ------------------------------------------------------------------------
4575   * jQuery
4576   * ------------------------------------------------------------------------
4577   */
4578
4579
4580  $.fn[NAME$a] = Toast._jQueryInterface;
4581  $.fn[NAME$a].Constructor = Toast;
4582
4583  $.fn[NAME$a].noConflict = function () {
4584    $.fn[NAME$a] = JQUERY_NO_CONFLICT$a;
4585    return Toast._jQueryInterface;
4586  };
4587
4588  exports.Alert = Alert;
4589  exports.Button = Button;
4590  exports.Carousel = Carousel;
4591  exports.Collapse = Collapse;
4592  exports.Dropdown = Dropdown;
4593  exports.Modal = Modal;
4594  exports.Popover = Popover;
4595  exports.Scrollspy = ScrollSpy;
4596  exports.Tab = Tab;
4597  exports.Toast = Toast;
4598  exports.Tooltip = Tooltip;
4599  exports.Util = Util;
4600
4601  Object.defineProperty(exports, '__esModule', { value: true });
4602
4603})));
4604// source --> https://quinto-canal.com/wp-content/themes/newsup/js/owl.carousel.min.js?ver=7.1.1 
4605"function"!==typeof Object.create&&(Object.create=function(f){function g(){}g.prototype=f;return new g});
4606(function(f,g,k){var l={init:function(a,b){this.$elem=f(b);this.options=f.extend({},f.fn.owlCarousel.options,this.$elem.data(),a);this.userOptions=a;this.loadContent()},loadContent:function(){function a(a){var d,e="";if("function"===typeof b.options.jsonSuccess)b.options.jsonSuccess.apply(this,[a]);else{for(d in a.owl)a.owl.hasOwnProperty(d)&&(e+=a.owl[d].item);b.$elem.html(e)}b.logIn()}var b=this,e;"function"===typeof b.options.beforeInit&&b.options.beforeInit.apply(this,[b.$elem]);"string"===typeof b.options.jsonPath?
4607(e=b.options.jsonPath,f.getJSON(e,a)):b.logIn()},logIn:function(){this.$elem.data("owl-originalStyles",this.$elem.attr("style"));this.$elem.data("owl-originalClasses",this.$elem.attr("class"));this.$elem.css({opacity:0});this.orignalItems=this.options.items;this.checkBrowser();this.wrapperWidth=0;this.checkVisible=null;this.setVars()},setVars:function(){if(0===this.$elem.children().length)return!1;this.baseClass();this.eventTypes();this.$userItems=this.$elem.children();this.itemsAmount=this.$userItems.length;
4608this.wrapItems();this.$owlItems=this.$elem.find(".owl-item");this.$owlWrapper=this.$elem.find(".owl-wrapper");this.playDirection="next";this.prevItem=0;this.prevArr=[0];this.currentItem=0;this.customEvents();this.onStartup()},onStartup:function(){this.updateItems();this.calculateAll();this.buildControls();this.updateControls();this.response();this.moveEvents();this.stopOnHover();this.owlStatus();!1!==this.options.transitionStyle&&this.transitionTypes(this.options.transitionStyle);!0===this.options.autoPlay&&
4609(this.options.autoPlay=5E3);this.play();this.$elem.find(".owl-wrapper").css("display","block");this.$elem.is(":visible")?this.$elem.css("opacity",1):this.watchVisibility();this.onstartup=!1;this.eachMoveUpdate();"function"===typeof this.options.afterInit&&this.options.afterInit.apply(this,[this.$elem])},eachMoveUpdate:function(){!0===this.options.lazyLoad&&this.lazyLoad();!0===this.options.autoHeight&&this.autoHeight();this.onVisibleItems();"function"===typeof this.options.afterAction&&this.options.afterAction.apply(this,
4610[this.$elem])}
4610,updateVars:function(){"function"===typeof this.options.beforeUpdate&&this.options.beforeUpdate.apply(this,[this.$elem]);this.watchVisibility();this.updateItems();this.calculateAll();this.updatePosition();this.updateControls();this.eachMoveUpdate();"function"===typeof this.options.afterUpdate&&this.options.afterUpdate.apply(this,[this.$elem])},reload:function(){var a=this;g.setTimeout(function(){a.updateVars()},0)},watchVisibility:function(){var a=this;if(!1===a.$elem.is(":visible"))a.$elem.css({opacity:0}),
4611g.clearInterval(a.autoPlayInterval),g.clearInterval(a.checkVisible);else return!1;a.checkVisible=g.setInterval(function(){a.$elem.is(":visible")&&(a.reload(),a.$elem.animate({opacity:1},200),g.clearInterval(a.checkVisible))},500)},wrapItems:function(){this.$userItems.wrapAll('<div class="owl-wrapper">').wrap('<div class="owl-item"></div>');this.$elem.find(".owl-wrapper").wrap('<div class="owl-wrapper-outer">');this.wrapperOuter=this.$elem.find(".owl-wrapper-outer");this.$elem.css("display","block")},
4612baseClass:function(){var a=this.$elem.hasClass(this.options.baseClass),b=this.$elem.hasClass(this.options.theme);a||this.$elem.addClass(this.options.baseClass);b||this.$elem.addClass(this.options.theme)},updateItems:function(){var a,b;if(!1===this.options.responsive)return!1;if(!0===this.options.singleItem)return this.options.items=this.orignalItems=1,this.options.itemsCustom=!1,this.options.itemsDesktop=!1,this.options.itemsDesktopSmall=!1,this.options.itemsTablet=!1,this.options.itemsTabletSmall=
4613!1,this.options.itemsMobile=!1;a=f(this.options.responsiveBaseWidth).width();a>(this.options.itemsDesktop[0]||this.orignalItems)&&(this.options.items=this.orignalItems);if(!1!==this.options.itemsCustom)for(this.options.itemsCustom.sort(function(a,b){return a[0]-b[0]}),b=0;b<this.options.itemsCustom.length;b+=1)this.options.itemsCustom[b][0]<=a&&(this.options.items=this.options.itemsCustom[b][1]);else a<=this.options.itemsDesktop[0]&&!1!==this.options.itemsDesktop&&(this.options.items=this.options.itemsDesktop[1]),
4614a<=this.options.itemsDesktopSmall[0]&&!1!==this.options.itemsDesktopSmall&&(this.options.items=this.options.itemsDesktopSmall[1]),a<=this.options.itemsTablet[0]&&!1!==this.options.itemsTablet&&(this.options.items=this.options.itemsTablet[1]),a<=this.options.itemsTabletSmall[0]&&!1!==this.options.itemsTabletSmall&&(this.options.items=this.options.itemsTabletSmall[1]),a<=this.options.itemsMobile[0]&&!1!==this.options.itemsMobile&&(this.options.items=this.options.itemsMobile[1]);this.options.items>this.itemsAmount&&
4615!0===this.options.itemsScaleUp&&(this.options.items=this.itemsAmount)},response:function(){var a=this,b,e;if(!0!==a.options.responsive)return!1;e=f(g).width();a.resizer=function(){f(g).width()!==e&&(!1!==a.options.autoPlay&&g.clearInterval(a.autoPlayInterval),g.clearTimeout(b),b=g.setTimeout(function(){e=f(g).width();a.updateVars()},a.options.responsiveRefreshRate))};f(g).resize(a.resizer)},updatePosition:function(){this.jumpTo(this.currentItem);!1!==this.options.autoPlay&&this.checkAp()},appendItemsSizes:function(){var a=
4616this,b=0,e=a.itemsAmount-a.options.items;a.$owlItems.each(function(c){var d=f(this);d.css({width:a.itemWidth}).data("owl-item",Number(c));if(0===c%a.options.items||c===e)c>e||(b+=1);d.data("owl-roundPages",b)})},appendWrapperSizes:function(){this.$owlWrapper.css({width:this.$owlItems.length*this.itemWidth*2,left:0});this.appendItemsSizes()},calculateAll:function(){this.calculateWidth();this.appendWrapperSizes();this.loops();this.max()},calculateWidth:function(){this.itemWidth=Math.round(this.$elem.width()/
4617this.options.items)},max:function(){var a=-1*(this.itemsAmount*this.itemWidth-this.options.items*this.itemWidth);this.options.items>this.itemsAmount?this.maximumPixels=a=this.maximumItem=0:(this.maximumItem=this.itemsAmount-this.options.items,this.maximumPixels=a);return a},min:function(){return 0},loops:function(){var a=0,b=0,e,c;this.positionsInArray=[0];this.pagesInArray=[];for(e=0;e<this.itemsAmount;e+=1)b+=this.itemWidth,this.positionsInArray.push(-b),!0===this.options.scrollPerPage&&(c=f(this.$owlItems[e]),
4618c=c.data("owl-roundPages"),c!==a&&(this.pagesInArray[a]=this.positionsInArray[e],a=c))},buildControls:function(){if(!0===this.options.navigation||!0===this.options.pagination)this.owlControls=f('<div class="owl-control
4618s"/>').toggleClass("clickable",!this.browser.isTouch).appendTo(this.$elem);!0===this.options.pagination&&this.buildPagination();!0===this.options.navigation&&this.buildButtons()},buildButtons:function(){var a=this,b=f('<div class="owl-buttons"/>');a.owlControls.append(b);a.buttonPrev=
4619f("<div/>",{"class":"owl-prev",html:a.options.navigationText[0]||""});a.buttonNext=f("<div/>",{"class":"owl-next",html:a.options.navigationText[1]||""});b.append(a.buttonPrev).append(a.buttonNext);b.on("touchstart.owlControls mousedown.owlControls",'div[class^="owl"]',function(a){a.preventDefault()});b.on("touchend.owlControls mouseup.owlControls",'div[class^="owl"]',function(b){b.preventDefault();f(this).hasClass("owl-next")?a.next():a.prev()})},buildPagination:function(){var a=this;a.paginationWrapper=
4620f('<div class="owl-pagination"/>');a.owlControls.append(a.paginationWrapper);a.paginationWrapper.on("touchend.owlControls mouseup.owlControls",".owl-page",function(b){b.preventDefault();Number(f(this).data("owl-page"))!==a.currentItem&&a.goTo(Number(f(this).data("owl-page")),!0)})},updatePagination:function(){var a,b,e,c,d,g;if(!1===this.options.pagination)return!1;this.paginationWrapper.html("");a=0;b=this.itemsAmount-this.itemsAmount%this.options.items;for(c=0;c<this.itemsAmount;c+=1)0===c%this.options.items&&
4621(a+=1,b===c&&(e=this.itemsAmount-this.options.items),d=f("<div/>",{"class":"owl-page"}),g=f("<span></span>",{text:!0===this.options.paginationNumbers?a:"","class":!0===this.options.paginationNumbers?"owl-numbers":""}),d.append(g),d.data("owl-page",b===c?e:c),d.data("owl-roundPages",a),this.paginationWrapper.append(d));this.checkPagination()},checkPagination:function(){var a=this;if(!1===a.options.pagination)return!1;a.paginationWrapper.find(".owl-page").each(function(){f(this).data("owl-roundPages")===
4622f(a.$owlItems[a.currentItem]).data("owl-roundPages")&&(a.paginationWrapper.find(".owl-page").removeClass("active"),f(this).addClass("active"))})},checkNavigation:function(){if(!1===this.options.navigation)return!1;!1===this.options.rewindNav&&(0===this.currentItem&&0===this.maximumItem?(this.buttonPrev.addClass("disabled"),this.buttonNext.addClass("disabled")):0===this.currentItem&&0!==this.maximumItem?(this.buttonPrev.addClass("disabled"),this.buttonNext.removeClass("disabled")):this.currentItem===
4623this.maximumItem?(this.buttonPrev.removeClass("disabled"),this.buttonNext.addClass("disabled")):0!==this.currentItem&&this.currentItem!==this.maximumItem&&(this.buttonPrev.removeClass("disabled"),this.buttonNext.removeClass("disabled")))},updateControls:function(){this.updatePagination();this.checkNavigation();this.owlControls&&(this.options.items>=this.itemsAmount?this.owlControls.hide():this.owlControls.show())},destroyControls:function(){this.owlControls&&this.owlControls.remove()},next:function(a){if(this.isTransition)return!1;
4624this.currentItem+=!0===this.options.scrollPerPage?this.options.items:1;if(this.currentItem>this.maximumItem+(!0===this.options.scrollPerPage?this.options.items-1:0))if(!0===this.options.rewindNav)this.currentItem=0,a="rewind";else return this.currentItem=this.maximumItem,!1;this.goTo(this.currentItem,a)},prev:function(a){if(this.isTransition)return!1;this.currentItem=!0===this.options.scrollPerPage&&0<this.currentItem&&this.currentItem<this.options.items?0:this.currentItem-(!0===this.options.scrollPerPage?
4625this.options.items:1);if(0>this.currentItem)if(!0===this.options.rewindNav)this.currentItem=this.maximumItem,a="rewind";else return this.currentItem=0,!1;this.goTo(this.currentItem,a)},goTo:function(a,b,e){var c=this;if(c.isTransition)return!1;"function"===typeof c.options.beforeMove&&c.options.beforeMove.apply(this,[c.$elem]);a>=c.maximumItem?a=c.maximumItem:0>=a&&(a=0);c.currentItem=c.owl.currentItem=a;if(!1!==c.options.transitionStyle&&"drag"!==e&&1===c.options.items&&!0===c.browser.support3d)return c.swapSpeed(0),
4626!0===c.browser.support3d?c.transition3d(c.positionsInArray[a]):c.css2slide(c.positionsInArray[a],1),c.afterGo(),c.singleItemTransition(),!1;a=c.positionsInArray[a];!0===c.browser.support3d?(c.isCss3Finish=!1,!0===b?(c.swapSpeed("paginationSpeed"),g.setTimeout(function(){c.isCss3Finish=!0},c.options.paginationSpeed)):"rewind"===b?(c.swapSpeed(c.options.rewindSpeed),g.setTimeout(function(){c.isCss3Finish=!0},c.options.rewindSpeed)):(c.swapSpeed("slideSpeed"),g.setTimeout(function(){c.isCss3Finish=!0},
4627c.options.slideSpeed)),c.transition3d(a)):!0===b?c.css2slide(a,c.options.paginationSpeed):"rewind"===b?c.css2slide(a,c.options.rewindSpeed):c.css2slide(a,c.options.slideSpeed);c.afterGo()},jumpTo:function(a){"function"===typeof this.options.beforeMove&&this.options.beforeMove.apply(this,[this.$elem]);a>=this.maximumItem||-1===a?a=this.maximumItem:0>=a&&(a=0);this.swapSpeed(0);!0===this.browser.support3d?this.transition3d(this.positionsInArray[a]):this.css2slide(this.positionsInArray[a],1);this.currentItem=
4628this.owl.currentItem=a;this.afterGo()},afterGo:function(){this.prevArr.push(this.currentItem);this.prevItem=this.owl.prevItem=this.prevArr[this.prevArr.length-2];this.prevArr.shift(0);this.prevItem!==this.currentItem&&(this.checkPagination(),this.checkNavigation(),this.eachMoveUpdate(),!1!==this.options.autoPlay&&this.checkAp());"function"===typeof this.options.afterMove&&this.prevItem!==this.currentItem&&this.options.afterMove.apply(this,[this.$elem])},stop:function(){this.apStatus="stop";g.clearInterval(this.autoPlayInterval)},
4629checkAp:function(){"stop"!==this.apStatus&&this.play()},play:function(){var a=this;a.apStatus="play";if(!1===a.options.autoPlay)return!1;g.clearInterval(a.autoPlayInterval);a.autoPlayInterval=g.setInterval(function(){a.next(!0)},a.options.autoPlay)},swapSpeed:function(a){"slideSpeed"===a?this.$owlWrapper.css(this.addCssSpeed(this.options.slideSpeed)):"paginationSpeed"===a?this.$owlWrapper.css(this.addCssSpeed(this.options.paginationSpeed)):"string"!==typeof a&&this.$owlWrapper.css(this.addCssSpeed(a))},
4630addCssSpeed:function(a){return{"-webkit-transition":"all "+a+"ms ease","-moz-transition":"all "+a+"ms ease","-o-transition":"all "+a+"ms ease",transition:"all "+a+"ms ease"}},removeTransition:function(){return{"-webkit-transition":"","-moz-transition":"","-o-transition":"",transition:""}},doTranslate:function(a){return{"-webkit-transform":"translate3d("+a+"px, 0px, 0px)","-moz-transform":"translate3d("+a+"px, 0px, 0px)","-o-transform":"translate3d("+a+"px, 0px, 0px)","-ms-transform":"translate3d("+
4631a+"px, 0px, 0px)",transform:"translate3d("+a+"px, 0px,0px)"}},transition3d:function(a){this.$owlWrapper.css(this.doTranslate(a))},css2move:function(a){this.$owlWrapper.css({left:a})},css2slide:function(a,b){var e=this;e.isCssFinish=!1;e.$owlWrapper.stop(!0,!0).animate({left:a},{duration:b||e.options.slideSpeed,complete:function(){e.isCssFinish=!0}})},checkBrowser:function(){var a=k.createElement("div");a.style.cssText="  -moz-transform:translate3d(0px, 0px, 0px); -ms-transform:translate3d(0px, 0px, 0px); -o-transform:translate3d(0px, 0px, 0px); -webkit-transform:translate3d(0px, 0px, 0px); transform:translate3d(0px, 0px, 0px)";
4632a=a.style.cssText.match(/translate3d\(0px, 0px, 0px\)/g);this.browser={support3d:null!==a&&1===a.length,isTouch:"ontouchstart"in g||g.navigator.msMaxTouchPoints}},moveEvents:function(){if(!1!==this.options.mouseDrag||!1!==this.options.touchDrag)this.gestures(),this.disabledEvents()},eventTypes:function(){var a=["s","e","x"];this.ev_types={};!0===this.options.mouseDrag&&!0===this.options.touchDrag?a=["touchstart.owl mousedown.owl","touchmove.owl mousemove.owl","touchend.owl touchcancel.owl mouseup.owl"]:
4633!1===this.options.mouseDrag&&!0===this.options.touchDrag?a=["touchstart.owl","touchmove.owl","touchend.owl touchcancel.owl"]:!0===this.options.mouseDrag&&!1===this.options.touchDrag&&(a=["mousedown.owl","mousemove.owl","mouseup.owl"]);this.ev_types.start=a[0];this.ev_types.move=a[1];this.ev_types.end=a[2]},disabledEvents:function(){this.$elem.on("dragstart.owl",function(a){a.preventDefault()});this.$elem.on("mousedown.disableTextSelect",function(a){return f(a.target).is("input, textarea, select, option")})},
4634gestures:function(){function a(a){if(void 0!==a.touches)return{x:a.touches[0].pageX,y:a.touches[0].pageY};if(void 0===a.touches){if(void 0!==a.pageX)return{x:a.pageX,y:a.pageY};if(void 0===a.pageX)return{x:a.clientX,y:a.clientY}}}function b(a){"on"===a?(f(k).on(d.ev_types.move,e),f(k).on(d.ev_types.end,c)):"off"===a&&(f(k).off(d.ev_types.move),f(k).off(d.ev_types.end))}function e(b){b=b.originalEvent||b||g.event;d.newPosX=a(b).x-h.offsetX;d.newPosY=a(b).y-h.offsetY;d.newRelativeX=d.newPosX-h.relativePos;
4635"function"===typeof d.options.startDragging&&!0!==h.dragging&&0!==d.newRelativeX&&(h.dragging=!0,d.options.startDragging.apply(d,[d.$elem]));(8<d.newRelativeX||-8>d.newRelativeX)&&!0===d.browser.isTouch&&(void 0!==b.preventDefault?b.preventDefault():b.returnValue=!1,h.sliding=!0);(10<d.newPosY||-10>d.newPosY)&&!1===h.sliding&&f(k).off("touchmove.owl");d.newPosX=Math.max(Math.min(d.newPosX,d.newRelativeX/5),d.maximumPixels+d.newRelativeX/5);!0===d.browser.support3d?d.transition3d(d.newPosX):d.css2move(d.newPosX)}
4636function c(a){a=a.originalEvent||a||g.event;var c;a.target=a.target||a.srcElement;h.dragging=!1;!0!==d.browser.isTouch&&d.$owlWrapper.removeClass("grabbing");d.dragDirection=0>d.newRelativeX?d.owl.dragDirection="left":d.owl.dragDirection="right";0!==d.newRelativeX&&(c=d.getNewPosition(),d.goTo(c,!1,"drag"),h.targetElement===a.target&&!0!==d.browser.isTouch&&(f(a.target).on("click.disable",function(a){a.stopImmediatePropagation();a.stopPropagation();a.preventDefault();f(a.target).off("click.disable")}),
4637a=f._data(a.target,"events").click,c=a.pop(),a.splice(0,0,c)));b("off")}var d=this,h={offsetX:0,offsetY:0,baseElWidth:0,relativePos:0,position:null,minSwipe:null,maxSwipe:null,sliding:null,dargging:null,targetElement:null};d.isCssFinish=!0;d.$elem.on(d.ev_types.start,".owl-wrapper",function(c){c=c.originalEvent||c||g.event;var e;if(3===c.which)return!1;if(!(d.itemsAmount<=d.options.items)){if(!1===d.isCssFinish&&!d.options.dragBeforeAnimFinish||!1===d.isCss3Finish&&!d.options.dragBeforeAnimFinish)return!1;
4638!1!==d.options.autoPlay&&g.clearInterval(d.autoPlayInterval);!0===d.browser.isTouch||d.$owlWrapper.hasClass("grabbing")||d.$owlWrapper.addClass("grabbing");d.newPosX=0;d.newRelativeX=0;f(this).css(d.removeTransition());e=f(this).position();h.relativePos=e.left;h.offsetX=a(c).x-e.left;h.offsetY=a(c).y-e.top;b("on");h.sliding=!1;h.targetElement=c.target||c.srcElement}})},getNewPosition:function(){var a=this.closestItem();a>this.maximumItem?a=this.currentItem=this.maximumItem:0<=this.newPosX&&(this.currentItem=
4639a=0);return a},closestItem:function(){var a=this,b=!0===a.options.scrollPerPage?a.pagesInArray:a.positionsInArray,e=a.newPosX,c=null;f.each(b,function(d,g){e-a.itemWidth/20>b[d+1]&&e-a.itemWidth/20<g&&"left"===a.moveDirection()?(c=g,a.currentItem=!0===a.options.scrollPerPage?f.inArray(c,a.positionsInArray):d):e+a.itemWidth/20<g&&e+a.itemWidth/20>(b[d+1]||b[d]-a.itemWidth)&&"right"===a.moveDirection()&&(!0===a.options.scrollPerPage?(c=b[d+1]||b[b.length-1],a.currentItem=f.inArray(c,a.positionsInArray)):
4640(c=b[d+1],a.currentItem=d+1))});return a.currentItem},moveDirection:function(){var a;0>this.newRelativeX?(a="right",this.playDirection="next"):(a="left",this.playDirection="prev");return a},customEvents:function(){var a=this;a.$elem.on("owl.next",function(){a.next()});a.$elem.on("owl.prev",function(){a.prev()});a.$elem.on("owl.play",function(b,e){a.options.autoPlay=e;a.play();a.hoverStatus="play"});a.$elem.on("owl.stop",function(){a.stop();a.hoverStatus="stop"});a.$elem.on("owl.goTo",function(b,e){a.goTo(e)});
4641a.$elem.on("owl.jumpTo",function(b,e){a.jumpTo(e)})},stopOnHover:function(){var a=this;!0===a.options.stopOnHover&&!0!==a.browser.isTouch&&!1!==a.options.autoPlay&&(a.$elem.on("mouseover",function(){a.stop()}),a.$elem.on("mouseout",function(){"stop"!==a.hoverStatus&&a.play()}))},lazyLoad:function(){var a,b,e,c,d;if(!1===this.options.lazyLoad)return!1;for(a=0;a<this.itemsAmount;a+=1)b=f(this.$owlItems[a]),"loaded"!==b.data("owl-loaded")&&(e=b.data("owl-item"),c=b.find(".lazyOwl"),"string"!==typeof c.data("src")?
4642b.data("owl-loaded","loaded"):(void 0===b.data("owl-loaded")&&(c.hide(),b.addClass("loading").data("owl-loaded","checked")),(d=!0===this.options.lazyFollow?e>=this.currentItem:!0)&&e<this.currentItem+this.options.items&&c.length&&this.lazyPreload(b,c)))},lazyPreload:function(a,b){function e(){a.data("owl-loaded","loaded").removeClass("loading");b.removeAttr("data-src");"fade"===d.options.lazyEffect?b.fadeIn(400):b.show();"function"===typeof d.options.afterLazyLoad&&d.options.afterLazyLoad.apply(this,
4643[d.$elem])}function c(){f+=1;d.completeImg(b.get(0))||!0===k?e():100>=f?g.setTimeout(c,100):e()}var d=this,f=0,k;"DIV"===b.prop("tagName")?(b.css("background-image","url("+b.data("src")+")"),k=!0):b[0].src=b.data("src");c()},autoHeight:function(){function a(){var a=f(e.$owlItems[e.currentItem]).height();e.wrapperOuter.css("height",a+"px");e.wrapperOuter.hasClass("autoHeight")||g.setTimeout(function(){e.wrapperOuter.addClass("autoHeight")},0)}function b(){d+=1;e.completeImg(c.get(0))?a():100>=d?g.setTimeout(b,
4644100):e.wrapperOuter.css("height","")}var e=this,c=f(e.$owlItems[e.currentItem]).find("img"),d;void 0!==c.get(0)?(d=0,b()):a()},completeImg:function(a){return!a.complete||"undefined"!==typeof a.naturalWi
4644dth&&0===a.naturalWidth?!1:!0},onVisibleItems:function(){var a;!0===this.options.addClassActive&&this.$owlItems.removeClass("active");this.visibleItems=[];for(a=this.currentItem;a<this.currentItem+this.options.items;a+=1)this.visibleItems.push(a),!0===this.options.addClassActive&&f(this.$owlItems[a]).addClass("active");
4645this.owl.visibleItems=this.visibleItems},transitionTypes:function(a){this.outClass="owl-"+a+"-out";this.inClass="owl-"+a+"-in"},singleItemTransition:function(){var a=this,b=a.outClass,e=a.inClass,c=a.$owlItems.eq(a.currentItem),d=a.$owlItems.eq(a.prevItem),f=Math.abs(a.positionsInArray[a.currentItem])+a.positionsInArray[a.prevItem],g=Math.abs(a.positionsInArray[a.currentItem])+a.itemWidth/2;a.isTransition=!0;a.$owlWrapper.addClass("owl-origin").css({"-webkit-transform-origin":g+"px","-moz-perspective-origin":g+
4646"px","perspective-origin":g+"px"});d.css({position:"relative",left:f+"px"}).addClass(b).on("webkitAnimationEnd oAnimationEnd MSAnimationEnd animationend",function(){a.endPrev=!0;d.off("webkitAnimationEnd oAnimationEnd MSAnimationEnd animationend");a.clearTransStyle(d,b)});c.addClass(e).on("webkitAnimationEnd oAnimationEnd MSAnimationEnd animationend",function(){a.endCurrent=!0;c.off("webkitAnimationEnd oAnimationEnd MSAnimationEnd animationend");a.clearTransStyle(c,e)})},clearTransStyle:function(a,
4647b){a.css({position:"",left:""}).removeClass(b);this.endPrev&&this.endCurrent&&(this.$owlWrapper.removeClass("owl-origin"),this.isTransition=this.endCurrent=this.endPrev=!1)},owlStatus:function(){this.owl={userOptions:this.userOptions,baseElement:this.$elem,userItems:this.$userItems,owlItems:this.$owlItems,currentItem:this.currentItem,prevItem:this.prevItem,visibleItems:this.visibleItems,isTouch:this.browser.isTouch,browser:this.browser,dragDirection:this.dragDirection}},clearEvents:function(){this.$elem.off(".owl owl mousedown.disableTextSelect");
4648f(k).off(".owl owl");f(g).off("resize",this.resizer)},unWrap:function(){0!==this.$elem.children().length&&(this.$owlWrapper.unwrap(),this.$userItems.unwrap().unwrap(),this.owlControls&&this.owlControls.remove());this.clearEvents();this.$elem.attr("style",this.$elem.data("owl-originalStyles")||"").attr("class",this.$elem.data("owl-originalClasses"))},destroy:function(){this.stop();g.clearInterval(this.checkVisible);this.unWrap();this.$elem.removeData()},reinit:function(a){a=f.extend({},this.userOptions,
4649a);this.unWrap();this.init(a,this.$elem)},addItem:function(a,b){var e;if(!a)return!1;if(0===this.$elem.children().length)return this.$elem.append(a),this.setVars(),!1;this.unWrap();e=void 0===b||-1===b?-1:b;e>=this.$userItems.length||-1===e?this.$userItems.eq(-1).after(a):this.$userItems.eq(e).before(a);this.setVars()},removeItem:function(a){if(0===this.$elem.children().length)return!1;a=void 0===a||-1===a?-1:a;this.unWrap();this.$userItems.eq(a).remove();this.setVars()}};f.fn.owlCarousel=function(a){return this.each(function(){if(!0===
4650f(this).data("owl-init"))return!1;f(this).data("owl-init",!0);var b=Object.create(l);b.init(a,this);f.data(this,"owlCarousel",b)})};f.fn.owlCarousel.options={items:5,itemsCustom:!1,itemsDesktop:[1199,4],itemsDesktopSmall:[979,3],itemsTablet:[768,2],itemsTabletSmall:!1,itemsMobile:[479,1],singleItem:!1,itemsScaleUp:!1,slideSpeed:200,paginationSpeed:800,rewindSpeed:1E3,autoPlay:!1,stopOnHover:!1,navigation:!1,navigationText:["prev","next"],rewindNav:!0,scrollPerPage:!1,pagination:!0,paginationNumbers:!1,
4651responsive:!0,responsiveRefreshRate:200,responsiveBaseWidth:g,baseClass:"owl-carousel",theme:"owl-theme",lazyLoad:!1,lazyFollow:!0,lazyEffect:"fade",autoHeight:!1,jsonPath:!1,jsonSuccess:!1,dragBeforeAnimFinish:!0,mouseDrag:!0,touchDrag:!0,addClassActive:!1,transitionStyle:!1,beforeUpdate:!1,afterUpdate:!1,beforeInit:!1,afterInit:!1,beforeMove:!1,afterMove:!1,afterAction:!1,startDragging:!1,afterLazyLoad:!1}})(jQuery,window,document);
4652// source --> https://quinto-canal.com/wp-content/themes/newsup/js/jquery.smartmenus.js?ver=7.1.1 
4653/*!
4654 * SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017
4655 * http://www.smartmenus.org/
4656 *
4657 * Copyright Vasil Dinkov, Vadikom Web Ltd.
4658 * http://vadikom.com
4659 *
4660 * Licensed MIT
4661 */
4662
4663(function(factory) {
4664	if (typeof define === 'function' && define.amd) {
4665		// AMD
4666		define(['jquery'], factory);
4667	} else if (typeof module === 'object' && typeof module.exports === 'object') {
4668		// CommonJS
4669		module.exports = factory(require('jquery'));
4670	} else {
4671		// Global jQuery
4672		factory(jQuery);
4673	}
4674} (function($) {
4675
4676	var menuTrees = [],
4677		mouse = false, // optimize for touch by default - we will detect for mouse input
4678		touchEvents = 'ontouchstart' in window, // we use this just to choose between toucn and pointer events, not for touch screen detection
4679		mouseDetectionEnabled = false,
4680		requestAnimationFrame = window.requestAnimationFrame || function(callback) { return setTimeout(callback, 1000 / 60); },
4681		cancelAnimationFrame = window.cancelAnimationFrame || function(id) { clearTimeout(id); },
4682		canAnimate = !!$.fn.animate;
4683
4684	// Handle detection for mouse input (i.e. desktop browsers, tablets with a mouse, etc.)
4685	function initMouseDetection(disable) {
4686		var eNS = '.smartmenus_mouse';
4687		if (!mouseDetectionEnabled && !disable) {
4688			// if we get two consecutive mousemoves within 2 pixels from each other and within 300ms, we assume a real mouse/cursor is present
4689			// in practice, this seems like impossible to trick unintentianally with a real mouse and a pretty safe detection on touch devices (even with older browsers that do not support touch events)
4690			var firstTime = true,
4691				lastMove = null,
4692				events = {
4693					'mousemove': function(e) {
4694						var thisMove = { x: e.pageX, y: e.pageY, timeStamp: new Date().getTime() };
4695						if (lastMove) {
4696							var deltaX = Math.abs(lastMove.x - thisMove.x),
4697								deltaY = Math.abs(lastMove.y - thisMove.y);
4698		 					if ((deltaX > 0 || deltaY > 0) && deltaX <= 2 && deltaY <= 2 && thisMove.timeStamp - lastMove.timeStamp <= 300) {
4699								mouse = true;
4700								// if this is the first check after page load, check if we are not over some item by chance and call the mouseenter handler if yes
4701								if (firstTime) {
4702									var $a = $(e.target).closest('a');
4703									if ($a.is('a')) {
4704										$.each(menuTrees, function() {
4705											if ($.contains(this.$root[0], $a[0])) {
4706												this.itemEnter({ currentTarget: $a[0] });
4707												return false;
4708											}
4709										});
4710									}
4711									firstTime = false;
4712								}
4713							}
4714						}
4715						lastMove = thisMove;
4716					}
4717				};
4718			events[touchEvents ? 'touchstart' : 'pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut'] = function(e) {
4719				if (isTouchEvent(e.originalEvent)) {
4720					mouse = false;
4721				}
4722			};
4723			$(document).on(getEventsNS(events, eNS));
4724			mouseDetectionEnabled = true;
4725		} else if (mouseDetectionEnabled && disable) {
4726			$(document).off(eNS);
4727			mouseDetectionEnabled = false;
4728		}
4729	}
4730
4731	function isTouchEvent(e) {
4732		return !/^(4|mouse)$/.test(e.pointerType);
4733	}
4734
4735	// returns a jQuery on() ready object
4736	function getEventsNS(events, eNS) {
4737		if (!eNS) {
4738			eNS = '';
4739		}
4740		var eventsNS = {};
4741		for (var i in events) {
4742			eventsNS[i.split(' ').join(eNS + ' ') + eNS] = events[i];
4743		}
4744		return eventsNS;
4745	}
4746
4747	$.SmartMenus = function(elm, options) {
4748		this.$root = $(elm);
4749		this.opts = options;
4750		this.rootId = ''; // internal
4751		this.accessIdPrefix = '';
4752		this.$subArrow = null;
4753		this.activatedItems = []; // stores last activated A's for each level
4754		this.visibleSubMenus = []; // stores visible sub menus UL's (might be in no particular order)
4755		this.showTimeout = 0;
4756		this.hideTimeout = 0;
4757		this.scrollTimeout = 0;
4758		this.clickActivated = true;
4759		this.focusActivated = true;
4760		this.zIndexInc = 0;
4761		this.idInc = 0;
4762		this.$firstLink = null; // we'll use these for some tests
4763		this.$firstSub = null; // at runtime so we'll cache them
4764		this.disabled = false;
4765		this.$disableOverlay = null;
4766		this.$touchScrollingSub = null;
4767		this.cssTransforms3d = 'perspective' in elm.style || 'webkitPerspective' in elm.style;
4768		this.wasCollapsible = false;
4769		this.init();
4770	};
4771
4772	$.extend($.SmartMenus, {
4773		hideAll: function() {
4774			$.each(menuTrees, function() {
4775				this.menuHideAll();
4776			});
4777		},
4778		destroy: function() {
4779			while (menuTrees.length) {
4780				menuTrees[0].destroy();
4781			}
4782			initMouseDetection(true);
4783		},
4784		prototype: {
4785			init: function(refresh) {
4786				var self = this;
4787
4788				if (!refresh) {
4789					menuTrees.push(this);
4790
4791					this.rootId = (new Date().getTime() + Math.random() + '').replace(/\D/g, '');
4792					this.accessIdPrefix = 'sm-' + this.rootId + '-';
4793
4794					if (this.$root.hasClass('sm-rtl')) {
4795						this.opts.rightToLeftSubMenus = true;
4796					}
4797
4798					// init root (main menu)
4799					var eNS = '.smartmenus';
4800					this.$root
4801						.data('smartmenus', this)
4802						.attr('data-smartmenus-id', this.rootId)
4803						.dataSM('level', 1)
4804						.on(getEventsNS({
4805							'mouseover focusin': $.proxy(this.rootOver, this),
4806							'mouseout focusout': $.proxy(this.rootOut, this),
4807							'keydown': $.proxy(this.rootKeyDown, this)
4808						}, eNS))
4809						.on(getEventsNS({
4810							'mouseenter': $.proxy(this.itemEnter, this),
4811							'mouseleave': $.proxy(this.itemLeave, this),
4812							'mousedown': $.proxy(this.itemDown, this),
4813							'focus': $.proxy(this.itemFocus, this),
4814							'blur': $.proxy(this.itemBlur, this),
4815							'click': $.proxy(this.itemClick, this)
4816						}, eNS), 'a');
4817
4818					// hide menus on tap or click outside the root UL
4819					eNS += this.rootId;
4820					if (this.opts.hideOnClick) {
4821						$(document).on(getEventsNS({
4822							'touchstart': $.proxy(this.docTouchStart, this),
4823							'touchmove': $.proxy(this.docTouchMove, this),
4824							'touchend': $.proxy(this.docTouchEnd, this),
4825							// for Opera Mobile < 11.5, webOS browser, etc. we'll check click too
4826							'click': $.proxy(this.docClick, this)
4827						}, eNS));
4828					}
4829					// hide sub menus on resize
4830					$(window).on(getEventsNS({ 'resize orientationchange': $.proxy(this.winResize, this) }, eNS));
4831
4832					if (this.opts.subIndicators) {
4833						this.$subArrow = $('<span/>').addClass('sub-arrow');
4834						if (this.opts.subIndicatorsText) {
4835							this.$subArrow.html(this.opts.subIndicatorsText);
4836						}
4837					}
4838
4839					// make sure mouse detection is enabled
4840					initMouseDetection();
4841				}
4842
4843				// init sub menus
4844				this.$firstSub = this.$root.find('ul').each(function() { self.menuInit($(this)); }).eq(0);
4845
4846				this.$firstLink = this.$root.find('a').eq(0);
4847
4848				// find current item
4849				if (this.opts.markCurrentItem) {
4850					var reDefaultDoc = /(index|default)\.[^#\?\/]*/i,
4851						reHash = /#.*/,
4852						locHref = window.location.href.replace(reDefaultDoc, ''),
4853						locHrefNoHash = locHref.replace(reHash, '');
4854					this.$root.find('a').each(function() {
4855						var href = this.href.replace(reDefaultDoc, ''),
4856							$this = $(this);
4857						if (href == locHref || href == locHrefNoHash) {
4858							$this.addClass('current');
4859							if (self.opts.markCurrentTree) {
4860								$this.parentsUntil('[data-smartmenus-id]', 'ul').each(function() {
4861									$(this).dataSM('parent-a').addClass('current');
4862								});
4863							}
4864						}
4865					});
4866				}
4867
4868				// save initial state
4869				this.wasCollapsible = this.isCollapsible();
4870			},
4871			destroy: function(refresh) {
4872				if (!refresh) {
4873					var eNS = '.smartmenus';
4874					this.$root
4875						.removeData('smartmenus')
4876						.removeAttr('data-smartmenus-id')
4877						.removeDataSM('level')
4878						.off(eNS);
4879					eNS += this.rootId;
4880					$(document).off(eNS);
4881					$(window).off(eNS);
4882					if (this.opts.subIndicators) {
4883						this.$subArrow = null;
4884					}
4885				}
4886				this.menuHideAll();
4887				var self = this;
4888				this.$root.find('ul').each(function() {
4889						var $this = $(this);
4890						if ($this.dataSM('scroll-arrows')) {
4891							$this.dataSM('scroll-arrows').remove();
4892						}
4893						if ($this.dataSM('shown-before')) {
4894							if (self.opts.subMenusMinWidth || self.opts.subMenusMaxWidth) {
4895								$this.css({ width: '', minWidth: '', maxWidth: '' }).removeClass('sm-nowrap');
4896							}
4897							if ($this.dataSM('scroll-arrows')) {
4898								$this.dataSM('scroll-arrows').remove();
4899							}
4900							$this.css({ zIndex: '', top: '', left: '', marginLeft: '', marginTop: '', display: '' });
4901						}
4902						if (($this.attr('id') || '').indexOf(self.accessIdPrefix) == 0) {
4903							$this.removeAttr('id');
4904						}
4905					})
4906					.removeDataSM('in-mega')
4907					.removeDataSM('shown-before')
4908					.removeDataSM('scroll-arrows')
4909					.removeDataSM('parent-a')
4910					.removeDataSM('level')
4911					.removeDataSM('beforefirstshowfired')
4912					.removeAttr('role')
4913					.removeAttr('aria-hidden')
4914					.removeAttr('aria-labelledby')
4915					.removeAttr('aria-expanded');
4916				this.$root.find('a.has-submenu').each(function() {
4917						var $this = $(this);
4918						if ($this.attr('id').indexOf(self.accessIdPrefix) == 0) {
4919							$this.removeAttr('id');
4920						}
4921					})
4922					.removeClass('has-submenu')
4923					.removeDataSM('sub')
4924					.removeAttr('aria-haspopup')
4925					.removeAttr('aria-controls')
4926					.removeAttr('aria-expanded')
4927					.closest('li').removeDataSM('sub');
4928				if (this.opts.subIndicators) {
4929					this.$root.find('span.sub-arrow').remove();
4930				}
4931				if (this.opts.markCurrentItem) {
4932					this.$root.find('a.current').removeClass('current');
4933				}
4934				if (!refresh) {
4935					this.$root = null;
4936					this.$firstLink = null;
4937					this.$firstSub = null;
4938					if (this.$disableOverlay) {
4939						this.$disableOverlay.remove();
4940						this.$disableOverlay = null;
4941					}
4942					menuTrees.splice($.inArray(this, menuTrees), 1);
4943				}
4944			},
4945			disable: function(noOverlay) {
4946				if (!this.disabled) {
4947					this.menuHideAll();
4948					// display overlay over the menu to prevent interaction
4949					if (!noOverlay && !this.opts.isPopup && this.$root.is(':visible')) {
4950						var pos = this.$root.offset();
4951						this.$disableOverlay = $('<div class="sm-jquery-disable-overlay"/>').css({
4952							position: 'absolute',
4953							top: pos.top,
4954							left: pos.left,
4955							width: this.$root.outerWidth(),
4956							height: this.$root.outerHeight(),
4957							zIndex: this.getStartZIndex(true),
4958							opacity: 0
4959						}).appendTo(document.body);
4960					}
4961					this.disabled = true;
4962				}
4963			},
4964			docClick: function(e) {
4965				if (this.$touchScrollingSub) {
4966					this.$touchScrollingSub = null;
4967					return;
4968				}
4969				// hide on any click outside the menu or on a menu link
4970				if (this.visibleSubMenus.length && !$.contains(this.$root[0], e.target) || $(e.target).closest('a').length) {
4971					this.menuHideAll();
4972				}
4973			},
4974			docTouchEnd: function(e) {
4975				if (!this.lastTouch) {
4976					return;
4977				}
4978				if (this.visibleSubMenus.length && (this.lastTouch.x2 === undefined || this.lastTouch.x1 == this.lastTouch.x2) && (this.lastTouch.y2 === undefined || this.lastTouch.y1 == this.lastTouch.y2) && (!this.lastTouch.target || !$.contains(this.$root[0], this.lastTouch.target))) {
4979					if (this.hideTimeout) {
4980						clearTimeout(this.hideTimeout);
4981						this.hideTimeout = 0;
4982					}
4983					// hide with a delay to prevent triggering accidental unwanted click on some page element
4984					var self = this;
4985					this.hideTimeout = setTimeout(function() { self.menuHideAll(); }, 350);
4986				}
4987				this.lastTouch = null;
4988			},
4989			docTouchMove: function(e) {
4990				if (!this.lastTouch) {
4991					return;
4992				}
4993				var touchPoint = e.originalEvent.touches[0];
4994				this.lastTouch.x2 = touchPoint.pageX;
4995				this.lastTouch.y2 = touchPoint.pageY;
4996			},
4997			docTouchStart: function(e) {
4998				var touchPoint = e.originalEvent.touches[0];
4999				this.lastTouch = { x1: touchPoint.pageX, y1: touchPoint.pageY, target: touchPoint.target };
5000			},
5001			enable: function() {
5002				if (this.disabled) {
5003					if (this.$disableOverlay) {
5004						this.$disableOverlay.remove();
5005						this.$disableOverlay = null;
5006					}
5007					this.disabled = false;
5008				}
5009			},
5010			getClosestMenu: function(elm) {
5011				var $closestMenu = $(elm).closest('ul');
5012				while ($closestMenu.dataSM('in-mega')) {
5013					$closestMenu = $closestMenu.parent().closest('ul');
5014				}
5015				return $closestMenu[0] || null;
5016			},
5017			getHeight: function($elm) {
5018				return this.getOffset($elm, true);
5019			},
5020			// returns precise width/height float values
5021			getOffset: function($elm, height) {
5022				var old;
5023				if ($elm.css('display') == 'none') {
5024					old = { position: $elm[0].style.position, visibility: $elm[0].style.visibility };
5025					$elm.css({ position: 'absolute', visibility: 'hidden' }).show();
5026				}
5027				var box = $elm[0].getBoundingClientRect && $elm[0].getBoundingClientRect(),
5028					val = box && (height ? box.height || box.bottom - box.top : box.width || box.right - box.left);
5029				if (!val && val !== 0) {
5030					val = height ? $elm[0].offsetHeight : $elm[0].offsetWidth;
5031				}
5032				if (old) {
5033					$elm.hide().css(old);
5034				}
5035				return val;
5036			},
5037			getStartZIndex: function(root) {
5038				var zIndex = parseInt(this[root ? '$root' : '$firstSub'].css('z-index'));
5039				if (!root && isNaN(zIndex)) {
5040					zIndex = parseInt(this.$root.css('z-index'));
5041				}
5042				return !isNaN(zIndex) ? zIndex : 1;
5043			},
5044			getTouchPoint: function(e) {
5045				return e.touches && e.touches[0] || e.changedTouches && e.changedTouches[0] || e;
5046			},
5047			getViewport: function(height) {
5048				var name = height ? 'Height' : 'Width',
5049					val = document.documentElement['client' + name],
5050					val2 = window['inner' + name];
5051				if (val2) {
5052					val = Math.min(val, val2);
5053				}
5054				return val;
5055			},
5056			getViewportHeight: function() {
5057				return this.getViewport(true);
5058			},
5059			getViewportWidth: function() {
5060				return this.getViewport();
5061			},
5062			getWidth: function($elm) {
5063				return this.getOffset($elm);
5064			},
5065			handleEvents: function() {
5066				return !this.disabled && this.isCSSOn();
5067			},
5068			handleItemEvents: function($a) {
5069				return this.handleEvents() && !this.isLinkInMegaMenu($a);
5070			},
5071			isCollapsible: function() {
5072				return this.$firstSub.css('position') == 'static';
5073			},
5074			isCSSOn: function() {
5075				return this.$firstLink.css('display') != 'inline';
5076			},
5077			isFixed: function() {
5078				var isFixed = this.$root.css('position') == 'fixed';
5079				if (!isFixed) {
5080					this.$root.parentsUntil('body').each(function() {
5081						if ($(this).css('position') == 'fixed') {
5082							isFixed = true;
5083							return false;
5084						}
5085					});
5086				}
5087				return isFixed;
5088			},
5089			isLinkInMegaMenu: function($a) {
5090				return $(this.getClosestMenu($a[0])).hasClass('mega-menu');
5091			},
5092			isTouchMode: function() {
5093				return !mouse || this.opts.noMouseOver || this.isCollapsible();
5094			},
5095			itemActivate: function($a, hideDeeperSubs) {
5096				var $ul = $a.closest('ul'),
5097					level = $ul.dataSM('level');
5098				// if for some reason the parent item is not activated (e.g. this is an API call to activate the item), activate all parent items first
5099				if (level > 1 && (!this.activatedItems[level - 2] || this.activatedItems[level - 2][0] != $ul.dataSM('parent-a')[0])) {
5100					var self = this;
5101					$($ul.parentsUntil('[data-smartmenus-id]', 'ul').get().reverse()).add($ul).each(function() {
5102						self.itemActivate($(this).dataSM('parent-a'));
5103					});
5104				}
5105				// hide any visible deeper level sub menus
5106				if (!this.isCollapsible() || hideDeeperSubs) {
5107					this.menuHideSubMenus(!this.activatedItems[level - 1] || this.activatedItems[level - 1][0] != $a[0] ? level - 1 : level);
5108				}
5109				// save new active item for this level
5110				this.activatedItems[level - 1] = $a;
5111				if (this.$root.triggerHandler('activate.smapi', $a[0]) === false) {
5112					return;
5113				}
5114				// show the sub menu if this item has one
5115				var $sub = $a.dataSM('sub');
5116				if ($sub && (this.isTouchMode() || (!this.opts.showOnClick || this.clickActivated))) {
5117					this.menuShow($sub);
5118				}
5119			},
5120			itemBlur: function(e) {
5121				var $a = $(e.currentTarget);
5122				if (!this.handleItemEvents($a)) {
5123					return;
5124				}
5125				this.$root.triggerHandler('blur.smapi', $a[0]);
5126			},
5127			itemClick: function(e) {
5128				var $a = $(e.currentTarget);
5129				if (!this.handleItemEvents($a)) {
5130					return;
5131				}
5132				if (this.$touchScrollingSub && this.$touchScrollingSub[0] == $a.closest('ul')[0]) {
5133					this.$touchScrollingSub = null;
5134					e.stopPropagation();
5135					return false;
5136				}
5137				if (this.$root.triggerHandler('click.smapi', $a[0]) === false) {
5138					return false;
5139				}
5140				var subArrowClicked = $(e.target).is('.sub-arrow'),
5141					$sub = $a.dataSM('sub'),
5142					firstLevelSub = $sub ? $sub.dataSM('level') == 2 : false,
5143					collapsible = this.isCollapsible(),
5144					behaviorToggle = /toggle$/.test(this.opts.collapsibleBehavior),
5145					behaviorLink = /link$/.test(this.opts.collapsibleBehavior),
5146					behaviorAccordion = /^accordion/.test(this.opts.collapsibleBehavior);
5147				// if the sub is hidden, try to show it
5148				if ($sub && !$sub.is(':visible')) {
5149					if (!behaviorLink || !collapsible || subArrowClicked) {
5150						if (this.opts.showOnClick && firstLevelSub) {
5151							this.clickActivated = true;
5152						}
5153						// try to activate the item and show the sub
5154						this.itemActivate($a, behaviorAccordion);
5155						// if "itemActivate" showed the sub, prevent the click so that the link is not loaded
5156						// if it couldn't show it, then the sub menus are disabled with an !important declaration (e.g. via mobile styles) so let the link get loaded
5157						if ($sub.is(':visible')) {
5158							this.focusActivated = true;
5159							return false;
5160						}
5161					}
5162				// if the sub is visible and we are in collapsible mode
5163				} else if (collapsible && (behaviorToggle || subArrowClicked)) {
5164					this.itemActivate($a, behaviorAccordion);
5165					this.menuHide($sub);
5166					if (behaviorToggle) {
5167						this.focusActivated = true;
5168					}
5169					return false;
5170				}
5171				if (this.opts.showOnClick && firstLevelSub || $a.hasClass('disabled') || this.$root.triggerHandler('select.smapi', $a[0]) === false) {
5172					return false;
5173				}
5174			},
5175			itemDown: function(e) {
5176				var $a = $(e.currentTarget);
5177				if (!this.handleItemEvents($a)) {
5178					return;
5179				}
5180				$a.dataSM('mousedown', true);
5181			},
5182			itemEnter: function(e) {
5183				var $a = $(e.currentTarget);
5184				if (!this.handleItemEvents($a)) {
5185					return;
5186				}
5187				if (!this.isTouchMode()) {
5188					if (this.showTimeout) {
5189						clearTimeout(this.showTimeout);
5190						this.showTimeout = 0;
5191					}
5192					var self = this;
5193					this.showTimeout = setTimeout(function() { self.itemActivate($a); }, this.opts.showOnClick && $a.closest('ul').dataSM('level') == 1 ? 1 : this.opts.showTimeout);
5194				}
5195				this.$root.triggerHandler('mouseenter.smapi', $a[0]);
5196			},
5197			itemFocus: function(e) {
5198				var $a = $(e.currentTarget);
5199				if (!this.handleItemEvents($a)) {
5200					return;
5201				}
5202				// fix (the mousedown check): in some browsers a tap/click produces consecutive focus + click events so we don't need to activate the item on focus
5203				if (this.focusActivated && (!this.isTouchMode() || !$a.dataSM('mousedown')) && (!this.activatedItems.length || this.activatedItems[this.activatedItems.length - 1][0] != $a[0])) {
5204					this.itemActivate($a, true);
5205				}
5206				this.$root.triggerHandler('focus.smapi', $a[0]);
5207			},
5208			itemLeave: function(e) {
5209				var $a = $(e.currentTarget);
5210				if (!this.handleItemEvents($a)) {
5211					return;
5212				}
5213				if (!this.isTouchMode()) {
5214					$a[0].blur();
5215					if (this.showTimeout) {
5216						clearTimeout(this.showTimeout);
5217						this.showTimeout = 0;
5218					}
5219				}
5220				$a.removeDataSM('mousedown');
5221				this.$root.triggerHandler('mouseleave.smapi', $a[0]);
5222			},
5223			menuHide: function($sub) {
5224				if (this.$root.triggerHandler('beforehide.smapi', $sub[0]) === false) {
5225					return;
5226				}
5227				if (canAnimate) {
5228					$sub.stop(true, true);
5229				}
5230				if ($sub.css('display') != 'none') {
5231					var complete = function() {
5232						// unset z-index
5233						$sub.css('z-index', '');
5234					};
5235					// if sub is collapsible (mobile view)
5236					if (this.isCollapsible()) {
5237						if (canAnimate && this.opts.collapsibleHideFunction) {
5238							this.opts.collapsibleHideFunction.call(this, $sub, complete);
5239						} else {
5240							$sub.hide(this.opts.collapsibleHideDuration, complete);
5241						}
5242					} else {
5243						if (canAnimate && this.opts.hideFunction) {
5244							this.opts.hideFunction.call(this, $sub, complete);
5245						} else {
5246							$sub.hide(this.opts.hideDuration, complete);
5247						}
5248					}
5249					// deactivate scrolling if it is activated for this sub
5250					if ($sub.dataSM('scroll')) {
5251						this.menuScrollStop($sub);
5252						$sub.css({ 'touch-action': '', '-ms-touch-action': '', '-webkit-transform': '', transform: '' })
5253							.off('.smartmenus_scroll').removeDataSM('scroll').dataSM('scroll-arrows').hide();
5254					}
5255					// unhighlight parent item + accessibility
5256					$sub.dataSM('parent-a').removeClass('highlighted').attr('aria-expanded', 'false');
5257					$sub.attr({
5258						'aria-expanded': 'false',
5259						'aria-hidden': 'true'
5260					});
5261					var level = $sub.dataSM('level');
5262					this.activatedItems.splice(level - 1, 1);
5263					this.visibleSubMenus.splice($.inArray($sub, this.visibleSubMenus), 1);
5264					this.$root.triggerHandler('hide.smapi', $sub[0]);
5265				}
5266			},
5267			menuHideAll: function() {
5268				if (this.showTimeout) {
5269					clearTimeout(this.showTimeout);
5270					this.showTimeout = 0;
5271				}
5272				// hide all subs
5273				// if it's a popup, this.visibleSubMenus[0] is the root UL
5274				var level = this.opts.isPopup ? 1 : 0;
5275				for (var i = this.visibleSubMenus.length - 1; i >= level; i--) {
5276					this.menuHide(this.visibleSubMenus[i]);
5277				}
5278				// hide root if it's popup
5279				if (this.opts.isPopup) {
5280					if (canAnimate) {
5281						this.$root.stop(true, true);
5282					}
5283					if (this.$root.is(':visible')) {
5284						if (canAnimate && this.opts.hideFunction) {
5285							this.opts.hideFunction.call(this, this.$root);
5286						} else {
5287							this.$root.hide(this.opts.hideDuration);
5288						}
5289					}
5290				}
5291				this.activatedItems = [];
5292				this.visibleSubMenus = [];
5293				this.clickActivated = true;
5294				this.focusActivated = true;
5295				// reset z-index increment
5296				this.zIndexInc = 0;
5297				this.$root.triggerHandler('hideAll.smapi');
5298			},
5299			menuHideSubMenus: function(level) {
5300				for (var i = this.activatedItems.length - 1; i >= level; i--) {
5301					var $sub = this.activatedItems[i].dataSM('sub');
5302					if ($sub) {
5303						this.menuHide($sub);
5304					}
5305				}
5306			},
5307			menuInit: function($ul) {
5308				if (!$ul.dataSM('in-mega')) {
5309					// mark UL's in mega drop downs (if any) so we can neglect them
5310					if ($ul.hasClass('mega-menu')) {
5311						$ul.find('ul').dataSM('in-mega', true);
5312					}
5313					// get level (much faster than, for example, using parentsUntil)
5314					var level = 2,
5315						par = $ul[0];
5316					while ((par = par.parentNode.parentNode) != this.$root[0]) {
5317						level++;
5318					}
5319					// cache stuff for quick access
5320					var $a = $ul.prevAll('a').eq(-1);
5321					// if the link is nested (e.g. in a heading)
5322					if (!$a.length) {
5323						$a = $ul.prevAll().find('a').eq(-1);
5324					}
5325					$a.addClass('has-submenu').dataSM('sub', $ul);
5326					$ul.dataSM('parent-a', $a)
5327						.dataSM('level', level)
5328						.parent().dataSM('sub', $ul);
5329					// accessibility
5330					var aId = $a.attr('id') || this.accessIdPrefix + (++this.idInc),
5331						ulId = $ul.attr('id') || this.accessIdPrefix + (++this.idInc);
5332					$a.attr({
5333						id: aId,
5334						'aria-haspopup': 'true',
5335						'aria-controls': ulId,
5336						'aria-expanded': 'false'
5337					});
5338					$ul.attr({
5339						id: ulId,
5340						'role': 'group',
5341						'aria-hidden': 'true',
5342						'aria-labelledby': aId,
5343						'aria-expanded': 'false'
5344					});
5345					// add sub indicator to parent item
5346					if (this.opts.subIndicators) {
5347						$a[this.opts.subIndicatorsPos](this.$subArrow.clone());
5348					}
5349				}
5350			},
5351			menuPosition: function($sub) {
5352				var $a = $sub.dataSM('parent-a'),
5353					$li = $a.closest('li'),
5354					$ul = $li.parent(),
5355					level = $sub.dataSM('level'),
5356					subW = this.getWidth($sub),
5357					subH = this.getHeight($sub),
5358					itemOffset = $a.offset(),
5359					itemX = itemOffset.left,
5360					itemY = itemOffset.top,
5361					itemW = this.getWidth($a),
5362					itemH = this.getHeight($a),
5363					$win = $(window),
5364					winX = $win.scrollLeft(),
5365					winY = $win.scrollTop(),
5366					winW = this.getViewportWidth(),
5367					winH = this.getViewportHeight(),
5368					horizontalParent = $ul.parent().is('[data-sm-horizontal-sub]') || level == 2 && !$ul.hasClass('sm-vertical'),
5369					rightToLeft = this.opts.rightToLeftSubMenus && !$li.is('[data-sm-reverse]') || !this.opts.rightToLeftSubMenus && $li.is('[data-sm-reverse]'),
5370					subOffsetX = level == 2 ? this.opts.mainMenuSubOffsetX : this.opts.subMenusSubOffsetX,
5371					subOffsetY = level == 2 ? this.opts.mainMenuSubOffsetY : this.opts.subMenusSubOffsetY,
5372					x, y;
5373				if (horizontalParent) {
5374					x = rightToLeft ? itemW - subW - subOffsetX : subOffsetX;
5375					y = this.opts.bottomToTopSubMenus ? -subH - subOffsetY : itemH + subOffsetY;
5376				} else {
5377					x = rightToLeft ? subOffsetX - subW : itemW - subOffsetX;
5378					y = this.opts.bottomToTopSubMenus ? itemH - subOffsetY - subH : subOffsetY;
5379				}
5380				if (this.opts.keepInViewport) {
5381					var absX = itemX + x,
5382						absY = itemY + y;
5383					if (rightToLeft && absX < winX) {
5384						x = horizontalParent ? winX - absX + x : itemW - subOffsetX;
5385					} else if (!rightToLeft && absX + subW > winX + winW) {
5386						x = horizontalParent ? winX + winW - subW - absX + x : subOffsetX - subW;
5387					}
5388					if (!horizontalParent) {
5389						if (subH < winH && absY + subH > winY + winH) {
5390							y += winY + winH - subH - absY;
5391						} else if (subH >= winH || absY < winY) {
5392							y += winY - absY;
5393						}
5394					}
5395					// do we need scrolling?
5396					// 0.49 used for better precision when dealing with float values
5397					if (horizontalParent && (absY + subH > winY + winH + 0.49 || absY < winY) || !horizontalParent && subH > winH + 0.49) {
5398						var self = this;
5399						if (!$sub.dataSM('scroll-arrows')) {
5400							$sub.dataSM('scroll-arrows', $([$('<span class="scroll-up"><span class="scroll-up-arrow"></span></span>')[0], $('<span class="scroll-down"><span class="scroll-down-arrow"></span></span>')[0]])
5401								.on({
5402									mouseenter: function() {
5403										$sub.dataSM('scroll').up = $(this).hasClass('scroll-up');
5404										self.menuScroll($sub);
5405									},
5406									mouseleave: function(e) {
5407										self.menuScrollStop($sub);
5408										self.menuScrollOut($sub, e);
5409									},
5410									'mousewheel DOMMouseScroll': function(e) { e.preventDefault(); }
5411								})
5412								.insertAfter($sub)
5413							);
5414						}
5415						// bind scroll events and save scroll data for this sub
5416						var eNS = '.smartmenus_scroll';
5417						$sub.dataSM('scroll', {
5418								y: this.cssTransforms3d ? 0 : y - itemH,
5419								step: 1,
5420								// cache stuff for faster recalcs later
5421								itemH: itemH,
5422								subH: subH,
5423								arrowDownH: this.getHeight($sub.dataSM('scroll-arrows').eq(1))
5424							})
5425							.on(getEventsNS({
5426								'mouseover': function(e) { self.menuScrollOver($sub, e); },
5427								'mouseout': function(e) { self.menuScrollOut($sub, e); },
5428								'mousewheel DOMMouseScroll': function(e) { self.menuScrollMousewheel($sub, e); }
5429							}, eNS))
5430							.dataSM('scroll-arrows').css({ top: 'auto', left: '0', marginLeft: x + (parseInt($sub.css('border-left-width')) || 0), width: subW - (parseInt($sub.css('border-left-width')) || 0) - (parseInt($sub.css('border-right-width')) || 0), zIndex: $sub.css('z-index') })
5431								.eq(horizontalParent && this.opts.bottomToTopSubMenus ? 0 : 1).show();
5432						// when a menu tree is fixed positioned we allow scrolling via touch too
5433						// since there is no other way to access such long sub menus if no mouse is present
5434						if (this.isFixed()) {
5435							var events = {};
5436							events[touchEvents ? 'touchstart touchmove touchend' : 'pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp'] = function(e) {
5437								self.menuScrollTouch($sub, e);
5438							};
5439							$sub.css({ 'touch-action': 'none', '-ms-touch-action': 'none' }).on(getEventsNS(events, eNS));
5440						}
5441					}
5442				}
5443				$sub.css({ top: 'auto', left: '0', marginLeft: x, marginTop: y - itemH });
5444			},
5445			menuScroll: function($sub, once, step) {
5446				var data = $sub.dataSM('scroll'),
5447					$arrows = $sub.dataSM('scroll-arrows'),
5448					end = data.up ? data.upEnd : data.downEnd,
5449					diff;
5450				if (!once && data.momentum) {
5451					data.momentum *= 0.92;
5452					diff = data.momentum;
5453					if (diff < 0.5) {
5454						this.menuScrollStop($sub);
5455						return;
5456					}
5457				} else {
5458					diff = step || (once || !this.opts.scrollAccelerate ? this.opts.scrollStep : Math.floor(data.step));
5459				}
5460				// hide any visible deeper level sub menus
5461				var level = $sub.dataSM('level');
5462				if (this.activatedItems[level - 1] && this.activatedItems[level - 1].dataSM('sub') && this.activatedItems[level - 1].dataSM('sub').is(':visible')) {
5463					this.menuHideSubMenus(level - 1);
5464				}
5465				data.y = data.up && end <= data.y || !data.up && end >= data.y ? data.y : (Math.abs(end - data.y) > diff ? data.y + (data.up ? diff : -diff) : end);
5466				$sub.css(this.cssTransforms3d ? { '-webkit-transform': 'translate3d(0, ' + data.y + 'px, 0)', transform: 'translate3d(0, ' + data.y + 'px, 0)' } : { marginTop: data.y });
5467				// show opposite arrow if appropriate
5468				if (mouse && (data.up && data.y > data.downEnd || !data.up && data.y < data.upEnd)) {
5469					$arrows.eq(data.up ? 1 : 0).show();
5470				}
5471				// if we've reached the end
5472				if (data.y == end) {
5473					if (mouse) {
5474						$arrows.eq(data.up ? 0 : 1).hide();
5475					}
5476					this.menuScrollStop($sub);
5477				} else if (!once) {
5478					if (this.opts.scrollAccelerate && data.step < this.opts.scrollStep) {
5479						data.step += 0.2;
5480					}
5481					var self = this;
5482					this.scrollTimeout = requestAnimationFrame(function() { self.menuScroll($sub); });
5483				}
5484			},
5485			menuScrollMousewheel: function($sub, e) {
5486				if (this.getClosestMenu(e.target) == $sub[0]) {
5487					e = e.originalEvent;
5488					var up = (e.wheelDelta || -e.detail) > 0;
5489					if ($sub.dataSM('scroll-arrows').eq(up ? 0 : 1).is(':visible')) {
5490						$sub.dataSM('scroll').up = up;
5491						this.menuScroll($sub, true);
5492					}
5493				}
5494				e.preventDefault();
5495			},
5496			menuScrollOut: function($sub, e) {
5497				if (mouse) {
5498					if (!/^scroll-(up|down)/.test((e.relatedTarget || '').className) && ($sub[0] != e.relatedTarget && !$.contains($sub[0], e.relatedTarget) || this.getClosestMenu(e.relatedTarget) != $sub[0])) {
5499						$sub.dataSM('scroll-arrows').css('visibility', 'hidden');
5500					}
5501				}
5502			},
5503			menuScrollOver: function($sub, e) {
5504				if (mouse) {
5505					if (!/^scroll-(up|down)/.test(e.target.className) && this.getClosestMenu(e.target) == $sub[0]) {
5506						this.menuScrollRefreshData($sub);
5507						var data = $sub.dataSM('scroll'),
5508							upEnd = $(window).scrollTop() - $sub.dataSM('parent-a').offset().top - data.itemH;
5509						$sub.dataSM('scroll-arrows').eq(0).css('margin-top', upEnd).end()
5510							.eq(1).css('margin-top', upEnd + this.getViewportHeight() - data.arrowDownH).end()
5511							.css('visibility', 'visible');
5512					}
5513				}
5514			},
5515			menuScrollRefreshData: function($sub) {
5516				var data = $sub.dataSM('scroll'),
5517					upEnd = $(window).scrollTop() - $sub.dataSM('parent-a').offset().top - data.itemH;
5518				if (this.cssTransforms3d) {
5519					upEnd = -(parseFloat($sub.css('margin-top')) - upEnd);
5520				}
5521				$.extend(data, {
5522					upEnd: upEnd,
5523					downEnd: upEnd + this.getViewportHeight() - data.subH
5524				});
5525			},
5526			menuScrollStop: function($sub) {
5527				if (this.scrollTimeout) {
5528					cancelAnimationFrame(this.scrollTimeout);
5529					this.scrollTimeout = 0;
5530					$sub.dataSM('scroll').step = 1;
5531					return true;
5532				}
5533			},
5534			menuScrollTouch: function($sub, e) {
5535				e = e.originalEvent;
5536				if (isTouchEvent(e)) {
5537					var touchPoint = this.getTouchPoint(e);
5538					// neglect event if we touched a visible deeper level sub menu
5539					if (this.getClosestMenu(touchPoint.target) == $sub[0]) {
5540						var data = $sub.dataSM('scroll');
5541						if (/(start|down)$/i.test(e.type)) {
5542							if (this.menuScrollStop($sub)) {
5543								// if we were scrolling, just stop and don't activate any link on the first touch
5544								e.preventDefault();
5545								this.$touchScrollingSub = $sub;
5546							} else {
5547								this.$touchScrollingSub = null;
5548							}
5549							// update scroll data since the user might have zoomed, etc.
5550							this.menuScrollRefreshData($sub);
5551							// extend it with the touch properties
5552							$.extend(data, {
5553								touchStartY: touchPoint.pageY,
5554								touchStartTime: e.timeStamp
5555							});
5556						} else if (/move$/i.test(e.type)) {
5557							var prevY = data.touchY !== undefined ? data.touchY : data.touchStartY;
5558							if (prevY !== undefined && prevY != touchPoint.pageY) {
5559								this.$touchScrollingSub = $sub;
5560								var up = prevY < touchPoint.pageY;
5561								// changed direction? reset...
5562								if (data.up !== undefined && data.up != up) {
5563									$.extend(data, {
5564										touchStartY: touchPoint.pageY,
5565										touchStartTime: e.timeStamp
5566									});
5567								}
5568								$.extend(data, {
5569									up: up,
5570									touchY: touchPoint.pageY
5571								});
5572								this.menuScroll($sub, true, Math.abs(touchPoint.pageY - prevY));
5573							}
5574							e.preventDefault();
5575						} else { // touchend/pointerup
5576							if (data.touchY !== undefined) {
5577								if (data.momentum = Math.pow(Math.abs(touchPoint.pageY - data.touchStartY) / (e.timeStamp - data.touchStartTime), 2) * 15) {
5578									this.menuScrollStop($sub);
5579									this.menuScroll($sub);
5580									e.preventDefault();
5581								}
5582								delete data.touchY;
5583							}
5584						}
5585					}
5586				}
5587			},
5588			menuShow: function($sub) {
5589				if (!$sub.dataSM('beforefirstshowfired')) {
5590					$sub.dataSM('beforefirstshowfired', true);
5591					if (this.$root.triggerHandler('beforefirstshow.smapi', $sub[0]) === false) {
5592						return;
5593					}
5594				}
5595				if (this.$root.triggerHandler('beforeshow.smapi', $sub[0]) === false) {
5596					return;
5597				}
5598				$sub.dataSM('shown-before', true);
5599				if (canAnimate) {
5600					$sub.stop(true, true);
5601				}
5602				if (!$sub.is(':visible')) {
5603					// highlight parent item
5604					var $a = $sub.dataSM('parent-a'),
5605						collapsible = this.isCollapsible();
5606					if (this.opts.keepHighlighted || collapsible) {
5607						$a.addClass('highlighted');
5608					}
5609					if (collapsible) {
5610						$sub.removeClass('sm-nowrap').css({ zIndex: '', width: 'auto', minWidth: '', maxWidth: '', top: '', left: '', marginLeft: '', marginTop: '' });
5611					} else {
5612						// set z-index
5613						$sub.css('z-index', this.zIndexInc = (this.zIndexInc || this.get
5613StartZIndex()) + 1);
5614						// min/max-width fix - no way to rely purely on CSS as all UL's are nested
5615						if (this.opts.subMenusMinWidth || this.opts.subMenusMaxWidth) {
5616							$sub.css({ width: 'auto', minWidth: '', maxWidth: '' }).addClass('sm-nowrap');
5617							if (this.opts.subMenusMinWidth) {
5618							 	$sub.css('min-width', this.opts.subMenusMinWidth);
5619							}
5620							if (this.opts.subMenusMaxWidth) {
5621							 	var noMaxWidth = this.getWidth($sub);
5622							 	$sub.css('max-width', this.opts.subMenusMaxWidth);
5623								if (noMaxWidth > this.getWidth($sub)) {
5624									$sub.removeClass('sm-nowrap').css('width', this.opts.subMenusMaxWidth);
5625								}
5626							}
5627						}
5628						this.menuPosition($sub);
5629					}
5630					var complete = function() {
5631						// fix: "overflow: hidden;" is not reset on animation complete in jQuery < 1.9.0 in Chrome when global "box-sizing: border-box;" is used
5632						$sub.css('overflow', '');
5633					};
5634					// if sub is collapsible (mobile view)
5635					if (collapsible) {
5636						if (canAnimate && this.opts.collapsibleShowFunction) {
5637							this.opts.collapsibleShowFunction.call(this, $sub, complete);
5638						} else {
5639							$sub.show(this.opts.collapsibleShowDuration, complete);
5640						}
5641					} else {
5642						if (canAnimate && this.opts.showFunction) {
5643							this.opts.showFunction.call(this, $sub, complete);
5644						} else {
5645							$sub.show(this.opts.showDuration, complete);
5646						}
5647					}
5648					// accessibility
5649					$a.attr('aria-expanded', 'true');
5650					$sub.attr({
5651						'aria-expanded': 'true',
5652						'aria-hidden': 'false'
5653					});
5654					// store sub menu in visible array
5655					this.visibleSubMenus.push($sub);
5656					this.$root.triggerHandler('show.smapi', $sub[0]);
5657				}
5658			},
5659			popupHide: function(noHideTimeout) {
5660				if (this.hideTimeout) {
5661					clearTimeout(this.hideTimeout);
5662					this.hideTimeout = 0;
5663				}
5664				var self = this;
5665				this.hideTimeout = setTimeout(function() {
5666					self.menuHideAll();
5667				}, noHideTimeout ? 1 : this.opts.hideTimeout);
5668			},
5669			popupShow: function(left, top) {
5670				if (!this.opts.isPopup) {
5671					alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.');
5672					return;
5673				}
5674				if (this.hideTimeout) {
5675					clearTimeout(this.hideTimeout);
5676					this.hideTimeout = 0;
5677				}
5678				this.$root.dataSM('shown-before', true);
5679				if (canAnimate) {
5680					this.$root.stop(true, true);
5681				}
5682				if (!this.$root.is(':visible')) {
5683					this.$root.css({ left: left, top: top });
5684					// show menu
5685					var self = this,
5686						complete = function() {
5687							self.$root.css('overflow', '');
5688						};
5689					if (canAnimate && this.opts.showFunction) {
5690						this.opts.showFunction.call(this, this.$root, complete);
5691					} else {
5692						this.$root.show(this.opts.showDuration, complete);
5693					}
5694					this.visibleSubMenus[0] = this.$root;
5695				}
5696			},
5697			refresh: function() {
5698				this.destroy(true);
5699				this.init(true);
5700			},
5701			rootKeyDown: function(e) {
5702				if (!this.handleEvents()) {
5703					return;
5704				}
5705				switch (e.keyCode) {
5706					case 27: // reset on Esc
5707						var $activeTopItem = this.activatedItems[0];
5708						if ($activeTopItem) {
5709							this.menuHideAll();
5710							$activeTopItem[0].focus();
5711							var $sub = $activeTopItem.dataSM('sub');
5712							if ($sub) {
5713								this.menuHide($sub);
5714							}
5715						}
5716						break;
5717					case 32: // activate item's sub on Space
5718						var $target = $(e.target);
5719						if ($target.is('a') && this.handleItemEvents($target)) {
5720							var $sub = $target.dataSM('sub');
5721							if ($sub && !$sub.is(':visible')) {
5722								this.itemClick({ currentTarget: e.target });
5723								e.preventDefault();
5724							}
5725						}
5726						break;
5727				}
5728			},
5729			rootOut: function(e) {
5730				if (!this.handleEvents() || this.isTouchMode() || e.target == this.$root[0]) {
5731					return;
5732				}
5733				if (this.hideTimeout) {
5734					clearTimeout(this.hideTimeout);
5735					this.hideTimeout = 0;
5736				}
5737				if (!this.opts.showOnClick || !this.opts.hideOnClick) {
5738					var self = this;
5739					this.hideTimeout = setTimeout(function() { self.menuHideAll(); }, this.opts.hideTimeout);
5740				}
5741			},
5742			rootOver: function(e) {
5743				if (!this.handleEvents() || this.isTouchMode() || e.target == this.$root[0]) {
5744					return;
5745				}
5746				if (this.hideTimeout) {
5747					clearTimeout(this.hideTimeout);
5748					this.hideTimeout = 0;
5749				}
5750			},
5751			winResize: function(e) {
5752				if (!this.handleEvents()) {
5753					// we still need to resize the disable overlay if it's visible
5754					if (this.$disableOverlay) {
5755						var pos = this.$root.offset();
5756	 					this.$disableOverlay.css({
5757							top: pos.top,
5758							left: pos.left,
5759							width: this.$root.outerWidth(),
5760							height: this.$root.outerHeight()
5761						});
5762					}
5763					return;
5764				}
5765				// hide sub menus on resize - on mobile do it only on orientation change
5766				if (!('onorientationchange' in window) || e.type == 'orientationchange') {
5767					var collapsible = this.isCollapsible();
5768					// if it was collapsible before resize and still is, don't do it
5769					if (!(this.wasCollapsible && collapsible)) { 
5770						if (this.activatedItems.length) {
5771							this.activatedItems[this.activatedItems.length - 1][0].blur();
5772						}
5773						this.menuHideAll();
5774					}
5775					this.wasCollapsible = collapsible;
5776				}
5777			}
5778		}
5779	});
5780
5781	$.fn.dataSM = function(key, val) {
5782		if (val) {
5783			return this.data(key + '_smartmenus', val);
5784		}
5785		return this.data(key + '_smartmenus');
5786	};
5787
5788	$.fn.removeDataSM = function(key) {
5789		return this.removeData(key + '_smartmenus');
5790	};
5791
5792	$.fn.smartmenus = function(options) {
5793		if (typeof options == 'string') {
5794			var args = arguments,
5795				method = options;
5796			Array.prototype.shift.call(args);
5797			return this.each(function() {
5798				var smartmenus = $(this).data('smartmenus');
5799				if (smartmenus && smartmenus[method]) {
5800					smartmenus[method].apply(smartmenus, args);
5801				}
5802			});
5803		}
5804		return this.each(function() {
5805			// [data-sm-options] attribute on the root UL
5806			var dataOpts = $(this).data('sm-options') || null;
5807			if (dataOpts) {
5808				try {
5809					dataOpts = eval('(' + dataOpts + ')');
5810				} catch(e) {
5811					dataOpts = null;
5812					alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.');
5813				};
5814			}
5815			new $.SmartMenus(this, $.extend({}, $.fn.smartmenus.defaults, options, dataOpts));
5816		});
5817	};
5818
5819	// default settings
5820	$.fn.smartmenus.defaults = {
5821		isPopup:		false,		// is this a popup menu (can be shown via the popupShow/popupHide methods) or a permanent menu bar
5822		mainMenuSubOffsetX:	0,		// pixels offset from default position
5823		mainMenuSubOffsetY:	0,		// pixels offset from default position
5824		subMenusSubOffsetX:	0,		// pixels offset from default position
5825		subMenusSubOffsetY:	0,		// pixels offset from default position
5826		subMenusMinWidth:	'10em',		// min-width for the sub menus (any CSS unit) - if set, the fixed width set in CSS will be ignored
5827		subMenusMaxWidth:	'20em',		// max-width for the sub menus (any CSS unit) - if set, the fixed width set in CSS will be ignored
5828		subIndicators: 		true,		// create sub menu indicators - creates a SPAN and inserts it in the A
5829		subIndicatorsPos: 	'append',	// position of the SPAN relative to the menu item content ('append', 'prepend')
5830		subIndicatorsText:	'',		// [optionally] add text in the SPAN (e.g. '+') (you may want to check the CSS for the sub indicators too)
5831		scrollStep: 		30,		// pixels step when scrolling long sub menus that do not fit in the viewport height
5832		scrollAccelerate:	true,		// accelerate scrolling or use a fixed step
5833		showTimeout:		250,		// timeout before showing the sub menus
5834		hideTimeout:		500,		// timeout before hiding the sub menus
5835		showDuration:		0,		// duration for show animation - set to 0 for no animation - matters only if showFunction:null
5836		showFunction:		null,		// custom function to use when showing a sub menu (the default is the jQuery 'show')
5837							// don't forget to call complete() at the end of whatever you do
5838							// e.g.: function($ul, complete) { $ul.fadeIn(250, complete); }
5839		hideDuration:		0,		// duration for hide animation - set to 0 for no animation - matters only if hideFunction:null
5840		hideFunction:		function($ul, complete) { $ul.fadeOut(200, complete); },	// custom function to use when hiding a sub menu (the default is the jQuery 'hide')
5841							// don't forget to call complete() at the end of whatever you do
5842							// e.g.: function($ul, complete) { $ul.fadeOut(250, complete); }
5843		collapsibleShowDuration:0,		// duration for show animation for collapsible sub menus - matters only if collapsibleShowFunction:null
5844		collapsibleShowFunction:function($ul, complete) { $ul.slideDown(200, complete); },	// custom function to use when showing a collapsible sub menu
5845							// (i.e. when mobile styles are used to make the sub menus collapsible)
5846		collapsibleHideDuration:0,		// duration for hide animation for collapsible sub menus - matters only if c
5846ollapsibleHideFunction:null
5847		collapsibleHideFunction:function($ul, complete) { $ul.slideUp(200, complete); },	// custom function to use when hiding a collapsible sub menu
5848							// (i.e. when mobile styles are used to make the sub menus collapsible)
5849		showOnClick:		false,		// show the first-level sub menus onclick instead of onmouseover (i.e. mimic desktop app menus) (matters only for mouse input)
5850		hideOnClick:		true,		// hide the sub menus on click/tap anywhere on the page
5851		noMouseOver:		false,		// disable sub menus activation onmouseover (i.e. behave like in touch mode - use just mouse clicks) (matters only for mouse input)
5852		keepInViewport:		true,		// reposition the sub menus if needed to make sure they always appear inside the viewport
5853		keepHighlighted:	true,		// keep all ancestor items of the current sub menu highlighted (adds the 'highlighted' class to the A's)
5854		markCurrentItem:	false,		// automatically add the 'current' class to the A element of the item linking to the current URL
5855		markCurrentTree:	true,		// add the 'current' class also to the A elements of all ancestor items of the current item
5856		rightToLeftSubMenus:	false,		// right to left display of the sub menus (check the CSS for the sub indicators' position)
5857		bottomToTopSubMenus:	false,		// bottom to top display of the sub menus
5858		collapsibleBehavior:	'default'	// parent items behavior in collapsible (mobile) view ('default', 'toggle', 'link', 'accordion', 'accordion-toggle', 'accordion-link')
5859							// 'default' - first tap on parent item expands sub, second tap loads its link
5860							// 'toggle' - the whole parent item acts just as a toggle button for its sub menu (expands/collapses on each tap)
5861							// 'link' - the parent item acts as a regular item (first tap loads its link), the sub menu can be expanded only via the +/- button
5862							// 'accordion' - like 'default' but on expand also resets any visible sub menus from deeper levels or other branches
5863							// 'accordion-toggle' - like 'toggle' but on expand also resets any visible sub menus from deeper levels or other branches
5864							// 'accordion-link' - like 'link' but on expand also resets any visible sub menus from deeper levels or other branches
5865	};
5866
5867	return $;
5868}));
5869// source --> https://quinto-canal.com/wp-content/themes/newsup/js/jquery.smartmenus.bootstrap.js?ver=7.1.1 
5870/*!
5871 * SmartMenus jQuery Plugin Bootstrap 4 Addon - v0.1.0 - September 17, 2017
5872 * http://www.smartmenus.org/
5873 *
5874 * Copyright Vasil Dinkov, Vadikom Web Ltd.
5875 * http://vadikom.com
5876 *
5877 * Licensed MIT
5878 */
5879
5880(function(factory) {
5881	if (typeof define === 'function' && define.amd) {
5882		// AMD
5883		define(['jquery', 'smartmenus'], factory);
5884	} else if (typeof module === 'object' && typeof module.exports === 'object') {
5885		// CommonJS
5886		module.exports = factory(require('jquery'));
5887	} else {
5888		// Global jQuery
5889		factory(jQuery);
5890	}
5891} (function($) {
5892
5893	$.extend($.SmartMenus.Bootstrap = {}, {
5894		keydownFix: false,
5895		init: function() {
5896			// init all navbars that don't have the "data-sm-skip" attribute set
5897			var $navbars = $('ul.navbar-nav:not([data-sm-skip])');
5898			$navbars.each(function() {
5899				var $this = $(this),
5900					obj = $this.data('smartmenus');
5901				// if this navbar is not initialized
5902				if (!obj) {
5903					var skipBehavior = $this.is('[data-sm-skip-collapsible-behavior]'),
5904						rightAligned = $this.hasClass('ml-auto') || $this.prevAll('.mr-auto').length > 0;
5905
5906					$this.smartmenus({
5907							// these are some good default options that should work for all
5908							subMenusSubOffsetX: 2,
5909							subMenusSubOffsetY: -9,
5910							subIndicators: !skipBehavior,
5911							collapsibleShowFunction: null,
5912							collapsibleHideFunction: null,
5913							rightToLeftSubMenus: rightAligned,
5914							bottomToTopSubMenus: $this.closest('.fixed-bottom').length > 0,
5915							// custom option(s) for the Bootstrap 4 addon
5916							bootstrapHighlightClasses: 'text-dark bg-light'
5917						})
5918						.on({
5919							// set/unset proper Bootstrap classes for some menu elements
5920							'show.smapi': function(e, menu) {
5921								var $menu = $(menu),
5922									$scrollArrows = $menu.dataSM('scroll-arrows');
5923								if ($scrollArrows) {
5924									$scrollArrows.css('background-color', $menu.css('background-color'));
5925								}
5926								$menu.parent().addClass('show');
5927								if (obj.opts.keepHighlighted && $menu.dataSM('level') > 2) {
5928									$menu.prevAll('a').addClass(obj.opts.bootstrapHighlightClasses);
5929								}
5930							},
5931							'hide.smapi': function(e, menu) {
5932								var $menu = $(menu);
5933								$menu.parent().removeClass('show');
5934								if (obj.opts.keepHighlighted && $menu.dataSM('level') > 2) {
5935									$menu.prevAll('a').removeClass(obj.opts.bootstrapHighlightClasses);
5936								}
5937							}
5938						});
5939
5940					obj = $this.data('smartmenus');
5941
5942					function onInit() {
5943						// set Bootstrap's "active" class to SmartMenus "current" items (should someone decide to enable markCurrentItem: true)
5944						$this.find('a.current').each(function() {
5945							var $this = $(this);
5946							// dropdown items require the class to be set to the A's while for nav items it should be set to the parent LI's
5947							($this.hasClass('dropdown-item') ? $this : $this.parent()).addClass('active');
5948						});
5949						// parent items fixes
5950						$this.find('a.has-submenu').each(function() {
5951							var $this = $(this);
5952							// remove Bootstrap required attributes that might cause conflicting issues with the SmartMenus script
5953							if ($this.is('[data-toggle="dropdown"]')) {
5954								$this.dataSM('bs-data-toggle-dropdown', true).removeAttr('data-toggle');
5955							}
5956							// remove Bootstrap's carets generating class
5957							if (!skipBehavior && $this.hasClass('dropdown-toggle')) {
5958								$this.dataSM('bs-dropdown-toggle', true).removeClass('dropdown-toggle');
5959							}
5960						});
5961					}
5962
5963					onInit();
5964
5965					function onBeforeDestroy() {
5966						$this.find('a.current').each(function() {
5967							var $this = $(this);
5968							($this.hasClass('active') ? $this : $this.parent()).removeClass('active');
5969						});
5970						$this.find('a.has-submenu').each(function() {
5971							var $this = $(this);
5972							if ($this.dataSM('bs-dropdown-toggle')) {
5973								$this.addClass('dropdown-toggle').removeDataSM('bs-dropdown-toggle');
5974							}
5975							if ($this.dataSM('bs-data-toggle-dropdown')) {
5976								$this.attr('data-toggle', 'dropdown').removeDataSM('bs-data-toggle-dropdown');
5977							}
5978						});
5979					}
5980
5981					// custom "refresh" method for Bootstrap
5982					obj.refresh = function() {
5983						$.SmartMenus.prototype.refresh.call(this);
5984						onInit();
5985						// update collapsible detection
5986						detectCollapsible(true);
5987					};
5988
5989					// custom "destroy" method for Bootstrap
5990					obj.destroy = function(refresh) {
5991						onBeforeDestroy();
5992						$.SmartMenus.prototype.destroy.call(this, refresh);
5993					};
5994
5995					// keep Bootstrap's default behavior (i.e. use the whole item area just as a sub menu toggle)
5996					if (skipBehavior) {
5997						obj.opts.collapsibleBehavior = 'toggle';
5998					}
5999
6000					// onresize detect when the navbar becomes collapsible and add it the "sm-collapsible" class
6001					var winW;
6002					function detectCollapsible(force) {
6003						var newW = obj.getViewportWidth();
6004						if (newW != winW || force) {
6005							if (obj.isCollapsible()) {
6006								$this.addClass('sm-collapsible');
6007							} else {
6008								$this.removeClass('sm-collapsible');
6009							}
6010							winW = newW;
6011						}
6012					}
6013					detectCollapsible();
6014					$(window).on('resize.smartmenus' + obj.rootId, detectCollapsible);
6015				}
6016			});
6017			// keydown fix for Bootstrap 4 conflict
6018			if ($navbars.length && !$.SmartMenus.Bootstrap.keydownFix) {
6019				// unhook BS keydown handler for all dropdowns
6020				$(document).off('keydown.bs.dropdown.data-api', '.dropdown-menu');
6021				// restore BS keydown handler for dropdowns that are not inside SmartMenus navbars
6022				// SmartMenus won't add the "show" class so it's handy here
6023				if ($.fn.dropdown && $.fn.dropdown.Constructor) {
6024					$(document).on('keydown.bs.dropdown.data-api', '.dropdown-menu.show', $.fn.dropdown.Constructor._dataApiKeydownHandler);
6025				}
6026				$.SmartMenus.Bootstrap.keydownFix = true;
6027			}
6028		}
6029	});
6030
6031	// init ondomready
6032	$($.SmartMenus.Bootstrap.init);
6033
6034	return $;
6035}));
6036// source --> https://quinto-canal.com/wp-content/themes/newsup/js/jquery.marquee.js?ver=7.1.1 
6037/**
6038 * jQuery.marquee - scrolling text like old marquee element
6039 * @author Aamir Afridi - aamirafridi(at)gmail(dot)com / http://aamirafridi.com/jquery/jquery-marquee-plugin
6040 */;
6041(function($) {
6042    $.fn.marquee = function(options) {
6043        return this.each(function() {
6044            // Extend the options if any provided
6045            var o = $.extend({}, $.fn.marquee.defaults, options),
6046                $this = $(this),
6047                $marqueeWrapper, containerWidth, animationCss, verticalDir, elWidth,
6048                loopCount = 3,
6049                playState = 'animation-play-state',
6050                css3AnimationIsSupported = false,
6051
6052                // Private methods
6053                _prefixedEvent = function(element, type, callback) {
6054                    var pfx = ["webkit", "moz", "MS", "o", ""];
6055                    for (var p = 0; p < pfx.length; p++) {
6056                        if (!pfx[p]) type = type.toLowerCase();
6057                        element.addEventListener(pfx[p] + type, callback, false);
6058                    }
6059                },
6060
6061                _objToString = function(obj) {
6062                    var tabjson = [];
6063                    for (var p in obj) {
6064                        if (obj.hasOwnProperty(p)) {
6065                            tabjson.push(p + ':' + obj[p]);
6066                        }
6067                    }
6068                    tabjson.push();
6069                    return '{' + tabjson.join(',') + '}';
6070                },
6071
6072                _startAnimationWithDelay = function() {
6073                    $this.timer = setTimeout(animate, o.delayBeforeStart);
6074                },
6075
6076                // Public methods
6077                methods = {
6078                    pause: function() {
6079                        if (css3AnimationIsSupported && o.allowCss3Support) {
6080                            $marqueeWrapper.css(playState, 'paused');
6081                        } else {
6082                            // pause using pause plugin
6083                            if ($.fn.pause) {
6084                                $marqueeWrapper.pause();
6085                            }
6086                        }
6087                        // save the status
6088                        $this.data('runningStatus', 'paused');
6089                        // fire event
6090                        $this.trigger('paused');
6091                    },
6092
6093                    resume: function() {
6094                        // resume using css3
6095                        if (css3AnimationIsSupported && o.allowCss3Support) {
6096                            $marqueeWrapper.css(playState, 'running');
6097                        } else {
6098                            // resume using pause plugin
6099                            if ($.fn.resume) {
6100                                $marqueeWrapper.resume();
6101                            }
6102                        }
6103                        // save the status
6104                        $this.data('runningStatus', 'resumed');
6105                        // fire event
6106                        $this.trigger('resumed');
6107                    },
6108
6109                    toggle: function() {
6110                        methods[$this.data('runningStatus') === 'resumed' ? 'pause' : 'resume']();
6111                    },
6112
6113                    destroy: function() {
6114                        // Clear timer
6115                        clearTimeout($this.timer);
6116                        // Unbind all events
6117                        $this.find("*").addBack().off();
6118                        // Just unwrap the elements that has been added using this plugin
6119                        $this.html($this.find('.js-marquee:first').html());
6120                    }
6121                };
6122
6123            // Check for methods
6124            if (typeof options === 'string') {
6125                if ($.isFunction(methods[options])) {
6126                    // Following two IF statements to support public methods
6127                    if (!$marqueeWrapper) {
6128                        $marqueeWrapper = $this.find('.js-marquee-wrapper');
6129                    }
6130                    if ($this.data('css3AnimationIsSupported') === true) {
6131                        css3AnimationIsSupported = true;
6132                    }
6133                    methods[options]();
6134                }
6135                return;
6136            }
6137
6138            /* Check if element has data attributes. They have top priority
6139               For details https://twitter.com/aamirafridi/status/403848
vendor: 14,983 bytes, lines 6139-6424
6139044069679104 - Can't find a better solution :/
6140               jQuery 1.3.2 doesn't support $.data().KEY hence writting the following */
6141            var dataAttributes = {},
6142            attr;
6143            $.each(o, function(key) {
6144                // Check if element has this data attribute
6145                attr = $this.attr('data-' + key);
6146                if (typeof attr !== 'undefined') {
6147                    // Now check if value is boolean or not
6148                    switch (attr) {
6149                        case 'true':
6150                            attr = true;
6151                            break;
6152                        case 'false':
6153                            attr = false;
6154                            break;
6155                    }
6156                    o[key] = attr;
6157                }
6158            });
6159
6160            // Reintroduce speed as an option. It calculates duration as a factor of the container width
6161            // measured in pixels per second.
6162            if (o.speed) {
6163                o.duration = parseInt($this.width(), 10) / o.speed * 1000;
6164            }
6165
6166            // Shortcut to see if direction is upward or downward
6167            verticalDir = o.direction === 'up' || o.direction === 'down';
6168
6169            // no gap if not duplicated
6170            o.gap = o.duplicated ? parseInt(o.gap) : 0;
6171
6172            // wrap inner content into a div
6173            $this.wrapInner('<div class="js-marquee"></div>');
6174
6175            // Make copy of the element
6176            var $el = $this.find('.js-marquee').css({
6177                'margin-right': o.gap,
6178                'float': 'left'
6179            });
6180
6181            if (o.duplicated) {
6182                $el.clone(true).appendTo($this);
6183            }
6184
6185            // wrap both inner elements into one div
6186            $this.wrapInner('<div style="width:100000px" class="js-marquee-wrapper"></div>');
6187
6188            // Save the reference of the wrapper
6189            $marqueeWrapper = $this.find('.js-marquee-wrapper');
6190
6191            // If direction is up or down, get the height of main element
6192            if (verticalDir) {
6193                var containerHeight = $this.height();
6194                $marqueeWrapper.removeAttr('style');
6195                $this.height(containerHeight);
6196
6197                // Change the CSS for js-marquee element
6198                $this.find('.js-marquee').css({
6199                    'float': 'none',
6200                    'margin-bottom': o.gap,
6201                    'margin-right': 0
6202                });
6203
6204                // Remove bottom margin from 2nd element if duplicated
6205                if (o.duplicated) {
6206		    $this.find('.js-marquee:last').css({
6207			'margin-bottom': 0
6208		    });
6209		}
6210
6211                var elHeight = $this.find('.js-marquee:first').height() + o.gap;
6212
6213                // adjust the animation duration according to the text length
6214                if (o.startVisible && !o.duplicated) {
6215                    // Compute the complete animation duration and save it for later reference
6216                    // formula is to: (Height of the text node + height of the main container / Height of the main container) * duration;
6217                    o._completeDuration = ((parseInt(elHeight, 10) + parseInt(containerHeight, 10)) / parseInt(containerHeight, 10)) * o.duration;
6218
6219                    // formula is to: (Height of the text node / height of the main container) * duration
6220                    o.duration = (parseInt(elHeight, 10) / parseInt(containerHeight, 10)) * o.duration;
6221                } else {
6222                    // formula is to: (Height of the text node + height of the main container / Height of the main container) * duration;
6223                    o.duration = ((parseInt(elHeight, 10) + parseInt(containerHeight, 10)) / parseInt(containerHeight, 10)) * o.duration;
6224                }
6225
6226            } else {
6227                // Save the width of the each element so we can use it in animation
6228                elWidth = $this.find('.js-marquee:first').width() + o.gap;
6229
6230                // container width
6231                containerWidth = $this.width();
6232
6233                // adjust the animation duration according to the text length
6234                if (o.startVisible && !o.duplicated) {
6235                    // Compute the complete animation duration and save it for later reference
6236                    // formula is to: (Width of the text node + width of the main container / Width of the main container) * duration;
6237                    o._completeDuration = ((parseInt(elWidth, 10) + parseInt(containerWidth, 10)) / parseInt(containerWidth, 10)) * o.duration;
6238
6239                    // (Width of the text node / width of the main container) * duration
6240                    o.duration = (parseInt(elWidth, 10) / parseInt(containerWidth, 10)) * o.duration;
6241                } else {
6242                    // formula is to: (Width of the text node + width of the main container / Width of the main container) * duration;
6243                    o.duration = ((parseInt(elWidth, 10) + parseInt(containerWidth, 10)) / parseInt(containerWidth, 10)) * o.duration;
6244                }
6245            }
6246
6247            // if duplicated then reduce the duration
6248            if (o.duplicated) {
6249                o.duration = o.duration / 2;
6250            }
6251
6252            if (o.allowCss3Support) {
6253                var elm = document.body || document.createElement('div'),
6254                    animationName = 'marqueeAnimation-' + Math.floor(Math.random() * 10000000),
6255                    domPrefixes = 'Webkit Moz O ms Khtml'.split(' '),
6256                    animationString = 'animation',
6257                    animationCss3Str = '',
6258                    keyframeString = '';
6259
6260                // Check css3 support
6261                if (elm.style.animation !== undefined) {
6262                    keyframeString = '@keyframes ' + animationName + ' ';
6263                    css3AnimationIsSupported = true;
6264                }
6265
6266                if (css3AnimationIsSupported === false) {
6267                    for (var i = 0; i < domPrefixes.length; i++) {
6268                        if (elm.style[domPrefixes[i] + 'AnimationName'] !== undefined) {
6269                            var prefix = '-' + domPrefixes[i].toLowerCase() + '-';
6270                            animationString = prefix + animationString;
6271                            playState = prefix + playState;
6272                            keyframeString = '@' + prefix + 'keyframes ' + animationName + ' ';
6273                            css3AnimationIsSupported = true;
6274                            break;
6275                        }
6276                    }
6277                }
6278
6279                if (css3AnimationIsSupported) {
6280                    animationCss3Str = animationName + ' ' + o.duration / 1000 + 's ' + o.delayBeforeStart / 1000 + 's infinite ' + o.css3easing;
6281                    $this.data('css3AnimationIsSupported', true);
6282                }
6283            }
6284
6285            var _rePositionVertically = function() {
6286                $marqueeWrapper.css('transform', 'translateY(' + (o.direction === 'up' ? containerHeight + 'px' : '-' + elHeight + 'px') + ')');
6287            },
6288            _rePositionHorizontally = function() {
6289                $marqueeWrapper.css('transform', 'translateX(' + (o.direction === 'left' ? containerWidth + 'px' : '-' + elWidth + 'px') + ')');
6290            };
6291
6292            // if duplicated option is set to true than position the wrapper
6293            if (o.duplicated) {
6294                if (verticalDir) {
6295                    if (o.startVisible) {
6296                        $marqueeWrapper.css('transform', 'translateY(0)');
6297                    } else {
6298                        $marqueeWrapper.css('transform', 'translateY(' + (o.direction === 'up' ? containerHeight + 'px' : '-' + ((elHeight * 2) - o.gap) + 'px') + ')');
6299                    }
6300                } else {
6301                    if (o.startVisible) {
6302                        $marqueeWrapper.css('transform', 'translateX(0)');
6303                    } else {
6304                        $marqueeWrapper.css('transform', 'translateX(' + (o.direction === 'left' ? containerWidth + 'px' : '-' + ((elWidth * 2) - o.gap) + 'px') + ')');
6305                    }
6306                }
6307
6308                // If the text starts out visible we can skip the two initial loops
6309                if (!o.startVisible) {
6310                  loopCount = 1;
6311                }
6312            } else if (o.startVisible) {
6313                // We only have two different loops if marquee is duplicated and starts visible
6314                loopCount = 2;
6315            } else {
6316                if (verticalDir) {
6317                    _rePositionVertically();
6318                } else {
6319                    _rePositionHorizontally();
6320                }
6321            }
6322
6323            // Animate recursive method
6324            var animate = function() {
6325                if (o.duplicated) {
6326                    // When duplicated, the first loop will be scroll longer so double the duration
6327                    if (loopCount === 1) {
6328                        o._originalDuration = o.duration;
6329                        if (verticalDir) {
6330                            o.duration = o.direction === 'up' ? o.duration + (containerHeight / ((elHeight) / o.duration)) : o.duration * 2;
6331                        } else {
6332                            o.duration = o.direction === 'left' ? o.duration + (containerWidth / ((elWidth) / o.duration)) : o.duration * 2;
6333                        }
6334                        // Adjust the css3 animation as well
6335                        if (animationCss3Str) {
6336                            animationCss3Str = animationName + ' ' + o.duration / 1000 + 's ' + o.delayBeforeStart / 1000 + 's ' + o.css3easing;
6337                        }
6338                        loopCount++;
6339                    }
6340                    // On 2nd loop things back to normal, normal duration for the rest of animations
6341                    else if (loopCount === 2) {
6342                        o.duration = o._originalDuration;
6343                        // Adjust the css3 animation as well
6344                        if (animationCss3Str) {
6345                            animationName = animationName + '0';
6346                            keyframeString = $.trim(keyframeString) + '0 ';
6347                            animationCss3Str = animationName + ' ' + o.duration / 1000 + 's 0s infinite ' + o.css3easing;
6348                        }
6349                        loopCount++;
6350                    }
6351                }
6352
6353                if (verticalDir) {
6354                    if (o.duplicated) {
6355
6356                        // Adjust the starting point of animation only when first loops finishes
6357                        if (loopCount > 2) {
6358                            $marqueeWrapper.css('transform', 'translateY(' + (o.direction === 'up' ? 0 : '-' + elHeight + 'px') + ')');
6359                        }
6360
6361                        animationCss = {
6362                            'transform': 'translateY(' + (o.direction === 'up' ? '-' + elHeight + 'px' : 0) + ')'
6363                        };
6364                    } else if (o.startVisible) {
6365                        // This loop moves the marquee out of the container
6366                        if (loopCount === 2) {
6367                            // Adjust the css3 animation as well
6368                            if (animationCss3Str) {
6369                                animationCss3Str = animationName + ' ' + o.duration / 1000 + 's ' + o.delayBeforeStart / 1000 + 's ' + o.css3easing;
6370                            }
6371                            animationCss = {
6372                                'transform': 'translateY(' + (o.direction === 'up' ? '-' + elHeight + 'px' : containerHeight + 'px') + ')'
6373                            };
6374                            loopCount++;
6375                        } else if (loopCount === 3) {
6376                            // Set the duration for the animation that will run forever
6377                            o.duration = o._completeDuration;
6378                            // Adjust the css3 animation as well
6379                            if (animationCss3Str) {
6380                                    animationName = animationName + '0';
6381                                    keyframeString = $.trim(keyframeString) + '0 ';
6382                                    animationCss3Str = animationName + ' ' + o.duration / 1000 + 's 0s infinite ' + o.css3easing;
6383                            }
6384                            _rePositionVertically();
6385                        }
6386                    } else {
6387                        _rePositionVertically();
6388                        animationCss = {
6389                            'transform': 'translateY(' + (o.direction === 'up' ? '-' + ($marqueeWrapper.height()) + 'px' : containerHeight + 'px') + ')'
6390                        };
6391                    }
6392                } else {
6393                    if (o.duplicated) {
6394
6395                        // Adjust the starting point of animation only when first loops finishes
6396                        if (loopCount > 2) {
6397                            $marqueeWrapper.css('transform', 'translateX(' + (o.direction === 'left' ? 0 : '-' + elWidth + 'px') + ')');
6398                        }
6399
6400                        animationCss = {
6401                            'transform': 'translateX(' + (o.direction === 'left' ? '-' + elWidth + 'px' : 0) + ')'
6402                        };
6403
6404                    } else if (o.startVisible) {
6405                        // This loop moves the marquee out of the container
6406                        if (loopCount === 2) {
6407                            // Adjust the css3 animation as well
6408                            if (animationCss3Str) {
6409                                animationCss3Str = animationName + ' ' + o.duration / 1000 + 's ' + o.delayBeforeStart / 1000 + 's ' + o.css3easing;
6410                            }
6411                            animationCss = {
6412                                'transform': 'translateX(' + (o.direction === 'left' ? '-' + elWidth + 'px' : containerWidth + 'px') + ')'
6413                            };
6414                            loopCount++;
6415                        } else if (loopCount === 3) {
6416                            // Set the duration for the animation that will run forever
6417                            o.duration = o._completeDuration;
6418                            // Adjust the css3 animation as well
6419                            if (animationCss3Str) {
6420                                animationName = animationName + '0';
6421                                keyframeString = $.trim(keyframeString) + '0 ';
6422                                animationCss3Str = animationName + ' ' + o.duration / 1000 + 's 0s infinite ' + o.css3easing;
6423                            }
6424                            _rePositionHorizontally();
6425                        }
6426                    } else {
6427                        _rePositionHorizontally();
6428                        animationCss = {
6429                            'transform': 'translateX(' + (o.direction === 'left' ? '-' + elWidth + 'px' : containerWidth + 'px') + ')'
6430                        };
6431                    }
6432                }
6433
6434                // fire event
6435                $this.trigger('beforeStarting');
6436
6437                // If css3 support is available than do it with css3, otherwise use jQuery as fallback
6438                if (css3AnimationIsSupported) {
6439                    // Add css3 animation to the element
6440                    $marqueeWrapper.css(animationString, animationCss3Str);
6441                    var keyframeCss = keyframeString + ' { 100%  ' + _objToString(animationCss) + '}',
6442                         $styles = $marqueeWrapper.find('style');
6443
6444                    // Now add the keyframe animation to the marquee element
6445                    if ($styles.length !== 0) {
6446                        // Bug fixed for jQuery 1.3.x - Instead of using .last(), use following
6447                        $styles.filter(":last").html(keyframeCss);
6448                    } else {
6449                        $('head').append('<style>' + keyframeCss + '</style>');
6450                    }
6451
6452                    // Animation iteration event
6453                    _prefixedEvent($marqueeWrapper[0], "AnimationIteration", function() {
6454                        $this.trigger('finished');
6455                    });
6456                    // Animation stopped
6457                    _prefixedEvent($marqueeWrapper[0], "AnimationEnd", function() {
6458                        animate();
6459                        $this.trigger('finished');
6460                    });
6461
6462                } else {
6463                    // Start animating
6464                    $marqueeWrapper.animate(animationCss, o.duration, o.easing, function() {
6465                        // fire event
6466                        $this.trigger('finished');
6467                        // animate again
6468                        if (o.pauseOnCycle) {
6469                            _startAnimationWithDelay();
6470                        } else {
6471                            animate();
6472                        }
6473                    });
6474                }
6475                // save the status
6476                $this.data('runningStatus', 'resumed');
6477            };
6478
6479            // bind pause and resume events
6480            $this.on('pause', methods.pause);
6481            $this.on('resume', methods.resume);
6482
6483            if (o.pauseOnHover) {
6484                $this.on('mouseenter', methods.pause);
6485                $this.on('mouseleave', methods.resume);
6486            }
6487
6488            // If css3 animation is supported than call animate method at once
6489            if (css3AnimationIsSupported && o.allowCss3Support) {
6490                animate();
6491            } else {
6492                // Starts the recursive method
6493                _startAnimationWithDelay();
6494            }
6495
6496        });
6497    }; // End of Plugin
6498    // Public: plugin defaults options
6499    $.fn.marquee.defaults = {
6500        // If you wish to always animate using jQuery
6501        allowCss3Support: true,
6502        // works when allowCss3Support is set to true - for full list see http://www.w3.org/TR/2013/WD-css3-transitions-20131119/#transition-timing-function
6503        css3easing: 'linear',
6504        // requires jQuery easing plugin. Default is 'linear'
6505        easing: 'linear',
6506        // pause time before the next animation turn in milliseconds
6507        delayBeforeStart: 1000,
6508        // 'left', 'right', 'up' or 'down'
6509        direction: 'left',
6510        // true or false - should the marquee be duplicated to show an effect of continues flow
6511        duplicated: false,
6512        // duration in milliseconds of the marquee in milliseconds
6513        duration: 5000,
6514        // Speed allows you to set a relatively constant marquee speed regardless of the width of the containing element. Speed is measured in pixels per second.
6515        speed: 0,
6516        // gap in pixels between the tickers
6517        gap: 20,
6518        // on cycle pause the marquee
6519        pauseOnCycle: false,
6520        // on hover pause the marquee - using jQuery plugin https://github.com/tobia/Pause
6521        pauseOnHover: false,
6522        // the marquee is visible initially positioned next to the border towards it will be moving
6523        startVisible: false
6524    };
6525})(jQuery);
6526// source --> https://quinto-canal.com/wp-content/themes/newsup/js/main.js?ver=7.1.1 
6527(function(){
6528
6529    jQuery(document).ready(function() {
6530
6531        /* ---------------------------------------------- /*
6532         * Scroll top
6533         /* ---------------------------------------------- */
6534
6535        jQuery(window).scroll(function() {
6536            if (jQuery(this).scrollTop() > 100) {
6537                jQuery('.page-scroll-up').fadeIn();
6538            } else {
6539                jQuery('.page-scroll-up').fadeOut();
6540            }
6541        });
6542		
6543		jQuery('.page-scroll-up').click(function () {
6544			jQuery("html, body").animate({
6545				scrollTop: 0
6546			}, 700);
6547			return false;
6548		});
6549    });
6550})(jQuery);

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