PageSourceSearch

https://www.aponet.de/typo3temp/assets/compressed/merged-f41f0f809…34187bdbb9e15647af1c19f5b7f97.js?1790268898

js aponet.de collected 2026-09-24 18:01:33 UTC 307,815 bytes, 5,406 lines download raw bytes

vendor: 4,402 bytes, lines 1-133
1
2/*!
3  * Bootstrap v5.1.3 (https://getbootstrap.com/)
4  * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
5  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
6  */
7(function (global, factory) {
8  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('@popperjs/core')) :
9  typeof define === 'function' && define.amd ? define(['@popperjs/core'], factory) :
10  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.bootstrap = factory(global.Popper));
11})(this, (function (Popper) { 'use strict';
12
13  function _interopNamespace(e) {
14    if (e && e.__esModule) return e;
15    const n = Object.create(null);
16    if (e) {
17      for (const k in e) {
18        if (k !== 'default') {
19          const d = Object.getOwnPropertyDescriptor(e, k);
20          Object.defineProperty(n, k, d.get ? d : {
21            enumerable: true,
22            get: () => e[k]
23          });
24        }
25      }
26    }
27    n.default = e;
28    return Object.freeze(n);
29  }
30
31  const Popper__namespace = /*#__PURE__*/_interopNamespace(Popper);
32
33  /**
34   * --------------------------------------------------------------------------
35   * Bootstrap (v5.1.3): util/index.js
36   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
37   * --------------------------------------------------------------------------
38   */
39  const MAX_UID = 1000000;
40  const MILLISECONDS_MULTIPLIER = 1000;
41  const TRANSITION_END = 'transitionend'; // Shoutout AngusCroll (https://goo.gl/pxwQGp)
42
43  const toType = obj => {
44    if (obj === null || obj === undefined) {
45      return `${obj}`;
46    }
47
48    return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase();
49  };
50  /**
51   * --------------------------------------------------------------------------
52   * Public Util Api
53   * --------------------------------------------------------------------------
54   */
55
56
57  const getUID = prefix => {
58    do {
59      prefix += Math.floor(Math.random() * MAX_UID);
60    } while (document.getElementById(prefix));
61
62    return prefix;
63  };
64
65  const getSelector = element => {
66    let selector = element.getAttribute('data-bs-target');
67
68    if (!selector || selector === '#') {
69      let hrefAttr = element.getAttribute('href'); // The only valid content that could double as a selector are IDs or classes,
70      // so everything starting with `#` or `.`. If a "real" URL is used as the selector,
71      // `document.querySelector` will rightfully complain it is invalid.
72      // See https://github.com/twbs/bootstrap/issues/32273
73
74      if (!hrefAttr || !hrefAttr.includes('#') && !hrefAttr.startsWith('.')) {
75        return null;
76      } // Just in case some CMS puts out a full URL with the anchor appended
77
78
79      if (hrefAttr.includes('#') && !hrefAttr.startsWith('#')) {
80        hrefAttr = `#${hrefAttr.split('#')[1]}`;
81      }
82
83      selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null;
84    }
85
86    return selector;
87  };
88
89  const getSelectorFromElement = element => {
90    const selector = getSelector(element);
91
92    if (selector) {
93      return document.querySelector(selector) ? selector : null;
94    }
95
96    return null;
97  };
98
99  const getElementFromSelector = element => {
100    const selector = getSelector(element);
101    return selector ? document.querySelector(selector) : null;
102  };
103
104  const getTransitionDurationFromElement = element => {
105    if (!element) {
106      return 0;
107    } // Get transition-duration of the element
108
109
110    let {
111      transitionDuration,
112      transitionDelay
113    } = window.getComputedStyle(element);
114    const floatTransitionDuration = Number.parseFloat(transitionDuration);
115    const floatTransitionDelay = Number.parseFloat(transitionDelay); // Return 0 if element or transition duration is not found
116
117    if (!floatTransitionDuration && !floatTransitionDelay) {
118      return 0;
119    } // If multiple durations are defined, take the first
120
121
122    transitionDuration = transitionDuration.split(',')[0];
123    transitionDelay = transitionDelay.split(',')[0];
124    return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;
125  };
126
127  const triggerTransitionEnd = element => {
128    element.dispatchEvent(new Event(TRANSITION_END));
129  };
130
131  const isElement = obj => {
132    if (!obj || typeof obj !== 'object') {
133      return false;
134    }
135
136    if (typeof obj.jquery !== 'undefined') {
137      obj = obj[0];
138    }
139
140    return typeof obj.nodeType !== 'undefined';
141  };
142
143  const getElement = obj => {
144    if (isElement(obj)) {
145      // it's a jQuery object or a node element
146      return obj.jquery ? obj[0] : obj;
147    }
148
149    if (typeof obj === 'string' && obj.length > 0) {
150      return document.querySelector(obj);
151    }
152
153    return null;
154  };
155
156  const typeCheckConfig = (componentName, config, configTypes) => {
157    Object.keys(configTypes).forEach(property => {
158      const expectedTypes = configTypes[property];
159      const value = config[property];
160      const valueType = value && isElement(value) ? 'element' : toType(value);
161
162      if (!new RegExp(expectedTypes).test(valueType)) {
163        throw new TypeError(`${componentName.toUpperCase()}: Option "${property}" provided type "${valueType}" but expected type "${expectedTypes}".`);
164      }
165    });
166  };
167
168  const isVisible = element => {
169    if (!isElement(element) || element.getClientRects().length === 0) {
170      return false;
171    }
172
173    return getComputedStyle(element).getPropertyValue('visibility') === 'visible';
174  };
175
176  const isDisabled = element => {
177    if (!element || element.nodeType !== Node.ELEMENT_NODE) {
178      return true;
179    }
180
181    if (element.classList.contains('disabled')) {
182      return true;
183    }
184
185    if (typeof element.disabled !== 'undefined') {
186      return element.disabled;
187    }
188
189    return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false';
190  };
191
192  const findShadowRoot = element => {
193    if (!document.documentElement.attachShadow) {
194      return null;
195    } // Can find the shadow root otherwise it'll return the document
196
197
198    if (typeof element.getRootNode === 'function') {
199      const root = element.getRootNode();
200      return root instanceof ShadowRoot ? root : null;
201    }
202
203    if (element instanceof ShadowRoot) {
204      return element;
205    } // when we don't find a shadow root
206
207
208    if (!element.parentNode) {
209      return null;
210    }
211
212    return findShadowRoot(element.parentNode);
213  };
214
215  const noop = () => {};
216  /**
217   * Trick to restart an element's animation
218   *
219   * @param {HTMLElement} element
220   * @return void
221   *
222   * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation
223   */
224
225
226  const reflow = element => {
227    // eslint-disable-next-line no-unused-expressions
228    element.offsetHeight;
229  };
230
231  const getjQuery = () => {
232    const {
233      jQuery
234    } = window;
235
236    if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {
237      return jQuery;
238    }
239
240    return null;
241  };
242
243  const DOMContentLoadedCallbacks = [];
244
245  const onDOMContentLoaded = callback => {
246    if (document.readyState === 'loading') {
247      // add listener on the first call when the document is in loading state
248      if (!DOMContentLoadedCallbacks.length) {
249        document.addEventListener('DOMContentLoaded', () => {
250          DOMContentLoadedCallbacks.forEach(callback => callback());
251        });
252      }
253
254      DOMContentLoadedCallbacks.push(callback);
255    } else {
256      callback();
257    }
258  };
259
260  const isRTL = () => document.documentElement.dir === 'rtl';
261
262  const defineJQueryPlugin = plugin => {
263    onDOMContentLoaded(() => {
264      const $ = getjQuery();
265      /* istanbul ignore if */
266
267      if ($) {
268        const name = plugin.NAME;
269        const JQUERY_NO_CONFLICT = $.fn[name];
270        $.fn[name] = plugin.jQueryInterface;
271        $.fn[name].Constructor = plugin;
272
273        $.fn[name].noConflict = () => {
274          $.fn[name] = JQUERY_NO_CONFLICT;
275          return plugin.jQueryInterface;
276        };
277      }
278    });
279  };
280
281  const execute = callback => {
282    if (typeof callback === 'function') {
283      callback();
284    }
285  };
286
287  const executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {
288    if (!waitForTransition) {
289      execute(callback);
290      return;
291    }
292
293    const durationPadding = 5;
294    const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding;
295    let called = false;
296
297    const handler = ({
298      target
299    }) => {
300      if (target !== transitionElement) {
301        return;
302      }
303
304      called = true;
305      transitionElement.removeEventListener(TRANSITION_END, handler);
306      execute(callback);
307    };
308
309    transitionElement.addEventListener(TRANSITION_END, handler);
310    setTimeout(() => {
311      if (!called) {
312        triggerTransitionEnd(transitionElement);
313      }
314    }, emulatedDuration);
315  };
316  /**
317   * Return the previous/next element of a list.
318   *
319   * @param {array} list    The list of elements
320   * @param activeElement   The active element
321   * @param shouldGetNext   Choose to get next or previous element
322   * @param isCycleAllowed
323   * @return {Element|elem} The proper element
324   */
325
326
327  const getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {
328    let index = list.indexOf(activeElement); // if the element does not exist in the list return an element depending on the direction and if cycle is allowed
329
330    if (index === -1) {
331      return list[!shouldGetNext && isCycleAllowed ? list.length - 1 : 0];
332    }
333
334    const listLength = list.length;
335    index += shouldGetNext ? 1 : -1;
336
337    if (isCycleAllowed) {
338      index = (index + listLength) % listLength;
339    }
340
341    return list[Math.max(0, Math.min(index, listLength - 1))];
342  };
343
344  /**
345   * --------------------------------------------------------------------------
346   * Bootstrap (v5.1.3): dom/event-handler.js
347   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
348   * --------------------------------------------------------------------------
349   */
350  /**
351   * ------------------------------------------------------------------------
352   * Constants
353   * ------------------------------------------------------------------------
354   */
355
356  const namespaceRegex = /[^.]*(?=\..*)\.|.*/;
357  const stripNameRegex = /\..*/;
358  const stripUidRegex = /::\d+$/;
359  const eventRegistry = {}; // Events storage
360
361  let uidEvent = 1;
362  const customEvents = {
363    mouseenter: 'mouseover',
364    mouseleave: 'mouseout'
365  };
366  const customEventsRegex = /^(mouseenter|mouseleave)/i;
367  const nativeEvents = new Set(['click', 'dblclick', 'mouseup', 'mousedown', 'contextmenu', 'mousewheel', 'DOMMouseScroll', 'mouseover', 'mouseout', 'mousemove', 'selectstart', 'selectend', 'keydown', 'keypress', 'keyup', 'orientationchange', 'touchstart', 'touchmove', 'touchend', 'touchcancel', 'pointerdown', 'pointermove', 'pointerup', 'pointerleave', 'pointercancel', 'gesturestart', 'gesturechange', 'gestureend', 'focus', 'blur', 'change', 'reset', 'select', 'submit', 'focusin', 'focusout', 'load', 'unload', 'beforeunload', 'resize', 'move', 'DOMContentLoaded', 'readystatechange', 'error', 'abort', 'scroll']);
368  /**
369   * ------------------------------------------------------------------------
370   * Private methods
371   * ------------------------------------------------------------------------
372   */
373
374  function getUidEvent(element, uid) {
375    return uid && `${uid}::${uidEvent++}` || element.uidEvent || uidEvent++;
376  }
377
378  function getEvent(element) {
379    const uid = getUidEvent(element);
380    element.uidEvent = uid;
381    eventRegistry[uid] = eventRegistry[uid] || {};
382    return eventRegistry[uid];
383  }
384
385  function bootstrapHandler(element, fn) {
386    return function handler(event) {
387      event.delegateTarget = element;
388
389      if (handler.oneOff) {
390        EventHandler.off(element, event.type, fn);
391      }
392
393      return fn.apply(element, [event]);
394    };
395  }
396
397  function bootstrapDelegationHandler(element, selector, fn) {
398    return function handler(event) {
399      const domElements = element.querySelectorAll(selector);
400
401      for (let {
402        target
403      } = event; target && target !== this; target = target.parentNode) {
404        for (let i = domElements.length; i--;) {
405          if (domElements[i] === target) {
406            event.delegateTarget = target;
407
408            if (handler.oneOff) {
409              EventHandler.off(element, event.type, selector, fn);
410            }
411
412            return fn.apply(target, [event]);
413          }
414        }
415      } // To please ESLint
416
417
418      return null;
419    };
420  }
421
422  function findHandler(events, handler, delegationSelector = null) {
423    const uidEventList = Object.keys(events);
424
425    for (let i = 0, len = uidEventList.length; i < len; i++) {
426      const event = events[uidEventList[i]];
427
428      if (event.originalHandler === handler && event.delegationSelector === delegationSelector) {
429        return event;
430      }
431    }
432
433    return null;
434  }
435
436  function normalizeParams(originalTypeEvent, handler, delegationFn) {
437    const delegation = typeof handler === 'string';
438    const originalHandler = delegation ? delegationFn : handler;
439    let typeEvent = getTypeEvent(originalTypeEvent);
440    const isNative = nativeEvents.has(typeEvent);
441
442    if (!isNative) {
443      typeEvent = originalTypeEvent;
444    }
445
446    return [delegation, originalHandler, typeEvent];
447  }
448
449  function addHandler(element, originalTypeEvent, handler, delegationFn, oneOff) {
450    if (typeof originalTypeEvent !== 'string' || !element) {
451      return;
452    }
453
454    if (!handler) {
455      handler = delegationFn;
456      delegationFn = null;
457    } // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position
458    // this prevents the handler from being dispatched the same way as mouseover or mouseout does
459
460
461    if (customEventsRegex.test(originalTypeEvent)) {
462      const wrapFn = fn => {
463        return function (event) {
464          if (!event.relatedTarget || event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget)) {
vendor: 10,268 bytes, lines 465-795
465            return fn.call(this, event);
466          }
467        };
468      };
469
470      if (delegationFn) {
471        delegationFn = wrapFn(delegationFn);
472      } else {
473        handler = wrapFn(handler);
474      }
475    }
476
477    const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn);
478    const events = getEvent(element);
479    const handlers = events[typeEvent] || (events[typeEvent] = {});
480    const previousFn = findHandler(handlers, originalHandler, delegation ? handler : null);
481
482    if (previousFn) {
483      previousFn.oneOff = previousFn.oneOff && oneOff;
484      return;
485    }
486
487    const uid = getUidEvent(originalHandler, originalTypeEvent.replace(namespaceRegex, ''));
488    const fn = delegation ? bootstrapDelegationHandler(element, handler, delegationFn) : bootstrapHandler(element, handler);
489    fn.delegationSelector = delegation ? handler : null;
490    fn.originalHandler = originalHandler;
491    fn.oneOff = oneOff;
492    fn.uidEvent = uid;
493    handlers[uid] = fn;
494    element.addEventListener(typeEvent, fn, delegation);
495  }
496
497  function removeHandler(element, events, typeEvent, handler, delegationSelector) {
498    const fn = findHandler(events[typeEvent], handler, delegationSelector);
499
500    if (!fn) {
501      return;
502    }
503
504    element.removeEventListener(typeEvent, fn, Boolean(delegationSelector));
505    delete events[typeEvent][fn.uidEvent];
506  }
507
508  function removeNamespacedHandlers(element, events, typeEvent, namespace) {
509    const storeElementEvent = events[typeEvent] || {};
510    Object.keys(storeElementEvent).forEach(handlerKey => {
511      if (handlerKey.includes(namespace)) {
512        const event = storeElementEvent[handlerKey];
513        removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector);
514      }
515    });
516  }
517
518  function getTypeEvent(event) {
519    // allow to get the native events from namespaced events ('click.bs.button' --> 'click')
520    event = event.replace(stripNameRegex, '');
521    return customEvents[event] || event;
522  }
523
524  const EventHandler = {
525    on(element, event, handler, delegationFn) {
526      addHandler(element, event, handler, delegationFn, false);
527    },
528
529    one(element, event, handler, delegationFn) {
530      addHandler(element, event, handler, delegationFn, true);
531    },
532
533    off(element, originalTypeEvent, handler, delegationFn) {
534      if (typeof originalTypeEvent !== 'string' || !element) {
535        return;
536      }
537
538      const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn);
539      const inNamespace = typeEvent !== originalTypeEvent;
540      const events = getEvent(element);
541      const isNamespace = originalTypeEvent.startsWith('.');
542
543      if (typeof originalHandler !== 'undefined') {
544        // Simplest case: handler is passed, remove that listener ONLY.
545        if (!events || !events[typeEvent]) {
546          return;
547        }
548
549        removeHandler(element, events, typeEvent, originalHandler, delegation ? handler : null);
550        return;
551      }
552
553      if (isNamespace) {
554        Object.keys(events).forEach(elementEvent => {
555          removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1));
556        });
557      }
558
559      const storeElementEvent = events[typeEvent] || {};
560      Object.keys(storeElementEvent).forEach(keyHandlers => {
561        const handlerKey = keyHandlers.replace(stripUidRegex, '');
562
563        if (!inNamespace || originalTypeEvent.includes(handlerKey)) {
564          const event = storeElementEvent[keyHandlers];
565          removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector);
566        }
567      });
568    },
569
570    trigger(element, event, args) {
571      if (typeof event !== 'string' || !element) {
572        return null;
573      }
574
575      const $ = getjQuery();
576      const typeEvent = getTypeEvent(event);
577      const inNamespace = event !== typeEvent;
578      const isNative = nativeEvents.has(typeEvent);
579      let jQueryEvent;
580      let bubbles = true;
581      let nativeDispatch = true;
582      let defaultPrevented = false;
583      let evt = null;
584
585      if (inNamespace && $) {
586        jQueryEvent = $.Event(event, args);
587        $(element).trigger(jQueryEvent);
588        bubbles = !jQueryEvent.isPropagationStopped();
589        nativeDispatch = !jQueryEvent.isImmediatePropagationStopped();
590        defaultPrevented = jQueryEvent.isDefaultPrevented();
591      }
592
593      if (isNative) {
594        evt = document.createEvent('HTMLEvents');
595        evt.initEvent(typeEvent, bubbles, true);
596      } else {
597        evt = new CustomEvent(event, {
598          bubbles,
599          cancelable: true
600        });
601      } // merge custom information in our event
602
603
604      if (typeof args !== 'undefined') {
605        Object.keys(args).forEach(key => {
606          Object.defineProperty(evt, key, {
607            get() {
608              return args[key];
609            }
610
611          });
612        });
613      }
614
615      if (defaultPrevented) {
616        evt.preventDefault();
617      }
618
619      if (nativeDispatch) {
620        element.dispatchEvent(evt);
621      }
622
623      if (evt.defaultPrevented && typeof jQueryEvent !== 'undefined') {
624        jQueryEvent.preventDefault();
625      }
626
627      return evt;
628    }
629
630  };
631
632  /**
633   * --------------------------------------------------------------------------
634   * Bootstrap (v5.1.3): dom/data.js
635   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
636   * --------------------------------------------------------------------------
637   */
638
639  /**
640   * ------------------------------------------------------------------------
641   * Constants
642   * ------------------------------------------------------------------------
643   */
644  const elementMap = new Map();
645  const Data = {
646    set(element, key, instance) {
647      if (!elementMap.has(element)) {
648        elementMap.set(element, new Map());
649      }
650
651      const instanceMap = elementMap.get(element); // make it clear we only want one instance per element
652      // can be removed later when multiple key/instances are fine to be used
653
654      if (!instanceMap.has(key) && instanceMap.size !== 0) {
655        // eslint-disable-next-line no-console
656        console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`);
657        return;
658      }
659
660      instanceMap.set(key, instance);
661    },
662
663    get(element, key) {
664      if (elementMap.has(element)) {
665        return elementMap.get(element).get(key) || null;
666      }
667
668      return null;
669    },
670
671    remove(element, key) {
672      if (!elementMap.has(element)) {
673        return;
674      }
675
676      const instanceMap = elementMap.get(element);
677      instanceMap.delete(key); // free up element references if there are no instances left for an element
678
679      if (instanceMap.size === 0) {
680        elementMap.delete(element);
681      }
682    }
683
684  };
685
686  /**
687   * --------------------------------------------------------------------------
688   * Bootstrap (v5.1.3): base-component.js
689   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
690   * --------------------------------------------------------------------------
691   */
692  /**
693   * ------------------------------------------------------------------------
694   * Constants
695   * ------------------------------------------------------------------------
696   */
697
698  const VERSION = '5.1.3';
699
700  class BaseComponent {
701    constructor(element) {
702      element = getElement(element);
703
704      if (!element) {
705        return;
706      }
707
708      this._element = element;
709      Data.set(this._element, this.constructor.DATA_KEY, this);
710    }
711
712    dispose() {
713      Data.remove(this._element, this.constructor.DATA_KEY);
714      EventHandler.off(this._element, this.constructor.EVENT_KEY);
715      Object.getOwnPropertyNames(this).forEach(propertyName => {
716        this[propertyName] = null;
717      });
718    }
719
720    _queueCallback(callback, element, isAnimated = true) {
721      executeAfterTransition(callback, element, isAnimated);
722    }
723    /** Static */
724
725
726    static getInstance(element) {
727      return Data.get(getElement(element), this.DATA_KEY);
728    }
729
730    static getOrCreateInstance(element, config = {}) {
731      return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null);
732    }
733
734    static get VERSION() {
735      return VERSION;
736    }
737
738    static get NAME() {
739      throw new Error('You have to implement the static method "NAME", for each component!');
740    }
741
742    static get DATA_KEY() {
743      return `bs.${this.NAME}`;
744    }
745
746    static get EVENT_KEY() {
747      return `.${this.DATA_KEY}`;
748    }
749
750  }
751
752  /**
753   * --------------------------------------------------------------------------
754   * Bootstrap (v5.1.3): util/component-functions.js
755   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
756   * --------------------------------------------------------------------------
757   */
758
759  const enableDismissTrigger = (component, method = 'hide') => {
760    const clickEvent = `click.dismiss${component.EVENT_KEY}`;
761    const name = component.NAME;
762    EventHandler.on(document, clickEvent, `[data-bs-dismiss="${name}"]`, function (event) {
763      if (['A', 'AREA'].includes(this.tagName)) {
764        event.preventDefault();
765      }
766
767      if (isDisabled(this)) {
768        return;
769      }
770
771      const target = getElementFromSelector(this) || this.closest(`.${name}`);
772      const instance = component.getOrCreateInstance(target); // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method
773
774      instance[method]();
775    });
776  };
777
778  /**
779   * --------------------------------------------------------------------------
780   * Bootstrap (v5.1.3): alert.js
781   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
782   * --------------------------------------------------------------------------
783   */
784  /**
785   * ------------------------------------------------------------------------
786   * Constants
787   * ------------------------------------------------------------------------
788   */
789
790  const NAME$d = 'alert';
791  const DATA_KEY$c = 'bs.alert';
792  const EVENT_KEY$c = `.${DATA_KEY$c}`;
793  const EVENT_CLOSE = `close${EVENT_KEY$c}`;
794  const EVENT_CLOSED = `closed${EVENT_KEY$c}`;
795  const CLASS_NAME_FADE$5 = 'fade';
vendor: 4,515 bytes, lines 796-950
796  const CLASS_NAME_SHOW$8 = 'show';
797  /**
798   * ------------------------------------------------------------------------
799   * Class Definition
800   * ------------------------------------------------------------------------
801   */
802
803  class Alert extends BaseComponent {
804    // Getters
805    static get NAME() {
806      return NAME$d;
807    } // Public
808
809
810    close() {
811      const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE);
812
813      if (closeEvent.defaultPrevented) {
814        return;
815      }
816
817      this._element.classList.remove(CLASS_NAME_SHOW$8);
818
819      const isAnimated = this._element.classList.contains(CLASS_NAME_FADE$5);
820
821      this._queueCallback(() => this._destroyElement(), this._element, isAnimated);
822    } // Private
823
824
825    _destroyElement() {
826      this._element.remove();
827
828      EventHandler.trigger(this._element, EVENT_CLOSED);
829      this.dispose();
830    } // Static
831
832
833    static jQueryInterface(config) {
834      return this.each(function () {
835        const data = Alert.getOrCreateInstance(this);
836
837        if (typeof config !== 'string') {
838          return;
839        }
840
841        if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {
842          throw new TypeError(`No method named "${config}"`);
843        }
844
845        data[config](this);
846      });
847    }
848
849  }
850  /**
851   * ------------------------------------------------------------------------
852   * Data Api implementation
853   * ------------------------------------------------------------------------
854   */
855
856
857  enableDismissTrigger(Alert, 'close');
858  /**
859   * ------------------------------------------------------------------------
860   * jQuery
861   * ------------------------------------------------------------------------
862   * add .Alert to jQuery only if jQuery is present
863   */
864
865  defineJQueryPlugin(Alert);
866
867  /**
868   * --------------------------------------------------------------------------
869   * Bootstrap (v5.1.3): button.js
870   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
871   * --------------------------------------------------------------------------
872   */
873  /**
874   * ------------------------------------------------------------------------
875   * Constants
876   * ------------------------------------------------------------------------
877   */
878
879  const NAME$c = 'button';
880  const DATA_KEY$b = 'bs.button';
881  const EVENT_KEY$b = `.${DATA_KEY$b}`;
882  const DATA_API_KEY$7 = '.data-api';
883  const CLASS_NAME_ACTIVE$3 = 'active';
884  const SELECTOR_DATA_TOGGLE$5 = '[data-bs-toggle="button"]';
885  const EVENT_CLICK_DATA_API$6 = `click${EVENT_KEY$b}${DATA_API_KEY$7}`;
886  /**
887   * ------------------------------------------------------------------------
888   * Class Definition
889   * ------------------------------------------------------------------------
890   */
891
892  class Button extends BaseComponent {
893    // Getters
894    static get NAME() {
895      return NAME$c;
896    } // Public
897
898
899    toggle() {
900      // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method
901      this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE$3));
902    } // Static
903
904
905    static jQueryInterface(config) {
906      return this.each(function () {
907        const data = Button.getOrCreateInstance(this);
908
909        if (config === 'toggle') {
910          data[config]();
911        }
912      });
913    }
914
915  }
916  /**
917   * ------------------------------------------------------------------------
918   * Data Api implementation
919   * ------------------------------------------------------------------------
920   */
921
922
923  EventHandler.on(document, EVENT_CLICK_DATA_API$6, SELECTOR_DATA_TOGGLE$5, event => {
924    event.preventDefault();
925    const button = event.target.closest(SELECTOR_DATA_TOGGLE$5);
926    const data = Button.getOrCreateInstance(button);
927    data.toggle();
928  });
929  /**
930   * ------------------------------------------------------------------------
931   * jQuery
932   * ------------------------------------------------------------------------
933   * add .Button to jQuery only if jQuery is present
934   */
935
936  defineJQueryPlugin(Button);
937
938  /**
939   * --------------------------------------------------------------------------
940   * Bootstrap (v5.1.3): dom/manipulator.js
941   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
942   * --------------------------------------------------------------------------
943   */
944  function normalizeData(val) {
945    if (val === 'true') {
946      return true;
947    }
948
949    if (val === 'false') {
950      return false;
951    }
952
953    if (val === Number(val).toString()) {
954      return Number(val);
955    }
956
957    if (val === '' || val === 'null') {
958      return null;
959    }
960
961    return val;
962  }
963
964  function normalizeDataKey(key) {
965    return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`);
966  }
967
968  const Manipulator = {
969    setDataAttribute(element, key, value) {
970      element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value);
971    },
972
973    removeDataAttribute(element, key) {
974      element.removeAttribute(`data-bs-${normalizeDataKey(key)}`);
975    },
976
977    getDataAttributes(element) {
978      if (!element) {
979        return {};
980      }
981
982      const attributes = {};
983      Object.keys(element.dataset).filter(key => key.startsWith('bs')).forEach(key => {
984        let pureKey = key.replace(/^bs/, '');
985        pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length);
986        attributes[pureKey] = normalizeData(element.dataset[key]);
987      });
988      return attributes;
989    },
990
991    getDataAttribute(element, key) {
992      return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`));
993    },
994
995    offset(element) {
996      const rect = element.getBoundingClientRect();
997      return {
998        top: rect.top + window.pageYOffset,
999        left: rect.left + window.pageXOffset
1000      };
1001    },
1002
1003    position(element) {
1004      return {
1005        top: element.offsetTop,
1006        left: element.offsetLeft
1007      };
1008    }
1009
1010  };
1011
1012  /**
1013   * --------------------------------------------------------------------------
1014   * Bootstrap (v5.1.3): dom/selector-engine.js
1015   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
1016   * --------------------------------------------------------------------------
1017   */
1018  const NODE_TEXT = 3;
1019  const SelectorEngine = {
1020    find(selector, element = document.documentElement) {
1021      return [].concat(...Element.prototype.querySelectorAll.call(element, selector));
1022    },
1023
1024    findOne(selector, element = document.documentElement) {
1025      return Element.prototype.querySelector.call(element, selector);
1026    },
1027
1028    children(element, selector) {
1029      return [].concat(...element.children).filter(child => child.matches(selector));
1030    },
1031
1032    parents(element, selector) {
1033      const parents = [];
1034      let ancestor = element.parentNode;
1035
1036      while (ancestor && ancestor.nodeType === Node.ELEMENT_NODE && ancestor.nodeType !== NODE_TEXT) {
1037        if (ancestor.matches(selector)) {
1038          parents.push(ancestor);
1039        }
1040
1041        ancestor = ancestor.parentNode;
1042      }
1043
1044      return parents;
1045    },
1046
1047    prev(element, selector) {
1048      let previous = element.previousElementSibling;
1049
1050      while (previous) {
1051        if (previous.matches(selector)) {
1052          return [previous];
1053        }
1054
1055        previous = previous.previousElementSibling;
1056      }
1057
1058      return [];
1059    },
1060
1061    next(element, selector) {
1062      let next = element.nextElementSibling;
1063
1064      while (next) {
1065        if (next.matches(selector)) {
1066          return [next];
1067        }
1068
1069        next = next.nextElementSibling;
1070      }
1071
1072      return [];
1073    },
1074
1075    focusableChildren(element) {
1076      const focusables = ['a', 'button', 'input', 'textarea', 'select', 'details', '[tabindex]', '[contenteditable="true"]'].map(selector => `${selector}:not([tabindex^="-"])`).join(', ');
1077      return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el));
1078    }
1079
1080  };
1081
1082  /**
1083   * --------------------------------------------------------------------------
1084   * Bootstrap (v5.1.3): carousel.js
1085   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
1086   * --------------------------------------------------------------------------
1087   */
1088  /**
1089   * ------------------------------------------------------------------------
1090   * Constants
1091   * ------------------------------------------------------------------------
1092   */
1093
1094  const NAME$b = 'carousel';
1095  const DATA_KEY$a = 'bs.carousel';
1096  const EVENT_KEY$a = `.${DATA_KEY$a}`;
1097  const DATA_API_KEY$6 = '.data-api';
1098  const ARROW_LEFT_KEY = 'ArrowLeft';
1099  const ARROW_RIGHT_KEY = 'ArrowRight';
1100  const TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch
1101
1102  const SWIPE_THRESHOLD = 40;
1103  const Default$a = {
1104    interval: 5000,
1105    keyboard: true,
1106    slide: false,
1107    pause: 'hover',
1108    wrap: true,
1109    touch: true
1110  };
1111  const DefaultType$a = {
1112    interval: '(number|boolean)',
1113    keyboard: 'boolean',
1114    slide: '(boolean|string)',
1115    pause: '(string|boolean)',
1116    wrap: 'boolean',
1117    touch: 'boolean'
1118  };
1119  const ORDER_NEXT = 'next';
1120  const ORDER_PREV = 'prev';
1121  const DIRECTION_LEFT = 'left';
1122  const DIRECTION_RIGHT = 'right';
1123  const KEY_TO_DIRECTION = {
1124    [ARROW_LEFT_KEY]: DIRECTION_RIGHT,
1125    [ARROW_RIGHT_KEY]: DIRECTION_LEFT
1126  };
1127  const EVENT_SLIDE = `slide${EVENT_KEY$a}`;
1128  const EVENT_SLID = `slid${EVENT_KEY$a}`;
1129  const EVENT_KEYDOWN = `keydown${EVENT_KEY$a}`;
1130  const EVENT_MOUSEENTER = `mouseenter${EVENT_KEY$a}`;
1131  const EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY$a}`;
1132  const EVENT_TOUCHSTART = `touchstart${EVENT_KEY$a}`;
1133  const EVENT_TOUCHMOVE = `touchmove${EVENT_KEY$a}`;
1134  const EVENT_TOUCHEND = `touchend${EVENT_KEY$a}`;
1135  const EVENT_POINTERDOWN = `pointerdown${EVENT_KEY$a}`;
1136  const EVENT_POINTERUP = `pointerup${EVENT_KEY$a}`;
1137  const EVENT_DRAG_START = `dragstart${EVENT_KEY$a}`;
1138  const EVENT_LOAD_DATA_API$2 = `load${EVENT_KEY$a}${DATA_API_KEY$6}`;
1139  const EVENT_CLICK_DATA_API$5 = `click${EVENT_KEY$a}${DATA_API_KEY$6}`;
1140  const CLASS_NAME_CAROUSEL = 'carousel';
1141  const CLASS_NAME_ACTIVE$2 = 'active';
1142  const CLASS_NAME_SLIDE = 'slide';
1143  const CLASS_NAME_END = 'carousel-item-end';
1144  const CLASS_NAME_START = 'carousel-item-start';
1145  const CLASS_NAME_NEXT = 'carousel-item-next';
1146  const CLASS_NAME_PREV = 'carousel-item-prev';
1147  const CLASS_NAME_POINTER_EVENT = 'pointer-event';
1148  const SELECTOR_ACTIVE$1 = '.active';
1149  const SELECTOR_ACTIVE_ITEM = '.active.carousel-item';
1150  const SELECTOR_ITEM = '.carousel-item';
1151  const SELECTOR_ITEM_IMG = '.carousel-item img';
1152  const SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev';
1153  const SELECTOR_INDICATORS = '.carousel-indicators';
1154  const SELECTOR_INDICATOR = '[data-bs-target]';
1155  const SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]';
1156  const SELECTOR_DATA_RIDE = '[data-bs-ride="carousel"]';
1157  const POINTER_TYPE_TOUCH = 'touch';
1158  const POINTER_TYPE_PEN = 'pen';
1159  /**
1160   * ------------------------------------------------------------------------
1161   * Class Definition
1162   * ------------------------------------------------------------------------
1163   */
1164
1165  class Carousel extends BaseComponent {
1166    constructor(element, config) {
1167      super(element);
1168      this._items = null;
1169      this._interval = null;
1170      this._activeElement = null;
1171      this._isPaused = false;
1172      this._isSliding = false;
1173      this.touchTimeout = null;
1174      this.touchStartX = 0;
1175      this.touchDeltaX = 0;
1176      this._config = this._getConfig(config);
1177      this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element);
1178      this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;
1179      this._pointerEvent = Boolean(window.PointerEvent);
1180
1181      this._addEventListeners();
1182    } // Getters
1183
1184
1185    static get Default() {
1186      return Default$a;
1187    }
1188
1189    static get NAME() {
1190      return NAME$b;
1191    } // Public
1192
1193
1194    next() {
1195      this._slide(ORDER_NEXT);
1196    }
1197
1198    nextWhenVisible() {
1199      // Don't call next when the page isn't visible
1200      // or the carousel or its parent isn't visible
1201      if (!document.hidden && isVisible(this._element)) {
1202        this.next();
1203      }
1204    }
1205
1206    prev() {
1207      this._slide(ORDER_PREV);
1208    }
1209
1210    pause(event) {
1211      if (!event) {
1212        this._isPaused = true;
1213      }
1214
1215      if (SelectorEngine.findOne(SELECTOR_NEXT_PREV, this._element)) {
1216        triggerTransitionEnd(this._element);
1217        this.cycle(true);
1218      }
1219
1220      clearInterval(this._interval);
1221      this._interval = null;
1222    }
1223
1224    cycle(event) {
1225      if (!event) {
1226        this._isPaused = false;
1227      }
1228
1229      if (this._interval) {
1230        clearInterval(this._interval);
1231        this._interval = null;
1232      }
1233
1234      if (this._config && this._config.interval && !this._isPaused) {
1235        this._updateInterval();
1236
1237        this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval);
1238      }
1239    }
1240
1241    to(index) {
1242      this._activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);
1243
1244      const activeIndex = this._getItemIndex(this._activeElement);
1245
1246      if (index > this._items.length - 1 || index < 0) {
1247        return;
1248      }
1249
1250      if (this._isSliding) {
1251        EventHandler.one(this._element, EVENT_SLID, () => this.to(index));
1252        return;
1253      }
1254
1255      if (activeIndex === index) {
1256        this.pause();
1257        this.cycle();
1258        return;
1259      }
1260
1261      const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV;
1262
1263      this._slide(order, this._items[index]);
1264    } // Private
1265
1266
1267    _getConfig(config) {
1268      config = { ...Default$a,
1269        ...Manipulator.getDataAttributes(this._element),
1270        ...(typeof config === 'object' ? config : {})
1271      };
1272      typeCheckConfig(NAME$b, config, DefaultType$a);
1273      return config;
1274    }
1275
1276    _handleSwipe() {
1277      const absDeltax = Math.abs(this.touchDeltaX);
1278
1279      if (absDeltax <= SWIPE_THRESHOLD) {
1280        return;
1281      }
1282
1283      const direction = absDeltax / this.touchDeltaX;
1284      this.touchDeltaX = 0;
1285
1286      if (!direction) {
1287        return;
1288      }
1289
1290      this._slide(direction > 0 ? DIRECTION_RIGHT : DIRECTION_LEFT);
1291    }
1292
1293    _addEventListeners() {
1294      if (this._config.keyboard) {
1295        EventHandler.on(this._element, EVENT_KEYDOWN, event =>
1295 this._keydown(event));
1296      }
1297
1298      if (this._config.pause === 'hover') {
1299        EventHandler.on(this._element, EVENT_MOUSEENTER, event => this.pause(event));
1300        EventHandler.on(this._element, EVENT_MOUSELEAVE, event => this.cycle(event));
1301      }
1302
1303      if (this._config.touch && this._touchSupported) {
1304        this._addTouchEventListeners();
1305      }
1306    }
1307
1308    _addTouchEventListeners() {
1309      const hasPointerPenTouch = event => {
1310        return this._pointerEvent && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH);
1311      };
1312
1313      const start = event => {
1314        if (hasPointerPenTouch(event)) {
1315          this.touchStartX = event.clientX;
1316        } else if (!this._pointerEvent) {
1317          this.touchStartX = event.touches[0].clientX;
1318        }
1319      };
1320
1321      const move = event => {
1322        // ensure swiping with one touch and not pinching
1323        this.touchDeltaX = event.touches && event.touches.length > 1 ? 0 : event.touches[0].clientX - this.touchStartX;
1324      };
1325
1326      const end = event => {
1327        if (hasPointerPenTouch(event)) {
1328          this.touchDeltaX = event.clientX - this.touchStartX;
1329        }
1330
1331        this._handleSwipe();
1332
1333        if (this._config.pause === 'hover') {
1334          // If it's a touch-enabled device, mouseenter/leave are fired as
1335          // part of the mouse compatibility events on first tap - the carousel
1336          // would stop cycling until user tapped out of it;
1337          // here, we listen for touchend, explicitly pause the carousel
1338          // (as if it's the second time we tap on it, mouseenter compat event
1339          // is NOT fired) and after a timeout (to allow for mouse compatibility
1340          // events to fire) we explicitly restart cycling
1341          this.pause();
1342
1343          if (this.touchTimeout) {
1344            clearTimeout(this.touchTimeout);
1345          }
1346
1347          this.touchTimeout = setTimeout(event => this.cycle(event), TOUCHEVENT_COMPAT_WAIT + this._config.interval);
1348        }
1349      };
1350
1351      SelectorEngine.find(SELECTOR_ITEM_IMG, this._element).forEach(itemImg => {
1352        EventHandler.on(itemImg, EVENT_DRAG_START, event => event.preventDefault());
1353      });
1354
1355      if (this._pointerEvent) {
1356        EventHandler.on(this._element, EVENT_POINTERDOWN, event => start(event));
1357        EventHandler.on(this._element, EVENT_POINTERUP, event => end(event));
1358
1359        this._element.classList.add(CLASS_NAME_POINTER_EVENT);
1360      } else {
1361        EventHandler.on(this._element, EVENT_TOUCHSTART, event => start(event));
1362        EventHandler.on(this._element, EVENT_TOUCHMOVE, event => move(event));
1363        EventHandler.on(this._element, EVENT_TOUCHEND, event => end(event));
1364      }
1365    }
1366
1367    _keydown(event) {
1368      if (/input|textarea/i.test(event.target.tagName)) {
1369        return;
1370      }
1371
1372      const direction = KEY_TO_DIRECTION[event.key];
1373
1374      if (direction) {
1375        event.preventDefault();
1376
1377        this._slide(direction);
1378      }
1379    }
1380
1381    _getItemIndex(element) {
1382      this._items = element && element.parentNode ? SelectorEngine.find(SELECTOR_ITEM, element.parentNode) : [];
1383      return this._items.indexOf(element);
1384    }
1385
1386    _getItemByOrder(order, activeElement) {
1387      const isNext = order === ORDER_NEXT;
1388      return getNextActiveElement(this._items, activeElement, isNext, this._config.wrap);
1389    }
1390
1391    _triggerSlideEvent(relatedTarget, eventDirectionName) {
1392      const targetIndex = this._getItemIndex(relatedTarget);
1393
1394      const fromIndex = this._getItemIndex(SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element));
1395
1396      return EventHandler.trigger(this._element, EVENT_SLIDE, {
1397        relatedTarget,
1398        direction: eventDirectionName,
1399        from: fromIndex,
1400        to: targetIndex
1401      });
1402    }
1403
1404    _setActiveIndicatorElement(element) {
1405      if (this._indicatorsElement) {
1406        const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE$1, this._indicatorsElement);
1407        activeIndicator.classList.remove(CLASS_NAME_ACTIVE$2);
1408        activeIndicator.removeAttribute('aria-current');
1409        const indicators = SelectorEngine.find(SELECTOR_INDICATOR, this._indicatorsElement);
1410
1411        for (let i = 0; i < indicators.length; i++) {
1412          if (Number.parseInt(indicators[i].getAttribute('data-bs-slide-to'), 10) === this._getItemIndex(element)) {
1413            indicators[i].classList.add(CLASS_NAME_ACTIVE$2);
1414            indicators[i].setAttribute('aria-current', 'true');
1415            break;
1416          }
1417        }
1418      }
1419    }
1420
1421    _updateInterval() {
1422      const element = this._activeElement || SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);
1423
1424      if (!element) {
1425        return;
1426      }
1427
1428      const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10);
1429
1430      if (elementInterval) {
1431        this._config.defaultInterval = this._config.defaultInterval || this._config.interval;
1432        this._config.interval = elementInterval;
1433      } else {
1434        this._config.interval = this._config.defaultInterval || this._config.interval;
1435      }
1436    }
1437
1438    _slide(directionOrOrder, element) {
1439      const order = this._directionToOrder(directionOrOrder);
1440
1441      const activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);
1442
1443      const activeElementIndex = this._getItemIndex(activeElement);
1444
1445      const nextElement = element || this._getItemByOrder(order, activeElement);
1446
1447      const nextElementIndex = this._getItemIndex(nextElement);
1448
1449      const isCycling = Boolean(this._interval);
1450      const isNext = order === ORDER_NEXT;
1451      const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END;
1452      const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV;
1453
1454      const eventDirectionName = this._orderToDirection(order);
1455
1456      if (nextElement && nextElement.classList.contains(CLASS_NAME_ACTIVE$2)) {
1457        this._isSliding = false;
1458        return;
1459      }
1460
1461      if (this._isSliding) {
1462        return;
1463      }
1464
1465      const slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName);
1466
1467      if (slideEvent.defaultPrevented) {
1468        return;
1469      }
1470
1471      if (!activeElement || !nextElement) {
1472        // Some weirdness is happening, so we bail
1473        return;
1474      }
1475
1476      this._isSliding = true;
1477
1478      if (isCycling) {
1479        this.pause();
1480      }
1481
1482      this._setActiveIndicatorElement(nextElement);
1483
1484      this._activeElement = nextElement;
1485
1486      const triggerSlidEvent = () => {
1487        EventHandler.trigger(this._element, EVENT_SLID, {
1488          relatedTarget: nextElement,
1489          direction: eventDirectionName,
1490          from: activeElementIndex,
1491          to: nextElementIndex
1492        });
1493      };
1494
1495      if (this._element.classList.contains(CLASS_NAME_SLIDE)) {
1496        nextElement.classList.add(orderClassName);
1497        reflow(nextElement);
1498        activeElement.classList.add(directionalClassName);
1499        nextElement.classList.add(directionalClassName);
1500
1501        const completeCallBack = () => {
1502          nextElement.classList.remove(directionalClassName, orderClassName);
1503          nextElement.classList.add(CLASS_NAME_ACTIVE$2);
1504          activeElement.classList.remove(CLASS_NAME_ACTIVE$2, orderClassName, directionalClassName);
1505          this._isSliding = false;
1506          setTimeout(triggerSlidEvent, 0);
1507        };
1508
1509        this._queueCallback(completeCallBack, activeElement, true);
1510      } else {
1511        activeElement.classList.remove(CLASS_NAME_ACTIVE$2);
1512        nextElement.classList.add(CLASS_NAME_ACTIVE$2);
1513        this._isSliding = false;
1514        triggerSlidEvent();
1515      }
1516
1517      if (isCycling) {
1518        this.cycle();
1519      }
1520    }
1521
1522    _directionToOrder(direction) {
1523      if (![DIRECTION_RIGHT, DIRECTION_LEFT].includes(direction)) {
1524        return direction;
1525      }
1526
1527      if (isRTL()) {
1528        return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT;
1529      }
1530
1531      return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV;
1532    }
1533
1534    _orderToDirection(order) {
1535      if (![ORDER_NEXT, ORDER_PREV].includes(order)) {
1536        return order;
1537      }
1538
1539      if (isRTL()) {
1540        return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT;
1541      }
1542
1543      return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT;
1544    } // Static
1545
1546
1547    static carouselInterface(element, config) {
1548      const data = Carousel.getOrCreateInstance(element, config);
1549      let {
1550        _config
1551      } = data;
1552
1553      if (typeof config === 'object') {
1554        _config = { ..._config,
1555          ...config
1556        };
1557      }
1558
1559      const action = typeof config === 'string' ? config : _config.slide;
1560
1561      if (typeof config === 'number') {
1562        data.to(config);
1563      } else if (typeof action === 'string') {
1564        if (typeof data[action] === 'undefined') {
1565          throw new TypeError(`No method named "${action}"`);
1566        }
1567
1568        data[action]();
1569      } else if (_config.interval && _config.ride) {
1570        data.pause();
1571        data.cycle();
1572      }
1573    }
1574
1575    static jQueryInterface(config) {
1576      return this.each(function () {
1577        Carousel.carouselInterface(this, config);
1578      });
1579    }
1580
1581    static dataApiClickHandler(event) {
1582      const target = getElementFromSelector(this);
1583
1584      if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {
1585        return;
1586      }
1587
1588      const config = { ...Manipulator.getDataAttributes(target),
1589        ...Manipulator.getDataAttributes(this)
1590      };
1591      const slideIndex = this.getAttribute('data-bs-slide-to');
1592
1593      if (slideIndex) {
1594        config.interval = false;
1595      }
1596
1597      Carousel.carouselInterface(target, config);
1598
1599      if (slideIndex) {
1600        Carousel.getInstance(target).to(slideIndex);
1601      }
1602
1603      event.preventDefault();
1604    }
1605
1606  }
1607  /**
1608   * ------------------------------------------------------------------------
1609   * Data Api implementation
1610   * ------------------------------------------------------------------------
1611   */
1612
1613
1614  EventHandler.on(document, EVENT_CLICK_DATA_API$5, SELECTOR_DATA_SLIDE, Carousel.dataApiClickHandler);
1615  EventHandler.on(window, EVENT_LOAD_DATA_API$2, () => {
1616    const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE);
1617
1618    for (let i = 0, len = carousels.length; i < len; i++) {
1619      Carousel.carouselInterface(carousels[i], Carousel.getInstance(carousels[i]));
1620    }
1621  });
1622  /**
1623   * ------------------------------------------------------------------------
1624   * jQuery
1625   * ------------------------------------------------------------------------
1626   * add .Carousel to jQuery only if jQuery is present
1627   */
1628
1629  defineJQueryPlugin(Carousel);
1630
1631  /**
1632   * --------------------------------------------------------------------------
1633   * Bootstrap (v5.1.3): collapse.js
1634   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
1635   * --------------------------------------------------------------------------
1636   */
1637  /**
1638   * ------------------------------------------------------------------------
1639   * Constants
1640   * ------------------------------------------------------------------------
1641   */
1642
1643  const NAME$a = 'collapse';
1644  const DATA_KEY$9 = 'bs.collapse';
1645  const EVENT_KEY$9 = `.${DATA_KEY$9}`;
1646  const DATA_API_KEY$5 = '.data-api';
1647  const Default$9 = {
1648    toggle: true,
1649    parent: null
1650  };
1651  const DefaultType$9 = {
1652    toggle: 'boolean',
1653    parent: '(null|element)'
1654  };
1655  const EVENT_SHOW$5 = `show${EVENT_KEY$9}`;
1656  const EVENT_SHOWN$5 = `shown${EVENT_KEY$9}`;
1657  const EVENT_HIDE$5 = `hide${EVENT_KEY$9}`;
1658  const EVENT_HIDDEN$5 = `hidden${EVENT_KEY$9}`;
1659  const EVENT_CLICK_DATA_API$4 = `click${EVENT_KEY$9}${DATA_API_KEY$5}`;
1660  const CLASS_NAME_SHOW$7 = 'show';
1661  const CLASS_NAME_COLLAPSE = 'collapse';
1662  const CLASS_NAME_COLLAPSING = 'collapsing';
1663  const CLASS_NAME_COLLAPSED = 'collapsed';
1664  const CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`;
1665  const CLASS_NAME_HORIZONTAL = 'collapse-horizontal';
1666  const WIDTH = 'width';
1667  const HEIGHT = 'height';
1668  const SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing';
1669  const SELECTOR_DATA_TOGGLE$4 = '[data-bs-toggle="collapse"]';
1670  /**
1671   * ------------------------------------------------------------------------
1672   * Class Definition
1673   * ------------------------------------------------------------------------
1674   */
1675
1676  class Collapse extends BaseComponent {
1677    constructor(element, config) {
1678      super(element);
1679      this._isTransitioning = false;
1680      this._config = this._getConfig(config);
1681      this._triggerArray = [];
1682      const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE$4);
1683
1684      for (let i = 0, len = toggleList.length; i < len; i++) {
1685        const elem = toggleList[i];
1686        const selector = getSelectorFromElement(elem);
1687        const filterElement = SelectorEngine.find(selector).filter(foundElem => foundElem === this._element);
1688
1689        if (selector !== null && filterElement.length) {
1690          this._selector = selector;
1691
1692          this._triggerArray.push(elem);
1693        }
1694      }
1695
1696      this._initializeChildren();
1697
1698      if (!this._config.parent) {
1699        this._addAriaAndCollapsedClass(this._triggerArray, this._isShown());
1700      }
1701
1702      if (this._config.toggle) {
1703        this.toggle();
1704      }
1705    } // Getters
1706
1707
1708    static get Default() {
1709      return Default$9;
1710    }
1711
1712    static get NAME() {
1713      return NAME$a;
1714    } // Public
1715
1716
1717    toggle() {
1718      if (this._isShown()) {
1719        this.hide();
1720      } else {
1721        this.show();
1722      }
1723    }
1724
1725    show() {
1726      if (this._isTransitioning || this._isShown()) {
1727        return;
1728      }
1729
1730      let actives = [];
1731      let activesData;
1732
1733      if (this._config.parent) {
1734        const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent);
1735        actives = SelectorEngine.find(SELECTOR_ACTIVES, this._config.parent).filter(elem => !children.includes(elem)); // remove children if greater depth
1736      }
1737
1738      const container = SelectorEngine.findOne(this._selector);
1739
1740      if (actives.length) {
1741        const tempActiveData = actives.find(elem => container !== elem);
1742        activesData = tempActiveData ? Collapse.getInstance(tempActiveData) : null;
1743
1744        if (activesData && activesData._isTransitioning) {
1745          return;
1746        }
1747      }
1748
1749      const startEvent = EventHandler.trigger(this._element, EVENT_SHOW$5);
1750
1751      if (startEvent.defaultPrevented) {
1752        return;
1753      }
1754
1755      actives.forEach(elemActive => {
1756        if (container !== elemActive) {
1757          Collapse.getOrCreateInstance(elemActive, {
1758            toggle: false
1759          }).hide();
1760        }
1761
1762        if (!activesData) {
1763          Data.set(elemActive, DATA_KEY$9, null);
1764        }
1765      });
1766
1767      const dimension = this._getDimension();
1768
1769      this._element.classList.remove(CLASS_NAME_COLLAPSE);
1770
1771      this._element.classList.add(CLASS_NAME_COLLAPSING);
1772
1773      this._element.style[dimension] = 0;
1774
1775      this._addAriaAndCollapsedClass(this._triggerArray, true);
1776
1777      this._isTransitioning = true;
1778
1779      const complete = () => {
1780        this._isTransitioning = false;
1781
1782        this._element.classList.remove(CLASS_NAME_COLLAPSING);
1783
1784        this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7);
1785
1786        this._element.style[dimension] = '';
1787        EventHandler.trigger(this._element, EVENT_SHOWN$5);
1788      };
1789
1790      const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);
1791      const scrollSize = `scroll${capitalizedDimension}`;
1792
1793      this._queueCallback(complete, this._element, true);
1794
1795      this._element.style[dimension] = `${this._element[scrollSize]}px`;
1796    }
1797
1798    hide() {
1799      if (this._isTransitioning || !this._isShown()) {
1800        return;
1801      }
1802
1803      const startEvent = EventHandler.trigger(this._element, EVENT_HIDE$5);
1804
1805      if (startEvent.defaultPrevented) {
1806        return;
1807      }
1808
1809      const dimension = this._getDimension();
1810
1811      this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`;
1812      reflow(this._element);
1813
1814      this._element.classList.add(CLASS_NAME_COLLAPSING);
1815
1816      this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7);
1817
1818      const triggerArrayLength = this._triggerArray.length;
1819
1820      for (let i = 0; i < triggerArrayLength; i++) {
1821        const trigger = this._triggerArray[i];
1822        const elem = getElementFromSelector(trigger);
1823
1824        if (elem && !this._isShown(elem)) {
1825          this._addAriaAndCollapsedClass([trigger], false);
1826        }
1827      }
1828
1829      this._isTransitioning = true;
1830
1831      const complete = () => {
1832        this._isTransitioning = false;
1833
1834        this._element.classList.remove(CLASS_NAME_COLLAPSING);
1835
1836        this._element.classList.add(CLASS_NAME_COLLAPSE);
1837
1838        EventHandler.trigger(this._element, EVENT_HIDDEN$5);
1839      };
1840
1841      this._element.style[dimension] = '';
1842
1843      this._queueCallback(complete, this._element, true);
1844    }
1845
1846    _isShown(element = this._element) {
1847      return element.classList.contains(CLASS_NAME_SHOW$7);
1848    } // Private
1849
1850
1851    _getConfig(config) {
1852      config = { ...Default$9,
1853        ...Manipulator.getDataAttributes(this._element),
1854        ...config
1855      };
1856      config.toggle = Boolean(config.toggle); // Coerce string values
1857
1858      config.parent = getElement(config.parent);
1859      typeCheckConfig(NAME$a, config, DefaultType$9);
1860      return config;
1861    }
1862
1863    _getDimension() {
1864      return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT;
1865    }
1866
1867    _initializeChildren() {
1868      if (!this._config.parent) {
1869        return;
1870      }
1871
1872      const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent);
1873      SelectorEngine.find(SELECTOR_DATA_TOGGLE$4, this._config.parent).filter(elem => !children.includes(elem)).forEach(element => {
1874        const selected = getElementFromSelector(element);
1875
1876        if (selected) {
1877          this._addAriaAndCollapsedClass([element], this._isShown(selected));
1878        }
1879      });
1880    }
1881
1882    _addAriaAndCollapsedClass(triggerArray, isOpen) {
1883      if (!triggerArray.length) {
1884        return;
1885      }
1886
1887      triggerArray.forEach(elem => {
1888        if (isOpen) {
1889          elem.classList.remove(CLASS_NAME_COLLAPSED);
1890        } else {
1891          elem.classList.add(CLASS_NAME_COLLAPSED);
1892        }
1893
1894        elem.setAttribute('aria-expanded', isOpen);
1895      });
1896    } // Static
1897
1898
1899    static jQueryInterface(config) {
1900      return this.each(function () {
1901        const _config = {};
1902
1903        if (typeof config === 'string' && /show|hide/.test(config)) {
1904          _config.toggle = false;
1905        }
1906
1907        const data = Collapse.getOrCreateInstance(this, _config);
1908
1909        if (typeof config === 'string') {
1910          if (typeof data[config] === 'undefined') {
1911            throw new TypeError(`No method named "${config}"`);
1912          }
1913
1914          data[config]();
1915        }
1916      });
1917    }
1918
1919  }
1920  /**
1921   * ------------------------------------------------------------------------
1922   * Data Api implementation
1923   * ------------------------------------------------------------------------
1924   */
1925
1926
1927  EventHandler.on(document, EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$4, function (event) {
1928    // preventDefault only for <a> elements (which change the URL) not inside the collapsible element
1929    if (event.target.tagName === 'A' || event.delegateTarget && event.delegateTarget.tagName === 'A') {
1930      event.preventDefault();
1931    }
1932
1933    const selector = getSelectorFromElement(this);
1934    const selectorElements = SelectorEngine.find(selector);
1935    selectorElements.forEach(element => {
1936      Collapse.getOrCreateInstance(element, {
1937        toggle: false
1938      }).toggle();
1939    });
1940  });
1941  /**
1942   * ------------------------------------------------------------------------
1943   * jQuery
1944   * ------------------------------------------------------------------------
1945   * add .Collapse to jQuery only if jQuery is present
1946   */
1947
1948  defineJQueryPlugin(Collapse);
1949
1950  /**
1951   * --------------------------------------------------------------------------
1952   * Bootstrap (v5.1.3): dropdown.js
1953   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
1954   * --------------------------------------------------------------------------
1955   */
1956  /**
1957   * ------------------------------------------------------------------------
1958   * Constants
1959   * ------------------------------------------------------------------------
1960   */
1961
1962  const NAME$9 = 'dropdown';
1963  const DATA_KEY$8 = 'bs.dropdown';
1964  const EVENT_KEY$8 = `.${DATA_KEY$8}`;
1965  const DATA_API_KEY$4 = '.data-api';
1966  const ESCAPE_KEY$2 = 'Escape';
1967  const SPACE_KEY = 'Space';
1968  const TAB_KEY$1 = 'Tab';
1969  const ARROW_UP_KEY = 'ArrowUp';
1970  const ARROW_DOWN_KEY = 'ArrowDown';
1971  const RIGHT_MOUSE_BUTTON = 2; // MouseEvent.button value for the secondary button, usually the right button
1972
1973  const REGEXP_KEYDOWN = new RegExp(`${ARROW_UP_KEY}|${ARROW_DOWN_KEY}|${ESCAPE_KEY$2}`);
1974  const EVENT_HIDE$4 = `hide${EVENT_KEY$8}`;
1975  const EVENT_HIDDEN$4 = `hidden${EVENT_KEY$8}`;
1976  const EVENT_SHOW$4 = `show${EVENT_KEY$8}`;
1977  const EVENT_SHOWN$4 = `shown${EVENT_KEY$8}`;
1978  const EVENT_CLICK_DATA_API$3 = `click${EVENT_KEY$8}${DATA_API_KEY$4}`;
1979  const EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY$8}${DATA_API_KEY$4}`;
1980  const EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY$8}${DATA_API_KEY$4}`;
1981  const CLASS_NAME_SHOW$6 = 'show';
1982  const CLASS_NAME_DROPUP = 'dropup';
1983  const CLASS_NAME_DROPEND = 'dropend';
1984  const CLASS_NAME_DROPSTART = 'dropstart';
1985  const CLASS_NAME_NAVBAR = 'navbar';
1986  const SELECTOR_DATA_TOGGLE$3 = '[data-bs-toggle="dropdown"]';
1987  const SELECTOR_MENU = '.dropdown-menu';
1988  const SELECTOR_NAVBAR_NAV = '.navbar-nav';
1989  const SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)';
1990  const PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start';
1991  const PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end';
1992  const PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start';
1993  const PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end';
1994  const PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start';
1995  const PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start';
1996  const Default$8 = {
1997    offset: [0, 2],
1998    boundary: 'clippingParents',
1999    reference: 'toggle',
2000    display: 'dynamic',
2001    popperConfig: null,
2002    autoClose: true
2003  };
2004  const DefaultType$8 = {
2005    offset: '(array|string|function)',
2006    boundary: '(string|element)',
2007    reference: '(string|element|object)',
2008    display: 'string',
2009    popperConfig: '(null|object|function)',
2010    autoClose: '(boolean|string)'
2011  };
2012  /**
2013   * ------------------------------------------------------------------------
2014   * Class Definition
2015   * ------------------------------------------------------------------------
2016   */
2017
2018  class Dropdown extends BaseComponent {
2019    constructor(element, config) {
2020      super(element);
2021      this._popper = null;
2022      this._config = this._getConfig(config);
2023      this._menu = this._getMenuElement();
2024      this._inNavbar = this._detectNavbar();
2025    } // Getters
2026
2027
2028    static get Default() {
2029      return Default$8;
2030    }
2031
2032    static get DefaultType() {
2033      return DefaultType$8;
2034    }
2035
2036    static get NAME() {
2037      return NAME$9;
2038    } // Public
2039
2040
2041    toggle() {
2042      return this._isShown() ? this.hide() : this.show();
2043    }
2044
2045    show() {
2046      if (isDisabled(this._element) || this._isShown(this._menu)) {
2047        return;
2048      }
2049
2050      const relatedTarget = {
2051        relatedTarget: this._element
2052      };
2053      const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$4, relatedTarget);
2054
2055      if (showEvent.defaultPrevented) {
2056        return;
2057      }
2058
2059      const parent = Dropdown.getParentFromElement(this._element); // Totally disable Popper for Dropdowns in Navbar
2060
2061      if (this._inNavbar) {
2062        Manipulator.setDataAttribute(this._menu, 'popper', 'none');
2063      } else {
2064        this._createPopper(parent);
2065      } // If this is a touch-enabled device we add extra
2066      // empty mouseover listeners to the body's immediate children;
2067      // only needed because of broken event delegation on iOS
2068      // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
2069
2070
2071      if ('ontouchstart' in document.documentElement && !parent.closest(SELECTOR_NAVBAR_NAV)) {
2072        [].concat(...document.body.children).forEach(elem => EventHandler.on(elem, 'mouseover', noop));
2073      }
2074
2075      this._element.focus();
2076
2077      this._element.setAttribute('aria-expanded', true);
2078
2079      this._menu.classList.add(CLASS_NAME_SHOW$6);
2080
2081      this._element.classList.add(CLASS_NAME_SHOW$6);
2082
2083      EventHandler.trigger(this._element, EVENT_SHOWN$4, relatedTarget);
2084    }
2085
2086    hide() {
2087      if (isDisabled(this._element) || !this._isShown(this._menu)) {
2088        return;
2089      }
2090
2091      const relatedTarget = {
2092        relatedTarget: this._element
2093      };
2094
2095      this._completeHide(relatedTarget);
2096    }
2097
2098    dispose() {
2099      if (this._popper) {
2100        this._popper.destroy();
2101      }
2102
2103      super.dispose();
2104    }
2105
2106    update() {
2107      this._inNavbar = this._detectNavbar();
2108
2109      if (this._popper) {
2110        this._popper.update();
2111      }
2112    } // Private
2113
2114
2115    _completeHide(relatedTarget) {
2116      const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$4, relatedTarget);
2117
2118      if (hideEvent.defaultPrevented) {
2119        return;
2120      } // If this is a touch-enabled device we remove the extra
2121      // empty mouseover listeners we added for iOS support
2122
2123
2124      if ('ontouchstart' in document.documentElement) {
2125        [].concat(...document.body.children).forEach(elem => EventHandler.off(elem, 'mouseover', noop));
2126      }
2127
2128      if (this._popper) {
2129        this._popper.destroy();
2130      }
2131
2132      this._menu.classList.remove(CLASS_NAME_SHOW$6);
2133
2134      this._element.classList.remove(CLASS_NAME_SHOW$6);
2135
2136      this._element.setAttribute('aria-expanded', 'false');
2137
2138      Manipulator.removeDataAttribute(this._menu, 'popper');
2139      EventHandler.trigger(this._element, EVENT_HIDDEN$4, relatedTarget);
2140    }
2141
2142    _getConfig(config) {
2143      config = { ...this.constructor.Default,
2144        ...Manipulator.getDataAttributes(this._element),
2145        ...config
2146      };
2147      typeCheckConfig(NAME$9, config, this.constructor.DefaultType);
2148
2149      if (typeof config.reference === 'object' && !isElement(config.reference) && typeof config.reference.getBoundingClientRect !== 'function') {
2150        // Popper virtual elements require a getBoundingClientRect method
2151        throw new TypeError(`${NAME$9.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);
2152      }
2153
2154      return config;
2155    }
2156
2157    _createPopper(parent) {
2158      if (typeof Popper__namespace === 'undefined') {
2159        throw new TypeError('Bootstrap\'s dropdowns require Popper (https://popper.js.org)');
2160      }
2161
2162      let referenceElement = this._element;
2163
2164      if (this._config.reference === 'parent') {
2165        referenceElement = parent;
2166      } else if (isElement(this._config.reference)) {
2167        referenceElement = getElement(this._config.reference);
2168      } else if (typeof this._config.reference === 'object') {
2169        referenceElement = this._config.reference;
2170      }
2171
2172      const popperConfig = this._getPopperConfig();
2173
2174      const isDisplayStatic = popperConfig.modifiers.find(modifier => modifier.name === 'applyStyles' && modifier.enabled === false);
2175      this._popper = Popper__namespace.createPopper(referenceElement, this._menu, popperConfig);
2176
2177      if (isDisplayStatic) {
2178        Manipulator.setDataAttribute(this._menu, 'popper', 'static');
2179      }
2180    }
2181
2182    _isShown(element = this._element) {
2183      return element.classList.contains(CLASS_NAME_SHOW$6);
2184    }
2185
2186    _getMenuElement() {
2187      return SelectorEngine.next(this._element, SELECTOR_MENU)[0];
2188    }
2189
2190    _getPlacement() {
2191      const parentDropdown = this._element.parentNode;
2192
2193      if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {
2194        return PLACEMENT_RIGHT;
2195      }
2196
2197      if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {
2198        return PLACEMENT_LEFT;
2199      } // We need to trim the value because custom properties can also include spaces
2200
2201
2202      const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end';
2203
2204      if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {
2205        return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP;
2206      }
2207
2208      return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM;
2209    }
2210
2211    _detectNavbar() {
2212      return this._element.closest(`.${CLASS_NAME_NAVBAR}`) !== null;
2213    }
2214
2215    _getOffset() {
2216      const {
2217        offset
2218      } = this._config;
2219
2220      if (typeof offset === 'string') {
2221        return offset.split(',').map(val => Number.parseInt(val, 10));
2222      }
2223
2224      if (typeof offset === 'function') {
2225        return popperData => offset(popperData, this._element);
2226      }
2227
2228      return offset;
2229    }
2230
2231    _getPopperConfig() {
2232      const defaultBsPopperConfig = {
2233        placement: this._getPlacement(),
2234        modifiers: [{
2235          name: 'preventOverflow',
2236          options: {
2237            boundary: this._config.boundary
2238          }
2239        }, {
2240          name: 'offset',
2241          options: {
2242            offset: this._getOffset()
2243          }
2244        }]
2245      }; // Disable Popper if we have a static display
2246
2247      if (this._config.display === 'static') {
2248        defaultBsPopperConfig.modifiers = [{
2249          name: 'applyStyles',
2250          enabled: false
2251        }];
2252      }
2253
2254      return { ...defaultBsPopperConfig,
2255        ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)
2256      };
2257    }
2258
2259    _selectMenuItem({
2260      key,
2261      target
2262    }) {
2263      const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(isVisible);
2264
2265      if (!items.length) {
2266        return;
2267      } // if target isn't included in items (e.g. when expanding the dropdown)
2268      // allow cycling to get the last item in case key equals ARROW_UP_KEY
2269
2270
2271      getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus();
2272    } // Static
2273
2274
2275    static jQueryInterface(config) {
2276      return this.each(function () {
2277        const data = Dropdown.getOrCreateInstance(this, config);
2278
2279        if (typeof config !== 'string') {
2280          return;
2281        }
2282
2283        if (typeof data[config] === 'undefined') {
2284          throw new TypeError(`No method named "${config}"`);
2285        }
2286
2287        data[config]();
2288      });
2289    }
2290
2291    static clearMenus(event) {
2292      if (event && (event.button === RIGHT_MOUSE_BUTTON || event.type === 'keyup' && event.key !== TAB_KEY$1)) {
2293        return;
2294      }
2295
2296      const toggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE$3);
2297
2298      for (let i = 0, len = toggles.length; i < len; i++) {
2299        const context = Dropdown.getInstance(toggles[i]);
2300
2301        if (!context || context._config.autoClose === false) {
2302          continue;
2303        }
2304
2305        if (!context._isShown()) {
2306          continue;
2307        }
2308
2309        const relatedTarget = {
2310          relatedTarget: context._element
2311        };
2312
2313        if (event) {
2314          const composedPath = event.composedPath();
2315          const isMenuTarget = composedPath.includes(context._menu);
2316
2317          if (composedPath.includes(context._element) || context._config.autoClose === 'inside' && !isMenuTarget || context._config.autoClose === 'outside' && isMenuTarget) {
2318            continue;
2319          } // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu
2320
2321
2322          if (context._menu.contains(event.target) && (event.type === 'keyup' && event.key === TAB_KEY$1 || /input|select|option|textarea|form/i.test(event.target.tagName))) {
2323            continue;
2324          }
2325
2326          if (event.type === 'click') {
2327            relatedTarget.clickEvent = event;
2328          }
2329        }
2330
2331        context._completeHide(relatedTarget);
2332      }
2333    }
2334
2335    static getParentFromElement(element) {
2336      return getElementFromSelector(element) || element.parentNode;
2337    }
2338
2339    static dataApiKeydownHandler(event) {
2340      // If not input/textarea:
2341      //  - And not a key in REGEXP_KEYDOWN => not a dropdown command
2342      // If input/textarea:
2343      //  - If space key => not a dropdown command
2344      //  - If key is other than escape
2345      //    - If key is not up or down => not a dropdown command
2346      //    - If trigger inside the menu => not a dropdown command
2347      if (/input|textarea/i.test(event.target.tagName) ? event.key === SPACE_KEY || event.key !== ESCAPE_KEY$2 && (event.key !== ARROW_DOWN_KEY && event.key !== ARROW_UP_KEY || event.target.closest(SELECTOR_MENU)) : !REGEXP_KEYDOWN.test(event.key)) {
2348        return;
2349      }
2350
2351      const isActive = this.classList.contains(CLASS_NAME_SHOW$6);
2352
2353      if (!isActive && event.key === ESCAPE_KEY$2) {
2354        return;
2355      }
2356
2357      event.preventDefault();
2358      event.stopPropagation();
2359
2360      if (isDisabled(this)) {
2361        return;
2362      }
2363
2364      const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE$3) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE$3)[0];
2365      const instance = Dropdown.getOrCreateInstance(getToggleButton);
2366
2367      if (event.key === ESCAPE_KEY$2) {
2368        instance.hide();
2369        return;
2370      }
2371
2372      if (event.key === ARROW_UP_KEY || event.key === ARROW_DOWN_KEY) {
2373        if (!isActive) {
2374          instance.show();
2375        }
2376
2377        instance._selectMenuItem(event);
2378
2379        return;
2380      }
2381
2382      if (!isActive || event.key === SPACE_KEY) {
2383        Dropdown.clearMenus();
2384      }
2385    }
2386
2387  }
2388  /**
2389   * ------------------------------------------------------------------------
2390   * Data Api implementation
2391   * ------------------------------------------------------------------------
2392   */
2393
2394
2395  EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$3, Dropdown.dataApiKeydownHandler);
2396  EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler);
2397  EventHandler.on(document, EVENT_CLICK_DATA_API$3, Dropdown.clearMenus);
2398  EventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus);
2399  EventHandler.on(document, EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$3, function (event) {
2400    event.preventDefault();
2401    Dropdown.getOrCreateInstance(this).toggle();
2402  });
2403  /**
2404   * ------------------------------------------------------------------------
2405   * jQuery
2406   * ------------------------------------------------------------------------
2407   * add .Dropdown to jQuery only if jQuery is present
2408   */
2409
2410  defineJQueryPlugin(Dropdown);
2411
2412  /**
2413   * --------------------------------------------------------------------------
2414   * Bootstrap (v5.1.3): util/scrollBar.js
2415   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
2416   * --------------------------------------------------------------------------
2417   */
2418  const SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top';
2419  const SELECTOR_STICKY_CONTENT = '.sticky-top';
2420
2421  class ScrollBarHelper {
2422    constructor() {
2423      this._element = document.body;
2424    }
2425
2426    getWidth() {
2427      // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes
2428      const documentWidth = document.documentElement.clientWidth;
2429      return Math.abs(window.innerWidth - documentWidth);
2430    }
2431
2432    hide() {
2433      const width = this.getWidth();
2434
2435      this._disableOverFlow(); // give padding to element to balance the hidden scrollbar width
2436
2437
2438      this._setElementAttributes(this._element, 'paddingRight', calculatedValue => calculatedValue + width);
2438 // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth
2439
2440
2441      this._setElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight', calculatedValue => calculatedValue + width);
2442
2443      this._setElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight', calculatedValue => calculatedValue - width);
2444    }
2445
2446    _disableOverFlow() {
2447      this._saveInitialAttribute(this._element, 'overflow');
2448
2449      this._element.style.overflow = 'hidden';
2450    }
2451
2452    _setElementAttributes(selector, styleProp, callback) {
2453      const scrollbarWidth = this.getWidth();
2454
2455      const manipulationCallBack = element => {
2456        if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {
2457          return;
2458        }
2459
2460        this._saveInitialAttribute(element, styleProp);
2461
2462        const calculatedValue = window.getComputedStyle(element)[styleProp];
2463        element.style[styleProp] = `${callback(Number.parseFloat(calculatedValue))}px`;
2464      };
2465
2466      this._applyManipulationCallback(selector, manipulationCallBack);
2467    }
2468
2469    reset() {
2470      this._resetElementAttributes(this._element, 'overflow');
2471
2472      this._resetElementAttributes(this._element, 'paddingRight');
2473
2474      this._resetElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight');
2475
2476      this._resetElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight');
2477    }
2478
2479    _saveInitialAttribute(element, styleProp) {
2480      const actualValue = element.style[styleProp];
2481
2482      if (actualValue) {
2483        Manipulator.setDataAttribute(element, styleProp, actualValue);
2484      }
2485    }
2486
2487    _resetElementAttributes(selector, styleProp) {
2488      const manipulationCallBack = element => {
2489        const value = Manipulator.getDataAttribute(element, styleProp);
2490
2491        if (typeof value === 'undefined') {
2492          element.style.removeProperty(styleProp);
2493        } else {
2494          Manipulator.removeDataAttribute(element, styleProp);
2495          element.style[styleProp] = value;
2496        }
2497      };
2498
2499      this._applyManipulationCallback(selector, manipulationCallBack);
2500    }
2501
2502    _applyManipulationCallback(selector, callBack) {
2503      if (isElement(selector)) {
2504        callBack(selector);
2505      } else {
2506        SelectorEngine.find(selector, this._element).forEach(callBack);
2507      }
2508    }
2509
2510    isOverflowing() {
2511      return this.getWidth() > 0;
2512    }
2513
2514  }
2515
2516  /**
2517   * --------------------------------------------------------------------------
2518   * Bootstrap (v5.1.3): util/backdrop.js
2519   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
2520   * --------------------------------------------------------------------------
2521   */
2522  const Default$7 = {
2523    className: 'modal-backdrop',
2524    isVisible: true,
2525    // if false, we use the backdrop helper without adding any element to the dom
2526    isAnimated: false,
2527    rootElement: 'body',
2528    // give the choice to place backdrop under different elements
2529    clickCallback: null
2530  };
2531  const DefaultType$7 = {
2532    className: 'string',
2533    isVisible: 'boolean',
2534    isAnimated: 'boolean',
2535    rootElement: '(element|string)',
2536    clickCallback: '(function|null)'
2537  };
2538  const NAME$8 = 'backdrop';
2539  const CLASS_NAME_FADE$4 = 'fade';
2540  const CLASS_NAME_SHOW$5 = 'show';
2541  const EVENT_MOUSEDOWN = `mousedown.bs.${NAME$8}`;
2542
2543  class Backdrop {
2544    constructor(config) {
2545      this._config = this._getConfig(config);
2546      this._isAppended = false;
2547      this._element = null;
2548    }
2549
2550    show(callback) {
2551      if (!this._config.isVisible) {
2552        execute(callback);
2553        return;
2554      }
2555
2556      this._append();
2557
2558      if (this._config.isAnimated) {
2559        reflow(this._getElement());
2560      }
2561
2562      this._getElement().classList.add(CLASS_NAME_SHOW$5);
2563
2564      this._emulateAnimation(() => {
2565        execute(callback);
2566      });
2567    }
2568
2569    hide(callback) {
2570      if (!this._config.isVisible) {
2571        execute(callback);
2572        return;
2573      }
2574
2575      this._getElement().classList.remove(CLASS_NAME_SHOW$5);
2576
2577      this._emulateAnimation(() => {
2578        this.dispose();
2579        execute(callback);
2580      });
2581    } // Private
2582
2583
2584    _getElement() {
2585      if (!this._element) {
2586        const backdrop = document.createElement('div');
2587        backdrop.className = this._config.className;
2588
2589        if (this._config.isAnimated) {
2590          backdrop.classList.add(CLASS_NAME_FADE$4);
2591        }
2592
2593        this._element = backdrop;
2594      }
2595
2596      return this._element;
2597    }
2598
2599    _getConfig(config) {
2600      config = { ...Default$7,
2601        ...(typeof config === 'object' ? config : {})
2602      }; // use getElement() with the default "body" to get a fresh Element on each instantiation
2603
2604      config.rootElement = getElement(config.rootElement);
2605      typeCheckConfig(NAME$8, config, DefaultType$7);
2606      return config;
2607    }
2608
2609    _append() {
2610      if (this._isAppended) {
2611        return;
2612      }
2613
2614      this._config.rootElement.append(this._getElement());
2615
2616      EventHandler.on(this._getElement(), EVENT_MOUSEDOWN, () => {
2617        execute(this._config.clickCallback);
2618      });
2619      this._isAppended = true;
2620    }
2621
2622    dispose() {
2623      if (!this._isAppended) {
2624        return;
2625      }
2626
2627      EventHandler.off(this._element, EVENT_MOUSEDOWN);
2628
2629      this._element.remove();
2630
2631      this._isAppended = false;
2632    }
2633
2634    _emulateAnimation(callback) {
2635      executeAfterTransition(callback, this._getElement(), this._config.isAnimated);
2636    }
2637
2638  }
2639
2640  /**
2641   * --------------------------------------------------------------------------
2642   * Bootstrap (v5.1.3): util/focustrap.js
2643   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
2644   * --------------------------------------------------------------------------
2645   */
2646  const Default$6 = {
2647    trapElement: null,
2648    // The element to trap focus inside of
2649    autofocus: true
2650  };
2651  const DefaultType$6 = {
2652    trapElement: 'element',
2653    autofocus: 'boolean'
2654  };
2655  const NAME$7 = 'focustrap';
2656  const DATA_KEY$7 = 'bs.focustrap';
2657  const EVENT_KEY$7 = `.${DATA_KEY$7}`;
2658  const EVENT_FOCUSIN$1 = `focusin${EVENT_KEY$7}`;
2659  const EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY$7}`;
2660  const TAB_KEY = 'Tab';
2661  const TAB_NAV_FORWARD = 'forward';
2662  const TAB_NAV_BACKWARD = 'backward';
2663
2664  class FocusTrap {
2665    constructor(config) {
2666      this._config = this._getConfig(config);
2667      this._isActive = false;
2668      this._lastTabNavDirection = null;
2669    }
2670
2671    activate() {
2672      const {
2673        trapElement,
2674        autofocus
2675      } = this._config;
2676
2677      if (this._isActive) {
2678        return;
2679      }
2680
2681      if (autofocus) {
2682        trapElement.focus();
2683      }
2684
2685      EventHandler.off(document, EVENT_KEY$7); // guard against infinite focus loop
2686
2687      EventHandler.on(document, EVENT_FOCUSIN$1, event => this._handleFocusin(event));
2688      EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event));
2689      this._isActive = true;
2690    }
2691
2692    deactivate() {
2693      if (!this._isActive) {
2694        return;
2695      }
2696
2697      this._isActive = false;
2698      EventHandler.off(document, EVENT_KEY$7);
2699    } // Private
2700
2701
2702    _handleFocusin(event) {
2703      const {
2704        target
2705      } = event;
2706      const {
2707        trapElement
2708      } = this._config;
2709
2710      if (target === document || target === trapElement || trapElement.contains(target)) {
2711        return;
2712      }
2713
2714      const elements = SelectorEngine.focusableChildren(trapElement);
2715
2716      if (elements.length === 0) {
2717        trapElement.focus();
2718      } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {
2719        elements[elements.length - 1].focus();
2720      } else {
2721        elements[0].focus();
2722      }
2723    }
2724
2725    _handleKeydown(event) {
2726      if (event.key !== TAB_KEY) {
2727        return;
2728      }
2729
2730      this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD;
2731    }
2732
2733    _getConfig(config) {
2734      config = { ...Default$6,
2735        ...(typeof config === 'object' ? config : {})
2736      };
2737      typeCheckConfig(NAME$7, config, DefaultType$6);
2738      return config;
2739    }
2740
2741  }
2742
2743  /**
2744   * --------------------------------------------------------------------------
2745   * Bootstrap (v5.1.3): modal.js
2746   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
2747   * --------------------------------------------------------------------------
2748   */
2749  /**
2750   * ------------------------------------------------------------------------
2751   * Constants
2752   * ------------------------------------------------------------------------
2753   */
2754
2755  const NAME$6 = 'modal';
2756  const DATA_KEY$6 = 'bs.modal';
2757  const EVENT_KEY$6 = `.${DATA_KEY$6}`;
2758  const DATA_API_KEY$3 = '.data-api';
2759  const ESCAPE_KEY$1 = 'Escape';
2760  const Default$5 = {
2761    backdrop: true,
2762    keyboard: true,
2763    focus: true
2764  };
2765  const DefaultType$5 = {
2766    backdrop: '(boolean|string)',
2767    keyboard: 'boolean',
2768    focus: 'boolean'
2769  };
2770  const EVENT_HIDE$3 = `hide${EVENT_KEY$6}`;
2771  const EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY$6}`;
2772  const EVENT_HIDDEN$3 = `hidden${EVENT_KEY$6}`;
2773  const EVENT_SHOW$3 = `show${EVENT_KEY$6}`;
2774  const EVENT_SHOWN$3 = `shown${EVENT_KEY$6}`;
2775  const EVENT_RESIZE = `resize${EVENT_KEY$6}`;
2776  const EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY$6}`;
2777  const EVENT_KEYDOWN_DISMISS$1 = `keydown.dismiss${EVENT_KEY$6}`;
2778  const EVENT_MOUSEUP_DISMISS = `mouseup.dismiss${EVENT_KEY$6}`;
2779  const EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY$6}`;
2780  const EVENT_CLICK_DATA_API$2 = `click${EVENT_KEY$6}${DATA_API_KEY$3}`;
2781  const CLASS_NAME_OPEN = 'modal-open';
2782  const CLASS_NAME_FADE$3 = 'fade';
2783  const CLASS_NAME_SHOW$4 = 'show';
2784  const CLASS_NAME_STATIC = 'modal-static';
2785  const OPEN_SELECTOR$1 = '.modal.show';
2786  const SELECTOR_DIALOG = '.modal-dialog';
2787  const SELECTOR_MODAL_BODY = '.modal-body';
2788  const SELECTOR_DATA_TOGGLE$2 = '[data-bs-toggle="modal"]';
2789  /**
2790   * ------------------------------------------------------------------------
2791   * Class Definition
2792   * ------------------------------------------------------------------------
2793   */
2794
2795  class Modal extends BaseComponent {
2796    constructor(element, config) {
2797      super(element);
2798      this._config = this._getConfig(config);
2799      this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element);
2800      this._backdrop = this._initializeBackDrop();
2801      this._focustrap = this._initializeFocusTrap();
2802      this._isShown = false;
2803      this._ignoreBackdropClick = false;
2804      this._isTransitioning = false;
2805      this._scrollBar = new ScrollBarHelper();
2806    } // Getters
2807
2808
2809    static get Default() {
2810      return Default$5;
2811    }
2812
2813    static get NAME() {
2814      return NAME$6;
2815    } // Public
2816
2817
2818    toggle(relatedTarget) {
2819      return this._isShown ? this.hide() : this.show(relatedTarget);
2820    }
2821
2822    show(relatedTarget) {
2823      if (this._isShown || this._isTransitioning) {
2824        return;
2825      }
2826
2827      const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$3, {
2828        relatedTarget
2829      });
2830
2831      if (showEvent.defaultPrevented) {
2832        return;
2833      }
2834
2835      this._isShown = true;
2836
2837      if (this._isAnimated()) {
2838        this._isTransitioning = true;
2839      }
2840
2841      this._scrollBar.hide();
2842
2843      document.body.classList.add(CLASS_NAME_OPEN);
2844
2845      this._adjustDialog();
2846
2847      this._setEscapeEvent();
2848
2849      this._setResizeEvent();
2850
2851      EventHandler.on(this._dialog, EVENT_MOUSEDOWN_DISMISS, () => {
2852        EventHandler.one(this._element, EVENT_MOUSEUP_DISMISS, event => {
2853          if (event.target === this._element) {
2854            this._ignoreBackdropClick = true;
2855          }
2856        });
2857      });
2858
2859      this._showBackdrop(() => this._showElement(relatedTarget));
2860    }
2861
2862    hide() {
2863      if (!this._isShown || this._isTransitioning) {
2864        return;
2865      }
2866
2867      const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$3);
2868
2869      if (hideEvent.defaultPrevented) {
2870        return;
2871      }
2872
2873      this._isShown = false;
2874
2875      const isAnimated = this._isAnimated();
2876
2877      if (isAnimated) {
2878        this._isTransitioning = true;
2879      }
2880
2881      this._setEscapeEvent();
2882
2883      this._setResizeEvent();
2884
2885      this._focustrap.deactivate();
2886
2887      this._element.classList.remove(CLASS_NAME_SHOW$4);
2888
2889      EventHandler.off(this._element, EVENT_CLICK_DISMISS);
2890      EventHandler.off(this._dialog, EVENT_MOUSEDOWN_DISMISS);
2891
2892      this._queueCallback(() => this._hideModal(), this._element, isAnimated);
2893    }
2894
2895    dispose() {
2896      [window, this._dialog].forEach(htmlElement => EventHandler.off(htmlElement, EVENT_KEY$6));
2897
2898      this._backdrop.dispose();
2899
2900      this._focustrap.deactivate();
2901
2902      super.dispose();
2903    }
2904
2905    handleUpdate() {
2906      this._adjustDialog();
2907    } // Private
2908
2909
2910    _initializeBackDrop() {
2911      return new Backdrop({
2912        isVisible: Boolean(this._config.backdrop),
2913        // 'static' option will be translated to true, and booleans will keep their value
2914        isAnimated: this._isAnimated()
2915      });
2916    }
2917
2918    _initializeFocusTrap() {
2919      return new FocusTrap({
2920        trapElement: this._element
2921      });
2922    }
2923
2924    _getConfig(config) {
2925      config = { ...Default$5,
2926        ...Manipulator.getDataAttributes(this._element),
2927        ...(typeof config === 'object' ? config : {})
2928      };
2929      typeCheckConfig(NAME$6, config, DefaultType$5);
2930      return config;
2931    }
2932
2933    _showElement(relatedTarget) {
2934      const isAnimated = this._isAnimated();
2935
2936      const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog);
2937
2938      if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {
2939        // Don't move modal's DOM position
2940        document.body.append(this._element);
2941      }
2942
2943      this._element.style.display = 'block';
2944
2945      this._element.removeAttribute('aria-hidden');
2946
2947      this._element.setAttribute('aria-modal', true);
2948
2949      this._element.setAttribute('role', 'dialog');
2950
2951      this._element.scrollTop = 0;
2952
2953      if (modalBody) {
2954        modalBody.scrollTop = 0;
2955      }
2956
2957      if (isAnimated) {
2958        reflow(this._element);
2959      }
2960
2961      this._element.classList.add(CLASS_NAME_SHOW$4);
2962
2963      const transitionComplete = () => {
2964        if (this._config.focus) {
2965          this._focustrap.activate();
2966        }
2967
2968        this._isTransitioning = false;
2969        EventHandler.trigger(this._element, EVENT_SHOWN$3, {
2970          relatedTarget
2971        });
2972      };
2973
2974      this._queueCallback(transitionComplete, this._dialog, isAnimated);
2975    }
2976
2977    _setEscapeEvent() {
2978      if (this._isShown) {
2979        EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS$1, event => {
2980          if (this._config.keyboard && event.key === ESCAPE_KEY$1) {
2981            event.preventDefault();
2982            this.hide();
2983          } else if (!this._config.keyboard && event.key === ESCAPE_KEY$1) {
2984            this._triggerBackdropTransition();
2985          }
2986        });
2987      } else {
2988        EventHandler.off(this._element, EVENT_KEYDOWN_DISMISS$1);
2989      }
2990    }
2991
2992    _setResizeEvent() {
2993      if (this._isShown) {
2994        EventHandler.on(window, EVENT_RESIZE, () => this._adjustDialog());
2995      } else {
2996        EventHandler.off(window, EVENT_RESIZE);
2997      }
2998    }
2999
3000    _hideModal() {
3001      this._element.style.display = 'none';
3002
3003      this._element.setAttribute('aria-hidden', true);
3004
3005      this._element.removeAttribute('aria-modal');
3006
3007      this._element.removeAttribute('role');
3008
3009      this._isTransitioning = false;
3010
3011      this._backdrop.hide(() => {
3012        document.body.classList.remove(CLASS_NAME_OPEN);
3013
3014        this._resetAdjustments();
3015
3016        this._scrollBar.reset();
3017
3018        EventHandler.trigger(this._element, EVENT_HIDDEN$3);
3019      });
3020    }
3021
3022    _showBackdrop(callback) {
3023      EventHandler.on(this._element, EVENT_CLICK_DISMISS, event => {
3024        if (this._ignoreBackdropClick) {
3025          this._ignoreBackdropClick = false;
3026          return;
3027        }
3028
3029        if (event.target !== event.currentTarget) {
3030          return;
3031        }
3032
3033        if (this._config.backdrop === true) {
3034          this.hide();
3035        } else if (this._config.backdrop === 'static') {
3036          this._triggerBackdropTransition();
3037        }
3038      });
3039
3040      this._backdrop.show(callback);
3041    }
3042
3043    _isAnimated() {
3044      return this._element.classList.contains(CLASS_NAME_FADE$3);
3045    }
3046
3047    _triggerBackdropTransition() {
3048      const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);
3049
3050      if (hideEvent.defaultPrevented) {
3051        return;
3052      }
3053
3054      const {
3055        classList,
3056        scrollHeight,
3057        style
3058      } = this._element;
3059      const isModalOverflowing = scrollHeight > document.documentElement.clientHeight; // return if the following background transition hasn't yet completed
3060
3061      if (!isModalOverflowing && style.overflowY === 'hidden' || classList.contains(CLASS_NAME_STATIC)) {
3062        return;
3063      }
3064
3065      if (!isModalOverflowing) {
3066        style.overflowY = 'hidden';
3067      }
3068
3069      classList.add(CLASS_NAME_STATIC);
3070
3071      this._queueCallback(() => {
3072        classList.remove(CLASS_NAME_STATIC);
3073
3074        if (!isModalOverflowing) {
3075          this._queueCallback(() => {
3076            style.overflowY = '';
3077          }, this._dialog);
3078        }
3079      }, this._dialog);
3080
3081      this._element.focus();
3082    } // ----------------------------------------------------------------------
3083    // the following methods are used to handle overflowing modals
3084    // ----------------------------------------------------------------------
3085
3086
3087    _adjustDialog() {
3088      const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
3089
3090      const scrollbarWidth = this._scrollBar.getWidth();
3091
3092      const isBodyOverflowing = scrollbarWidth > 0;
3093
3094      if (!isBodyOverflowing && isModalOverflowing && !isRTL() || isBodyOverflowing && !isModalOverflowing && isRTL()) {
3095        this._element.style.paddingLeft = `${scrollbarWidth}px`;
3096      }
3097
3098      if (isBodyOverflowing && !isModalOverflowing && !isRTL() || !isBodyOverflowing && isModalOverflowing && isRTL()) {
3099        this._element.style.paddingRight = `${scrollbarWidth}px`;
3100      }
3101    }
3102
3103    _resetAdjustments() {
3104      this._element.style.paddingLeft = '';
3105      this._element.style.paddingRight = '';
3106    } // Static
3107
3108
3109    static jQueryInterface(config, relatedTarget) {
3110      return this.each(function () {
3111        const data = Modal.getOrCreateInstance(this, config);
3112
3113        if (typeof config !== 'string') {
3114          return;
3115        }
3116
3117        if (typeof data[config] === 'undefined') {
vendor: 4,925 bytes, lines 3118-3299
3118          throw new TypeError(`No method named "${config}"`);
3119        }
3120
3121        data[config](relatedTarget);
3122      });
3123    }
3124
3125  }
3126  /**
3127   * ------------------------------------------------------------------------
3128   * Data Api implementation
3129   * ------------------------------------------------------------------------
3130   */
3131
3132
3133  EventHandler.on(document, EVENT_CLICK_DATA_API$2, SELECTOR_DATA_TOGGLE$2, function (event) {
3134    const target = getElementFromSelector(this);
3135
3136    if (['A', 'AREA'].includes(this.tagName)) {
3137      event.preventDefault();
3138    }
3139
3140    EventHandler.one(target, EVENT_SHOW$3, showEvent => {
3141      if (showEvent.defaultPrevented) {
3142        // only register focus restorer if modal will actually get shown
3143        return;
3144      }
3145
3146      EventHandler.one(target, EVENT_HIDDEN$3, () => {
3147        if (isVisible(this)) {
3148          this.focus();
3149        }
3150      });
3151    }); // avoid conflict when clicking moddal toggler while another one is open
3152
3153    const allReadyOpen = SelectorEngine.findOne(OPEN_SELECTOR$1);
3154
3155    if (allReadyOpen) {
3156      Modal.getInstance(allReadyOpen).hide();
3157    }
3158
3159    const data = Modal.getOrCreateInstance(target);
3160    data.toggle(this);
3161  });
3162  enableDismissTrigger(Modal);
3163  /**
3164   * ------------------------------------------------------------------------
3165   * jQuery
3166   * ------------------------------------------------------------------------
3167   * add .Modal to jQuery only if jQuery is present
3168   */
3169
3170  defineJQueryPlugin(Modal);
3171
3172  /**
3173   * --------------------------------------------------------------------------
3174   * Bootstrap (v5.1.3): offcanvas.js
3175   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
3176   * --------------------------------------------------------------------------
3177   */
3178  /**
3179   * ------------------------------------------------------------------------
3180   * Constants
3181   * ------------------------------------------------------------------------
3182   */
3183
3184  const NAME$5 = 'offcanvas';
3185  const DATA_KEY$5 = 'bs.offcanvas';
3186  const EVENT_KEY$5 = `.${DATA_KEY$5}`;
3187  const DATA_API_KEY$2 = '.data-api';
3188  const EVENT_LOAD_DATA_API$1 = `load${EVENT_KEY$5}${DATA_API_KEY$2}`;
3189  const ESCAPE_KEY = 'Escape';
3190  const Default$4 = {
3191    backdrop: true,
3192    keyboard: true,
3193    scroll: false
3194  };
3195  const DefaultType$4 = {
3196    backdrop: 'boolean',
3197    keyboard: 'boolean',
3198    scroll: 'boolean'
3199  };
3200  const CLASS_NAME_SHOW$3 = 'show';
3201  const CLASS_NAME_BACKDROP = 'offcanvas-backdrop';
3202  const OPEN_SELECTOR = '.offcanvas.show';
3203  const EVENT_SHOW$2 = `show${EVENT_KEY$5}`;
3204  const EVENT_SHOWN$2 = `shown${EVENT_KEY$5}`;
3205  const EVENT_HIDE$2 = `hide${EVENT_KEY$5}`;
3206  const EVENT_HIDDEN$2 = `hidden${EVENT_KEY$5}`;
3207  const EVENT_CLICK_DATA_API$1 = `click${EVENT_KEY$5}${DATA_API_KEY$2}`;
3208  const EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY$5}`;
3209  const SELECTOR_DATA_TOGGLE$1 = '[data-bs-toggle="offcanvas"]';
3210  /**
3211   * ------------------------------------------------------------------------
3212   * Class Definition
3213   * ------------------------------------------------------------------------
3214   */
3215
3216  class Offcanvas extends BaseComponent {
3217    constructor(element, config) {
3218      super(element);
3219      this._config = this._getConfig(config);
3220      this._isShown = false;
3221      this._backdrop = this._initializeBackDrop();
3222      this._focustrap = this._initializeFocusTrap();
3223
3224      this._addEventListeners();
3225    } // Getters
3226
3227
3228    static get NAME() {
3229      return NAME$5;
3230    }
3231
3232    static get Default() {
3233      return Default$4;
3234    } // Public
3235
3236
3237    toggle(relatedTarget) {
3238      return this._isShown ? this.hide() : this.show(relatedTarget);
3239    }
3240
3241    show(relatedTarget) {
3242      if (this._isShown) {
3243        return;
3244      }
3245
3246      const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$2, {
3247        relatedTarget
3248      });
3249
3250      if (showEvent.defaultPrevented) {
3251        return;
3252      }
3253
3254      this._isShown = true;
3255      this._element.style.visibility = 'visible';
3256
3257      this._backdrop.show();
3258
3259      if (!this._config.scroll) {
3260        new ScrollBarHelper().hide();
3261      }
3262
3263      this._element.removeAttribute('aria-hidden');
3264
3265      this._element.setAttribute('aria-modal', true);
3266
3267      this._element.setAttribute('role', 'dialog');
3268
3269      this._element.classList.add(CLASS_NAME_SHOW$3);
3270
3271      const completeCallBack = () => {
3272        if (!this._config.scroll) {
3273          this._focustrap.activate();
3274        }
3275
3276        EventHandler.trigger(this._element, EVENT_SHOWN$2, {
3277          relatedTarget
3278        });
3279      };
3280
3281      this._queueCallback(completeCallBack, this._element, true);
3282    }
3283
3284    hide() {
3285      if (!this._isShown) {
3286        return;
3287      }
3288
3289      const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$2);
3290
3291      if (hideEvent.defaultPrevented) {
3292        return;
3293      }
3294
3295      this._focustrap.deactivate();
3296
3297      this._element.blur();
3298
3299      this._isShown = false;
3300
3301      this._element.classList.remove(CLASS_NAME_SHOW$3);
3302
3303      this._backdrop.hide();
3304
3305      const completeCallback = () => {
3306        this._element.setAttribute('aria-hidden', true);
3307
3308        this._element.removeAttribute('aria-modal');
3309
3310        this._element.removeAttribute('role');
3311
3312        this._element.style.visibility = 'hidden';
3313
3314        if (!this._config.scroll) {
3315          new ScrollBarHelper().reset();
3316        }
3317
3318        EventHandler.trigger(this._element, EVENT_HIDDEN$2);
3319      };
3320
3321      this._queueCallback(completeCallback, this._element, true);
3322    }
3323
3324    dispose() {
3325      this._backdrop.dispose();
3326
3327      this._focustrap.deactivate();
3328
3329      super.dispose();
3330    } // Private
3331
3332
3333    _getConfig(config) {
3334      config = { ...Default$4,
3335        ...Manipulator.getDataAttributes(this._element),
3336        ...(typeof config === 'object' ? config : {})
3337      };
3338      typeCheckConfig(NAME$5, config, DefaultType$4);
3339      return config;
3340    }
3341
3342    _initializeBackDrop() {
3343      return new Backdrop({
3344        className: CLASS_NAME_BACKDROP,
3345        isVisible: this._config.backdrop,
3346        isAnimated: true,
3347        rootElement: this._element.parentNode,
3348        clickCallback: () => this.hide()
3349      });
3350    }
3351
3352    _initializeFocusTrap() {
3353      return new FocusTrap({
3354        trapElement: this._element
3355      });
3356    }
3357
3358    _addEventListeners() {
3359      EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {
3360        if (this._config.keyboard && event.key === ESCAPE_KEY) {
3361          this.hide();
3362        }
3363      });
3364    } // Static
3365
3366
3367    static jQueryInterface(config) {
3368      return this.each(function () {
3369        const data = Offcanvas.getOrCreateInstance(this, config);
3370
3371        if (typeof config !== 'string') {
3372          return;
3373        }
3374
3375        if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {
3376          throw new TypeError(`No method named "${config}"`);
3377        }
3378
3379        data[config](this);
3380      });
3381    }
3382
3383  }
3384  /**
3385   * ------------------------------------------------------------------------
3386   * Data Api implementation
3387   * ------------------------------------------------------------------------
3388   */
3389
3390
3391  EventHandler.on(document, EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE$1, function (event) {
3392    const target = getElementFromSelector(this);
3393
3394    if (['A', 'AREA'].includes(this.tagName)) {
3395      event.preventDefault();
3396    }
3397
3398    if (isDisabled(this)) {
3399      return;
3400    }
3401
3402    EventHandler.one(target, EVENT_HIDDEN$2, () => {
3403      // focus on trigger when it is closed
3404      if (isVisible(this)) {
3405        this.focus();
3406      }
3407    }); // avoid conflict when clicking a toggler of an offcanvas, while another is open
3408
3409    const allReadyOpen = SelectorEngine.findOne(OPEN_SELECTOR);
3410
3411    if (allReadyOpen && allReadyOpen !== target) {
3412      Offcanvas.getInstance(allReadyOpen).hide();
3413    }
3414
3415    const data = Offcanvas.getOrCreateInstance(target);
3416    data.toggle(this);
3417  });
3418  EventHandler.on(window, EVENT_LOAD_DATA_API$1, () => SelectorEngine.find(OPEN_SELECTOR).forEach(el => Offcanvas.getOrCreateInstance(el).show()));
3419  enableDismissTrigger(Offcanvas);
3420  /**
3421   * ------------------------------------------------------------------------
3422   * jQuery
3423   * ------------------------------------------------------------------------
3424   */
3425
3426  defineJQueryPlugin(Offcanvas);
3427
3428  /**
3429   * --------------------------------------------------------------------------
3430   * Bootstrap (v5.1.3): util/sanitizer.js
3431   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
3432   * --------------------------------------------------------------------------
3433   */
3434  const uriAttributes = new Set(['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href']);
3435  const ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i;
3436  /**
3437   * A pattern that recognizes a commonly useful subset of URLs that are safe.
3438   *
3439   * Shoutout to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts
3440   */
3441
3442  const SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i;
3443  /**
3444   * A pattern that matches safe data URLs. Only matches image, video and audio types.
3445   *
3446   * Shoutout to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts
3447   */
3448
3449  const DATA_URL_PATTERN = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i;
3450
3451  const allowedAttribute = (attribute, allowedAttributeList) => {
3452    const attributeName = attribute.nodeName.toLowerCase();
3453
3454    if (allowedAttributeList.includes(attributeName)) {
3455      if (uriAttributes.has(attributeName)) {
3456        return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue) || DATA_URL_PATTERN.test(attribute.nodeValue));
3457      }
3458
3459      return true;
3460    }
3461
3462    const regExp = allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp); // Check if a regular expression validates the attribute.
3463
3464    for (let i = 0, len = regExp.length; i < len; i++) {
3465      if (regExp[i].test(attributeName)) {
3466        return true;
3467      }
3468    }
3469
3470    return false;
3471  };
3472
3473  const DefaultAllowlist = {
3474    // Global attributes allowed on any supplied element below.
3475    '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],
3476    a: ['target', 'href', 'title', 'rel'],
3477    area: [],
3478    b: [],
3479    br: [],
3480    col: [],
3481    code: [],
3482    div: [],
3483    em: [],
3484    hr: [],
3485    h1: [],
3486    h2: [],
3487    h3: [],
3488    h4: [],
3489    h5: [],
3490    h6: [],
3491    i: [],
3492    img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],
3493    li: [],
3494    ol: [],
3495    p: [],
3496    pre: [],
3497    s: [],
3498    small: [],
3499    span: [],
3500    sub: [],
3501    sup: [],
3502    strong: [],
3503    u: [],
3504    ul: []
3505  };
3506  function sanitizeHtml(unsafeHtml, allowList, sanitizeFn) {
3507    if (!unsafeHtml.length) {
3508      return unsafeHtml;
3509    }
3510
3511    if (sanitizeFn && typeof sanitizeFn === 'function') {
3512      return sanitizeFn(unsafeHtml);
3513    }
3514
3515    const domParser = new window.DOMParser();
3516    const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');
3517    const elements = [].concat(...createdDocument.body.querySelectorAll('*'));
3518
3519    for (let i = 0, len = elements.length; i < len; i++) {
3520      const element = elements[i];
3521      const elementName = element.nodeName.toLowerCase();
3522
3523      if (!Object.keys(allowList).includes(elementName)) {
3524        element.remove();
3525        continue;
3526      }
3527
3528      const attributeList = [].concat(...element.attributes);
3529      const allowedAttributes = [].concat(allowList['*'] || [], allowList[elementName] || []);
3530      attributeList.forEach(attribute => {
3531        if (!allowedAttribute(attribute, allowedAttributes)) {
3532          element.removeAttribute(attribute.nodeName);
3533        }
3534      });
3535    }
3536
3537    return createdDocument.body.innerHTML;
3538  }
3539
3540  /**
3541   * --------------------------------------------------------------------------
3542   * Bootstrap (v5.1.3): tooltip.js
3543   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
3544   * --------------------------------------------------------------------------
3545   */
3546  /**
3547   * ------------------------------------------------------------------------
3548   * Constants
3549   * ------------------------------------------------------------------------
3550   */
3551
3552  const NAME$4 = 'tooltip';
3553  const DATA_KEY$4 = 'bs.tooltip';
3554  const EVENT_KEY$4 = `.${DATA_KEY$4}`;
3555  const CLASS_PREFIX$1 = 'bs-tooltip';
3556  const DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn']);
3557  const DefaultType$3 = {
3558    animation: 'boolean',
3559    template: 'string',
3560    title: '(string|element|function)',
3561    trigger: 'string',
3562    delay: '(number|object)',
3563    html: 'boolean',
3564    selector: '(string|boolean)',
3565    placement: '(string|function)',
3566    offset: '(array|string|function)',
3567    container: '(string|element|boolean)',
3568    fallbackPlacements: 'array',
3569    boundary: '(string|element)',
3570    customClass: '(string|function)',
3571    sanitize: 'boolean',
3572    sanitizeFn: '(null|function)',
3573    allowList: 'object',
3574    popperConfig: '(null|object|function)'
3575  };
3576  const AttachmentMap = {
3577    AUTO: 'auto',
3578    TOP: 'top',
3579    RIGHT: isRTL() ? 'left' : 'right',
3580    BOTTOM: 'bottom',
3581    LEFT: isRTL() ? 'right' : 'left'
3582  };
3583  const Default$3 = {
3584    animation: true,
3585    template: '<div class="tooltip" role="tooltip">' + '<div class="tooltip-arrow"></div>' + '<div class="tooltip-inner"></div>' + '</div>',
3586    trigger: 'hover focus',
3587    title: '',
3588    delay: 0,
3589    html: false,
3590    selector: false,
3591    placement: 'top',
3592    offset: [0, 0],
3593    container: false,
3594    fallbackPlacements: ['top', 'right', 'bottom', 'left'],
3595    boundary: 'clippingParents',
3596    customClass: '',
3597    sanitize: true,
3598    sanitizeFn: null,
3599    allowList: DefaultAllowlist,
3600    popperConfig: null
3601  };
3602  const Event$2 = {
3603    HIDE: `hide${EVENT_KEY$4}`,
3604    HIDDEN: `hidden${EVENT_KEY$4}`,
3605    SHOW: `show${EVENT_KEY$4}`,
3606    SHOWN: `shown${EVENT_KEY$4}`,
3607    INSERTED: `inserted${EVENT_KEY$4}`,
3608    CLICK: `click${EVENT_KEY$4}`,
3609    FOCUSIN: `focusin${EVENT_KEY$4}`,
3610    FOCUSOUT: `focusout${EVENT_KEY$4}`,
3611    MOUSEENTER: `mouseenter${EVENT_KEY$4}`,
3612    MOUSELEAVE: `mouseleave${EVENT_KEY$4}`
3613  };
3614  const CLASS_NAME_FADE$2 = 'fade';
3615  const CLASS_NAME_MODAL = 'modal';
3616  const CLASS_NAME_SHOW$2 = 'show';
3617  const HOVER_STATE_SHOW = 'show';
3618  const HOVER_STATE_OUT = 'out';
3619  const SELECTOR_TOOLTIP_INNER = '.tooltip-inner';
3620  const SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`;
3621  const EVENT_MODAL_HIDE = 'hide.bs.modal';
3622  const TRIGGER_HOVER = 'hover';
3623  const TRIGGER_FOCUS = 'focus';
3624  const TRIGGER_CLICK = 'click';
3625  const TRIGGER_MANUAL = 'manual';
3626  /**
3627   * ------------------------------------------------------------------------
3628   * Class Definition
3629   * ------------------------------------------------------------------------
3630   */
3631
3632  class Tooltip extends BaseComponent {
3633    constructor(element, config) {
3634      if (typeof Popper__namespace === 'undefined') {
3635        throw new TypeError('Bootstrap\'s tooltips require Popper (https://popper.js.org)');
3636      }
3637
3638      super(element); // private
3639
3640      this._isEnabled = true;
3641      this._timeout = 0;
3642      this._hoverState = '';
3643      this._activeTrigger = {};
3644      this._popper = null; // Protected
3645
3646      this._config = this._getConfig(config);
3647      this.tip = null;
3648
3649      this._setListeners();
3650    } // Getters
3651
3652
3653    static get Default() {
3654      return Default$3;
3655    }
3656
3657    static get NAME() {
3658      return NAME$4;
3659    }
3660
3661    static get Event() {
3662      return Event$2;
3663    }
3664
3665    static get DefaultType() {
3666      return DefaultType$3;
3667    } // Public
3668
3669
3670    enable() {
3671      this._isEnabled = true;
3672    }
3673
3674    disable() {
3675      this._isEnabled = false;
3676    }
3677
3678    toggleEnabled() {
3679      this._isEnabled = !this._isEnabled;
3680    }
3681
3682    toggle(event) {
3683      if (!this._isEnabled) {
3684        return;
3685      }
3686
3687      if (event) {
3688        const context = this._initializeOnDelegatedTarget(event);
3689
3690        context._activeTrigger.click = !context._activeTrigger.click;
3691
3692        if (context._isWithActiveTrigger()) {
3693          context._enter(null, context);
3694        } else {
3695          context._leave(null, context);
3696        }
3697      } else {
3698        if (this.getTipElement().classList.contains(CLASS_NAME_SHOW$2)) {
3699          this._leave(null, this);
3700
3701          return;
3702        }
3703
3704        this._enter(null, this);
3705      }
3706    }
3707
3708    dispose() {
3709      clearTimeout(this._timeout);
3710      EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);
3711
3712      if (this.tip) {
3713        this.tip.remove();
3714      }
3715
3716      this._disposePopper();
3717
3718      super.dispose();
3719    }
3720
3721    show() {
3722      if (this._element.style.display === 'none') {
3723        throw new Error('Please use show on visible elements');
3724      }
3725
3726      if (!(this.isWithContent() && this._isEnabled)) {
3727        return;
3728      }
3729
3730      const showEvent = EventHandler.trigger(this._element, this.constructor.Event.SHOW);
3731      const shadowRoot = findShadowRoot(this._element);
3732      const isInTheDom = shadowRoot === null ? this._element.ownerDocument.documentElement.contains(this._element) : shadowRoot.contains(this._element);
3733
3734      if (showEvent.defaultPrevented || !isInTheDom) {
3735        return;
3736      } // A trick to recreate a tooltip in case a new title is given by using the NOT documented `data-bs-original-title`
3737      // This will be removed later in favor of a `setContent` method
3738
3739
3740      if (this.constructor.NAME === 'tooltip' && this.tip && this.getTitle() !== this.tip.querySelector(SELECTOR_TOOLTIP_INNER).innerHTML) {
3741        this._disposePopper();
3742
3743        this.tip.remove();
3744        this.tip = null;
3745      }
3746
3747      const tip = this.getTipElement();
3748      const tipId = getUID(this.constructor.NAME);
3749      tip.setAttribute('id', tipId);
3750
3751      this._element.setAttribute('aria-describedby', tipId);
3752
3753      if (this._config.animation) {
3754        tip.classList.add(CLASS_NAME_FADE$2);
3755      }
3756
3757      const placement = typeof this._config.placement === 'function' ? this._config.placement.call(this, tip, this._element) : this._config.placement;
3758
3759      const attachment = this._getAttachment(placement);
3760
3761      this._addAttachmentClass(attachment);
3762
3763      const {
3764        container
3765      } = this._config;
3766      Data.set(tip, this.constructor.DATA_KEY, this);
3767
3768      if (!this._element.ownerDocument.documentElement.contains(this.tip)) {
3769        container.append(tip);
3770        EventHandler.trigger(this._element, this.constructor.Event.INSERTED);
3771      }
3772
3773      if (this._popper) {
3774        this._popper.update();
3775      } else {
3776        this._popper = Popper__namespace.createPopper(this._element, tip, this._getPopperConfig(attachment));
3777      }
3778
3779      tip.classList.add(CLASS_NAME_SHOW$2);
3780
3781      const customClass = this._resolvePossibleFunction(this._config.customClass);
3782
3783      if (customClass) {
3784        tip.classList.add(...customClass.split(' '));
3785      } // If this is a touch-enabled device we add extra
3786      // empty mouseover listeners to the body's immediate children;
3787      // only needed because of broken event delegation on iOS
3788      // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
3789
3790
3791      if ('ontouchstart' in document.documentElement) {
3792        [].concat(...document.body.children).forEach(element => {
3793          EventHandler.on(element, 'mouseover', noop);
3794        });
3795      }
3796
3797      const complete = () => {
3798        const prevHoverState = this._hoverState;
3799        this._hoverState = null;
3800        EventHandler.trigger(this._element, this.constructor.Event.SHOWN);
3801
3802        if (prevHoverState === HOVER_STATE_OUT) {
3803          this._leave(null, this);
3804        }
3805      };
3806
3807      const isAnimated = this.tip.classList.contains(CLASS_NAME_FADE$2);
3808
3809      this._queueCallback(complete, this.tip, isAnimated);
3810    }
3811
3812    hide() {
3813      if (!this._popper) {
3814        return;
3815      }
3816
3817      const tip = this.getTipElement();
3818
3819      const complete = () => {
3820        if (this._isWithActiveTrigger()) {
3821          return;
3822        }
3823
3824        if (this._hoverState !== HOVER_STATE_SHOW) {
3825          tip.remove();
3826        }
3827
3828        this._cleanTipClass();
3829
3830        this._element.removeAttribute('aria-describedby');
3831
3832        EventHandler.trigger(this._element, this.constructor.Event.HIDDEN);
3833
3834        this._disposePopper();
3835      };
3836
3837      const hideEvent = EventHandler.trigger(this._element, this.constructor.Event.HIDE);
3838
3839      if (hideEvent.defaultPrevented) {
3840        return;
3841      }
3842
3843      tip.classList.remove(CLASS_NAME_SHOW$2); // If this is a touch-enabled device we remove the extra
3844      // empty mouseover listeners we added for iOS support
3845
3846      if ('ontouchstart' in document.documentElement) {
3847        [].concat(...document.body.children).forEach(element => EventHandler.off(element, 'mouseover', noop));
3848      }
3849
3850      this._activeTrigger[TRIGGER_CLICK] = false;
3851      this._activeTrigger[TRIGGER_FOCUS] = false;
3852      this._activeTrigger[TRIGGER_HOVER] = false;
3853      const isAnimated = this.tip.classList.contains(CLASS_NAME_FADE$2);
3854
3855      this._queueCallback(complete, this.tip, isAnimated);
3856
3857      this._hoverState = '';
3858    }
3859
3860    update() {
3861      if (this._popper !== null) {
3862        this._popper.update();
3863      }
3864    } // Protected
3865
3866
3867    isWithContent() {
3868      return Boolean(this.getTitle());
3869    }
3870
3871    getTipElement() {
3872      if (this.tip) {
3873        return this.tip;
3874      }
3875
3876      const element = document.createElement('div');
3877      element.innerHTML = this._config.template;
3878      const tip = element.children[0];
3879      this.setContent(tip);
3880      tip.classList.remove(CLASS_NAME_FADE$2, CLASS_NAME_SHOW$2);
3881      this.tip = tip;
3882      return this.tip;
3883    }
3884
3885    setContent(tip) {
3886      this._sanitizeAndSetContent(tip, this.getTitle(), SELECTOR_TOOLTIP_INNER);
3887    }
3888
3889    _sanitizeAndSetContent(template, content, selector) {
3890      const templateElement = SelectorEngine.findOne(selector, template);
3891
3892      if (!content && templateElement) {
3893        templateElement.remove();
3894        return;
3895      } // we use append for html objects to maintain js events
3896
3897
3898      this.setElementContent(templateElement, content);
3899    }
3900
3901    setElementContent(element, content) {
3902      if (element === null) {
3903        return;
3904      }
3905
3906      if (isElement(content)) {
3907        content = getElement(content); // content is a DOM node or a jQuery
3908
3909        if (this._config.html) {
3910          if (content.parentNode !== element) {
3911            element.innerHTML = '';
3912            element.append(content);
3913          }
3914        } else {
3915          element.textContent = content.textContent;
3916        }
3917
3918        return;
3919      }
3920
3921      if (this._config.html) {
3922        if (this._config.sanitize) {
3923          content = sanitizeHtml(content, this._config.allowList, this._config.sanitizeFn);
3924        }
3925
3926        element.innerHTML = content;
3927      } else {
3928        element.textContent = content;
3929      }
3930    }
3931
3932    getTitle() {
3933      const title = this._element.getAttribute('data-bs-original-title') || this._config.title;
3934
3935      return this._resolvePossibleFunction(title);
3936    }
3937
3938    updateAttachment(attachment) {
3939      if (attachment === 'right') {
3940        return 'end';
3941      }
3942
3943      if (attachment === 'left') {
3944        return 'start';
3945      }
3946
3947      return attachment;
3948    } // Private
3949
3950
3951    _initializeOnDelegatedTarget(event, context) {
3952      return context || this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig());
3953    }
3954
3955    _getOffset() {
3956      const {
3957        offset
3958      } = this._config;
3959
3960      if (typeof offset === 'string') {
3961        return offset.split(',').map(val => Number.parseInt(val, 10));
3962      }
3963
3964      if (typeof offset === 'function') {
3965        return popperData => offset(popperData, this._element);
3966      }
3967
3968      return offset;
3969    }
3970
3971    _resolvePossibleFunction(content) {
3972      return typeof content === 'function' ? content.call(this._element) : content;
3973    }
3974
3975    _getPopperConfig(attachment) {
3976      const defaultBsPopperConfig = {
3977        placement: attachment,
3978        modifiers: [{
3979          name: 'flip',
3980          options: {
3981            fallbackPlacements: this._config.fallbackPlacements
3982          }
3983        }, {
3984          name: 'offset',
3985          options: {
3986            offset: this._getOffset()
3987          }
3988        }, {
3989          name: 'preventOverflow',
3990          options: {
3991            boundary: this._config.boundary
3992          }
3993        }, {
3994          name: 'arrow',
3995          options: {
3996            element: `.${this.constructor.NAME}-arrow`
3997          }
3998        }, {
3999          name: 'onChange',
4000          enabled: true,
4001          phase: 'afterWrite',
4002          fn: data => this._handlePopperPlacementChange(data)
4003        }],
4004        onFirstUpdate: data => {
4005          if (data.options.placement !== data.placement) {
4006            this._handlePopperPlacementChange(data);
4007          }
4008        }
4009      };
4010      return { ...defaultBsPopperConfig,
4011        ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)
4012      };
4013    }
4014
4015    _addAttachmentClass(attachment) {
4016      this.getTipElement().classList.add(`${this._getBasicClassPrefix()}-${this.updateAttachment(attachment)}`);
4017    }
4018
4019    _getAttachment(placement) {
4020      return AttachmentMap[placement.toUpperCase()];
4021    }
4022
4023    _setListeners() {
4024      const triggers = this._config.trigger.split(' ');
4025
4026      triggers.forEach(trigger => {
4027        if (trigger === 'click') {
4028          EventHandler.on(this._element, this.constructor.Event.CLICK, this._config.selector, event => this.toggle(event));
4029        } else if (trigger !== TRIGGER_MANUAL) {
4030          const eventIn = trigger === TRIGGER_HOVER ? this.constructor.Event.MOUSEENTER : this.constructor.Event.FOCUSIN;
4031          const eventOut = trigger === TRIGGER_HOVER ? this.constructor.Event.MOUSELEAVE : this.constructor.Event.FOCUSOUT;
4032          EventHandler.on(this._element, eventIn, this._config.selector, event => this._enter(event));
4033          EventHandler.on(this._element, eventOut, this._config.selector, event => this._leave(event));
4034        }
4035      });
4036
4037      this._hideModalHandler = () => {
4038        if (this._element) {
4039          this.hide();
4040        }
4041      };
4042
4043      EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);
4044
4045      if (this._config.selector) {
4046        this._config = { ...this._config,
4047          trigger: 'manual',
4048          selector: ''
4049        };
4050      } else {
4051        this._fixTitle();
4052      }
4053    }
4054
4055    _fixTitle() {
4056      const title = this._element.getAttribute('title');
4057
4058      const originalTitleType = typeof this._element.getAttribute('data-bs-original-title');
4059
4060      if (title || originalTitleType !== 'string') {
4061        this._element.setAttribute('data-bs-original-title', title || '');
4062
4063        if (title && !this._element.getAttribute('aria-label') && !this._element.textContent) {
4064          this._element.setAttribute('aria-label', title);
4065        }
4066
4067        this._element.setAttribute('title', '');
4068      }
4069    }
4070
4071    _enter(event, context) {
4072      context = this._initializeOnDelegatedTarget(event, context);
4073
4074      if (event) {
4075        context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true;
4076      }
4077
4078      if (context.getTipElement().classList.contains(CLASS_NAME_SHOW$2) || context._hoverState === HOVER_STATE_SHOW) {
4079        context._hoverState = HOVER_STATE_SHOW;
4080        return;
4081      }
4082
4083      clearTimeout(context._timeout);
4084      context._hoverState = HOVER_STATE_SHOW;
4085
4086      if (!context._config.delay || !context._config.delay.show) {
4087        context.show();
4088        return;
4089      }
4090
4091      context._timeout = setTimeout(() => {
4092        if (context._hoverState === HOVER_STATE_SHOW) {
4093          context.show();
4094        }
4095      }, context._config.delay.show);
4096    }
4097
4098    _leave(event, context) {
4099      context = this._initializeOnDelegatedTarget(event, context);
4100
4101      if (event) {
4102        context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = context._element.contains(event.relatedTarget);
4103      }
4104
4105      if (context._isWithActiveTrigger()) {
4106        return;
4107      }
4108
4109      clearTimeout(context._timeout);
4110      context._hoverState = HOVER_STATE_OUT;
4111
4112      if (!context._config.delay || !context._config.delay.hide) {
4113        context.hide();
4114        return;
4115      }
4116
4117      context._timeout = setTimeout(() => {
4118        if (context._hoverState === HOVER_STATE_OUT) {
4119          context.hide();
4120        }
4121      }, context._config.delay.hide);
4122    }
4123
4124    _isWithActiveTrigger() {
4125      for (const trigger in this._activeTrigger) {
4126        if (this._activeTrigger[trigger]) {
4127          return true;
4128        }
4129      }
4130
4131      return false;
4132    }
4133
4134    _getConfig(config) {
4135      const dataAttributes = Manipulator.getDataAttributes(this._element);
4136      Object.keys(dataAttributes).forEach(dataAttr => {
4137        if (DISALLOWED_ATTRIBUTES.has(dataAttr)) {
4138          delete dataAttributes[dataAttr];
4139        }
4140      });
4141      config = { ...this.constructor.Default,
4142        ...dataAttributes,
4143        ...(typeof config === 'object' && config ? config : {})
4144      };
4145      config.container = config.container === false ? document.body : getElement(config.container);
4146
4147      if (typeof config.delay === 'number') {
4148        config.delay = {
4149          show: config.delay,
4150          hide: config.delay
4151        };
4152      }
4153
4154      if (typeof config.title === 'number') {
4155        config.title = config.title.toString();
4156      }
4157
4158      if (typeof config.content === 'number') {
4159        config.content = config.content.toString();
4160      }
4161
4162      typeCheckConfig(NAME$4, config, this.constructor.DefaultType);
4163
4164      if (config.sanitize) {
4165        config.template = sanitizeHtml(config.template, config.allowList, config.sanitizeFn);
4166      }
4167
4168      return config;
4169    }
4170
4171    _getDelegateConfig() {
4172      const config = {};
4173
4174      for (const key in this._config) {
4175        if (this.constructor.Default[key] !== this._config[key]) {
4176          config[key] = this._config[key];
4177        }
4178      } // In the future can be replaced with:
4179      // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])
4180      // `Object.fromEntries(keysWithDifferentValues)`
4181
4182
4183      return config;
4184    }
4185
4186    _cleanTipClass() {
4187      const tip = this.getTipElement();
4188      const basicClassPrefixRegex = new RegExp(`(^|\\s)${this._getBasicClassPrefix()}\\S+`, 'g');
4189      const tabClass = tip.getAttribute('class').match(basicClassPrefixRegex);
4190
4191      if (tabClass !== null && tabClass.length > 0) {
4192        tabClass.map(token => token.trim()).forEach(tClass => tip.classList.remove(tClass));
4193      }
4194    }
4195
4196    _getBasicClassPrefix() {
4197      return CLASS_PREFIX$1;
4198    }
4199
4200    _handlePopperPlacementChange(popperData) {
4201      const {
4202        state
4203      } = popperData;
4204
4205      if (!state) {
4206        return;
4207      }
4208
4209      this.tip = state.elements.popper;
4210
4211      this._cleanTipClass();
4212
4213      this._addAttachmentClass(this._getAttachment(state.placement));
4214    }
4215
4216    _disposePopper() {
4217      if (this._popper) {
4218        this._popper.destroy();
4219
4220        this._popper = null;
4221      }
4222    } // Static
4223
4224
4225    static jQueryInterface(config) {
4226      return this.each(function () {
4227        const data = Tooltip.getOrCreateInstance(this, config);
4228
4229        if (typeof config === 'string') {
4230          if (typeof data[config] === 'undefined') {
4231            throw new TypeError(`No method named "${config}"`);
4232          }
4233
4234          data[config]();
4235        }
4236      });
4237    }
4238
4239  }
4240  /**
4241   * ------------------------------------------------------------------------
4242   * jQuery
4243   * ------------------------------------------------------------------------
4244   * add .Tooltip to jQuery only if jQuery is present
4245   */
4246
4247
4248  defineJQueryPlugin(Tooltip);
4249
4250  /**
4251   * --------------------------------------------------------------------------
4252   * Bootstrap (v5.1.3): popover.js
4253   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
4254   * --------------------------------------------------------------------------
4255   */
4256  /**
4257   * ------------------------------------------------------------------------
4258   * Constants
4259   * ------------------------------------------------------------------------
4260   */
4261
4262  const NAME$3 = 'popover';
4263  const DATA_KEY$3 = 'bs.popover';
4264  const EVENT_KEY$3 = `.${DATA_KEY$3}`;
4265  const CLASS_PREFIX = 'bs-popover';
4266  const Default$2 = { ...Tooltip.Default,
4267    placement: 'right',
4268    offset: [0, 8],
4269    trigger: 'click',
4270    content: '',
4271    template: '<div class="popover" role="tooltip">' + '<div class="popover-arrow"></div>' + '<h3 class="popover-header"></h3>' + '<div class="popover-body"></div>' + '</div>'
4272  };
4273  const DefaultType$2 = { ...Tooltip.DefaultType,
4274    content: '(string|element|function)'
4275  };
4276  const Event$1 = {
4277    HIDE: `hide${EVENT_KEY$3}`,
4278    HIDDEN: `hidden${EVENT_KEY$3}`,
4279    SHOW: `show${EVENT_KEY$3}`,
4280    SHOWN: `shown${EVENT_KEY$3}`,
4281    INSERTED: `inserted${EVENT_KEY$3}`,
4282    CLICK: `click${EVENT_KEY$3}`,
4283    FOCUSIN: `focusin${EVENT_KEY$3}`,
4284    FOCUSOUT: `focusout${EVENT_KEY$3}`,
4285    MOUSEENTER: `mouseenter${EVENT_KEY$3}`,
4286    MOUSELEAVE: `mouseleave${EVENT_KEY$3}`
4287  };
4288  const SELECTOR_TITLE = '.popover-header';
4289  const SELECTOR_CONTENT = '.popover-body';
4290  /**
4291   * ------------------------------------------------------------------------
4292   * Class Definition
4293   * ------------------------------------------------------------------------
4294   */
4295
4296  class Popover extends Tooltip {
4297    // Getters
4298    static get Default() {
4299      return Default$2;
4300    }
4301
4302    static get NAME() {
4303      return NAME$3;
4304    }
4305
4306    static get Event() {
4307      return Event$1;
4308    }
4309
4310    static get DefaultType() {
4311      return DefaultType$2;
4312    } // Overrides
4313
4314
4315    isWithContent() {
4316      return this.getTitle() || this._getContent();
4317    }
4318
4319    setContent(tip) {
4320      this._sanitizeAndSetContent(tip, this.getTitle(), SELECTOR_TITLE);
4321
4322      this._sanitizeAndSetContent(tip, this._getContent(), SELECTOR_CONTENT);
4323    } // Private
4324
4325
4326    _getContent() {
4327      return this._resolvePossibleFunction(this._config.content);
4328    }
4329
4330    _getBasicClassPrefix() {
4331      return CLASS_PREFIX;
4332    } // Static
4333
4334
4335    static jQueryInterface(config) {
4336      return this.each(function () {
4337        const data = Popover.getOrCreateInstance(this, config);
4338
4339        if (typeof config === 'string') {
4340          if (typeof data[config] === 'undefined') {
4341            throw new TypeError(`No method named "${config}"`);
4342          }
4343
4344          data[config]();
4345        }
4346      });
4347    }
4348
4349  }
4350  /**
4351   * ------------------------------------------------------------------------
4352   * jQuery
4353   * ------------------------------------------------------------------------
4354   * add .Popover to jQuery only if jQuery is present
4355   */
4356
4357
4358  defineJQueryPlugin(Popover);
4359
4360  /**
4361   * --------------------------------------------------------------------------
4362   * Bootstrap (v5.1.3): scrollspy.js
4363   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
4364   * --------------------------------------------------------------------------
4365   */
4366  /**
4367   * ------------------------------------------------------------------------
4368   * Constants
4369   * ------------------------------------------------------------------------
4370   */
4371
4372  const NAME$2 = 'scrollspy';
4373  const DATA_KEY$2 = 'bs.scrollspy';
4374  const EVENT_KEY$2 = `.${DATA_KEY$2}`;
4375  const DATA_API_KEY$1 = '.data-api';
4376  const Default$1 = {
4377    offset: 10,
4378    method: 'auto',
4379    target: ''
4380  };
4381  const DefaultType$1 = {
4382    offset: 'number',
4383    method: 'string',
4384    target: '(string|element)'
4385  };
4386  const EVENT_ACTIVATE = `activate${EVENT_KEY$2}`;
4387  const EVENT_SCROLL = `scroll${EVENT_KEY$2}`;
4388  const EVENT_LOAD_DATA_API = `load${EVENT_KEY$2}${DATA_API_KEY$1}`;
4389  const CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item';
4390  const CLASS_NAME_ACTIVE$1 = 'active';
4391  const SELECTOR_DATA_SPY = '[data-bs-spy="scroll"]';
4392  const SELECTOR_NAV_LIST_GROUP$1 = '.nav, .list-group';
4393  const SELECTOR_NAV_LINKS = '.nav-link';
4394  const SELECTOR_NAV_ITEMS = '.nav-item';
4395  const SELECTOR_LIST_ITEMS = '.list-group-item';
4396  const SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}, .${CLASS_NAME_DROPDOWN_ITEM}`;
4397  const SELECTOR_DROPDOWN$1 = '.dropdown';
4398  const SELECTOR_DROPDOWN_TOGGLE$1 = '.dropdown-toggle';
4399  const METHOD_OFFSET = 'offset';
4400  const METHOD_POSITION = 'position';
4401  /**
4402   * ------------------------------------------------------------------------
4403   * Class Definition
4404   * ------------------------------------------------------------------------
4405   */
4406
4407  class ScrollSpy extends BaseComponent {
4408    constructor(element, config) {
4409      super(element);
4410      this._scrollElement = this._element.tagName === 'BODY' ? window : this._element;
4411      this._config = this._getConfig(config);
4412      this._offsets = [];
4413      this._targets = [];
4414      this._activeTarget = null;
4415      this._scrollHeight = 0;
4416      EventHandler.on(this._scrollElement, EVENT_SCROLL, () => this._process());
4417      this.refresh();
4418
4419      this._process();
4420    } // Getters
4421
4422
4423    static get Default() {
4424      return Default$1;
4425    }
4426
4427    static get NAME() {
4428      return NAME$2;
4429    } // Public
4430
4431
4432    refresh() {
4433      const autoMethod = this._scrollElement === this._scrollElement.window ? METHOD_OFFSET : METHOD_POSITION;
4434      const offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method;
4435      const offsetBase = offsetMethod === METHOD_POSITION ? this._getScrollTop() : 0;
4436      this._offsets = [];
4437      this._targets = [];
4438      this._scrollHeight = this._getScrollHeight();
4439      const targets = SelectorEngine.find(SELECTOR_LINK_ITEMS, this._config.target);
4440      targets.map(element => {
4441        const targetSelector = getSelectorFromElement(element);
4442        const target = targetSelector ? SelectorEngine.findOne(targetSelector) : null;
4443
4444        if (target) {
4445          const targetBCR = target.getBoundingClientRect();
4446
4447          if (targetBCR.width || targetBCR.height) {
4448            return [Manipulator[offsetMethod](target).top + offsetBase, targetSelector];
4449          }
4450        }
4451
4452        return null;
4453      }).filter(item => item).sort((a, b) =>
4453 a[0] - b[0]).forEach(item => {
4454        this._offsets.push(item[0]);
4455
4456        this._targets.push(item[1]);
4457      });
4458    }
4459
4460    dispose() {
4461      EventHandler.off(this._scrollElement, EVENT_KEY$2);
4462      super.dispose();
4463    } // Private
4464
4465
4466    _getConfig(config) {
4467      config = { ...Default$1,
4468        ...Manipulator.getDataAttributes(this._element),
4469        ...(typeof config === 'object' && config ? config : {})
4470      };
4471      config.target = getElement(config.target) || document.documentElement;
4472      typeCheckConfig(NAME$2, config, DefaultType$1);
4473      return config;
4474    }
4475
4476    _getScrollTop() {
4477      return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop;
4478    }
4479
4480    _getScrollHeight() {
4481      return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);
4482    }
4483
4484    _getOffsetHeight() {
4485      return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height;
4486    }
4487
4488    _process() {
4489      const scrollTop = this._getScrollTop() + this._config.offset;
4490
4491      const scrollHeight = this._getScrollHeight();
4492
4493      const maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight();
4494
4495      if (this._scrollHeight !== scrollHeight) {
4496        this.refresh();
4497      }
4498
4499      if (scrollTop >= maxScroll) {
4500        const target = this._targets[this._targets.length - 1];
4501
4502        if (this._activeTarget !== target) {
4503          this._activate(target);
4504        }
4505
4506        return;
4507      }
4508
4509      if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {
4510        this._activeTarget = null;
4511
4512        this._clear();
4513
4514        return;
4515      }
4516
4517      for (let i = this._offsets.length; i--;) {
4518        const isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]);
4519
4520        if (isActiveTarget) {
4521          this._activate(this._targets[i]);
4522        }
4523      }
4524    }
4525
4526    _activate(target) {
4527      this._activeTarget = target;
4528
4529      this._clear();
4530
4531      const queries = SELECTOR_LINK_ITEMS.split(',').map(selector => `${selector}[data-bs-target="${target}"],${selector}[href="${target}"]`);
4532      const link = SelectorEngine.findOne(queries.join(','), this._config.target);
4533      link.classList.add(CLASS_NAME_ACTIVE$1);
4534
4535      if (link.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {
4536        SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE$1, link.closest(SELECTOR_DROPDOWN$1)).classList.add(CLASS_NAME_ACTIVE$1);
4537      } else {
4538        SelectorEngine.parents(link, SELECTOR_NAV_LIST_GROUP$1).forEach(listGroup => {
4539          // Set triggered links parents as active
4540          // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor
4541          SelectorEngine.prev(listGroup, `${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`).forEach(item => item.classList.add(CLASS_NAME_ACTIVE$1)); // Handle special case when .nav-link is inside .nav-item
4542
4543          SelectorEngine.prev(listGroup, SELECTOR_NAV_ITEMS).forEach(navItem => {
4544            SelectorEngine.children(navItem, SELECTOR_NAV_LINKS).forEach(item => item.classList.add(CLASS_NAME_ACTIVE$1));
4545          });
4546        });
4547      }
4548
4549      EventHandler.trigger(this._scrollElement, EVENT_ACTIVATE, {
4550        relatedTarget: target
4551      });
4552    }
4553
4554    _clear() {
4555      SelectorEngine.find(SELECTOR_LINK_ITEMS, this._config.target).filter(node => node.classList.contains(CLASS_NAME_ACTIVE$1)).forEach(node => node.classList.remove(CLASS_NAME_ACTIVE$1));
4556    } // Static
4557
4558
4559    static jQueryInterface(config) {
4560      return this.each(function () {
4561        const data = ScrollSpy.getOrCreateInstance(this, config);
4562
4563        if (typeof config !== 'string') {
4564          return;
4565        }
4566
4567        if (typeof data[config] === 'undefined') {
4568          throw new TypeError(`No method named "${config}"`);
4569        }
4570
4571        data[config]();
4572      });
4573    }
4574
4575  }
4576  /**
4577   * ------------------------------------------------------------------------
4578   * Data Api implementation
4579   * ------------------------------------------------------------------------
4580   */
4581
4582
4583  EventHandler.on(window, EVENT_LOAD_DATA_API, () => {
4584    SelectorEngine.find(SELECTOR_DATA_SPY).forEach(spy => new ScrollSpy(spy));
4585  });
4586  /**
4587   * ------------------------------------------------------------------------
4588   * jQuery
4589   * ------------------------------------------------------------------------
4590   * add .ScrollSpy to jQuery only if jQuery is present
4591   */
4592
4593  defineJQueryPlugin(ScrollSpy);
4594
4595  /**
4596   * --------------------------------------------------------------------------
4597   * Bootstrap (v5.1.3): tab.js
4598   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
4599   * --------------------------------------------------------------------------
4600   */
4601  /**
4602   * ------------------------------------------------------------------------
4603   * Constants
4604   * ------------------------------------------------------------------------
4605   */
4606
4607  const NAME$1 = 'tab';
4608  const DATA_KEY$1 = 'bs.tab';
4609  const EVENT_KEY$1 = `.${DATA_KEY$1}`;
4610  const DATA_API_KEY = '.data-api';
4611  const EVENT_HIDE$1 = `hide${EVENT_KEY$1}`;
4612  const EVENT_HIDDEN$1 = `hidden${EVENT_KEY$1}`;
4613  const EVENT_SHOW$1 = `show${EVENT_KEY$1}`;
4614  const EVENT_SHOWN$1 = `shown${EVENT_KEY$1}`;
4615  const EVENT_CLICK_DATA_API = `click${EVENT_KEY$1}${DATA_API_KEY}`;
4616  const CLASS_NAME_DROPDOWN_MENU = 'dropdown-menu';
4617  const CLASS_NAME_ACTIVE = 'active';
4618  const CLASS_NAME_FADE$1 = 'fade';
4619  const CLASS_NAME_SHOW$1 = 'show';
4620  const SELECTOR_DROPDOWN = '.dropdown';
4621  const SELECTOR_NAV_LIST_GROUP = '.nav, .list-group';
4622  const SELECTOR_ACTIVE = '.active';
4623  const SELECTOR_ACTIVE_UL = ':scope > li > .active';
4624  const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]';
4625  const SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';
4626  const SELECTOR_DROPDOWN_ACTIVE_CHILD = ':scope > .dropdown-menu .active';
4627  /**
4628   * ------------------------------------------------------------------------
4629   * Class Definition
4630   * ------------------------------------------------------------------------
4631   */
4632
4633  class Tab extends BaseComponent {
4634    // Getters
4635    static get NAME() {
4636      return NAME$1;
4637    } // Public
4638
4639
4640    show() {
4641      if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && this._element.classList.contains(CLASS_NAME_ACTIVE)) {
4642        return;
4643      }
4644
4645      let previous;
4646      const target = getElementFromSelector(this._element);
4647
4648      const listElement = this._element.closest(SELECTOR_NAV_LIST_GROUP);
4649
4650      if (listElement) {
4651        const itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE;
4652        previous = SelectorEngine.find(itemSelector, listElement);
4653        previous = previous[previous.length - 1];
4654      }
4655
4656      const hideEvent = previous ? EventHandler.trigger(previous, EVENT_HIDE$1, {
4657        relatedTarget: this._element
4658      }) : null;
4659      const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$1, {
4660        relatedTarget: previous
4661      });
4662
4663      if (showEvent.defaultPrevented || hideEvent !== null && hideEvent.defaultPrevented) {
4664        return;
4665      }
4666
4667      this._activate(this._element, listElement);
4668
4669      const complete = () => {
4670        EventHandler.trigger(previous, EVENT_HIDDEN$1, {
4671          relatedTarget: this._element
4672        });
4673        EventHandler.trigger(this._element, EVENT_SHOWN$1, {
4674          relatedTarget: previous
4675        });
4676      };
4677
4678      if (target) {
4679        this._activate(target, target.parentNode, complete);
4680      } else {
4681        complete();
4682      }
4683    } // Private
4684
4685
4686    _activate(element, container, callback) {
4687      const activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ? SelectorEngine.find(SELECTOR_ACTIVE_UL, container) : SelectorEngine.children(container, SELECTOR_ACTIVE);
4688      const active = activeElements[0];
4689      const isTransitioning = callback && active && active.classList.contains(CLASS_NAME_FADE$1);
4690
4691      const complete = () => this._transitionComplete(element, active, callback);
4692
4693      if (active && isTransitioning) {
4694        active.classList.remove(CLASS_NAME_SHOW$1);
4695
4696        this._queueCallback(complete, element, true);
4697      } else {
4698        complete();
4699      }
4700    }
4701
4702    _transitionComplete(element, active, callback) {
4703      if (active) {
4704        active.classList.remove(CLASS_NAME_ACTIVE);
4705        const dropdownChild = SelectorEngine.findOne(SELECTOR_DROPDOWN_ACTIVE_CHILD, active.parentNode);
4706
4707        if (dropdownChild) {
4708          dropdownChild.classList.remove(CLASS_NAME_ACTIVE);
4709        }
4710
4711        if (active.getAttribute('role') === 'tab') {
4712          active.setAttribute('aria-selected', false);
4713        }
4714      }
4715
4716      element.classList.add(CLASS_NAME_ACTIVE);
4717
4718      if (element.getAttribute('role') === 'tab') {
4719        element.setAttribute('aria-selected', true);
4720      }
4721
4722      reflow(element);
4723
4724      if (element.classList.contains(CLASS_NAME_FADE$1)) {
4725        element.classList.add(CLASS_NAME_SHOW$1);
4726      }
4727
4728      let parent = element.parentNode;
4729
4730      if (parent && parent.nodeName === 'LI') {
4731        parent = parent.parentNode;
4732      }
4733
4734      if (parent && parent.classList.contains(CLASS_NAME_DROPDOWN_MENU)) {
4735        const dropdownElement = element.closest(SELECTOR_DROPDOWN);
4736
4737        if (dropdownElement) {
4738          SelectorEngine.find(SELECTOR_DROPDOWN_TOGGLE, dropdownElement).forEach(dropdown => dropdown.classList.add(CLASS_NAME_ACTIVE));
4739        }
4740
4741        element.setAttribute('aria-expanded', true);
4742      }
4743
4744      if (callback) {
4745        callback();
4746      }
4747    } // Static
4748
4749
4750    static jQueryInterface(config) {
4751      return this.each(function () {
4752        const data = Tab.getOrCreateInstance(this);
4753
4754        if (typeof config === 'string') {
4755          if (typeof data[config] === 'undefined') {
4756            throw new TypeError(`No method named "${config}"`);
4757          }
4758
4759          data[config]();
4760        }
4761      });
4762    }
4763
4764  }
4765  /**
4766   * ------------------------------------------------------------------------
4767   * Data Api implementation
4768   * ------------------------------------------------------------------------
4769   */
4770
4771
4772  EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
4773    if (['A', 'AREA'].includes(this.tagName)) {
4774      event.preventDefault();
4775    }
4776
4777    if (isDisabled(this)) {
4778      return;
4779    }
4780
4781    const data = Tab.getOrCreateInstance(this);
4782    data.show();
4783  });
4784  /**
4785   * ------------------------------------------------------------------------
4786   * jQuery
4787   * ------------------------------------------------------------------------
4788   * add .Tab to jQuery only if jQuery is present
4789   */
4790
4791  defineJQueryPlugin(Tab);
4792
4793  /**
4794   * --------------------------------------------------------------------------
4795   * Bootstrap (v5.1.3): toast.js
4796   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
4797   * --------------------------------------------------------------------------
4798   */
4799  /**
4800   * ------------------------------------------------------------------------
4801   * Constants
4802   * ------------------------------------------------------------------------
4803   */
4804
4805  const NAME = 'toast';
4806  const DATA_KEY = 'bs.toast';
4807  const EVENT_KEY = `.${DATA_KEY}`;
4808  const EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`;
4809  const EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`;
4810  const EVENT_FOCUSIN = `focusin${EVENT_KEY}`;
4811  const EVENT_FOCUSOUT = `focusout${EVENT_KEY}`;
4812  const EVENT_HIDE = `hide${EVENT_KEY}`;
4813  const EVENT_HIDDEN = `hidden${EVENT_KEY}`;
4814  const EVENT_SHOW = `show${EVENT_KEY}`;
4815  const EVENT_SHOWN = `shown${EVENT_KEY}`;
4816  const CLASS_NAME_FADE = 'fade';
vendor: 4,599 bytes, lines 4817-5002
4817  const CLASS_NAME_HIDE = 'hide'; // @deprecated - kept here only for backwards compatibility
4818
4819  const CLASS_NAME_SHOW = 'show';
4820  const CLASS_NAME_SHOWING = 'showing';
4821  const DefaultType = {
4822    animation: 'boolean',
4823    autohide: 'boolean',
4824    delay: 'number'
4825  };
4826  const Default = {
4827    animation: true,
4828    autohide: true,
4829    delay: 5000
4830  };
4831  /**
4832   * ------------------------------------------------------------------------
4833   * Class Definition
4834   * ------------------------------------------------------------------------
4835   */
4836
4837  class Toast extends BaseComponent {
4838    constructor(element, config) {
4839      super(element);
4840      this._config = this._getConfig(config);
4841      this._timeout = null;
4842      this._hasMouseInteraction = false;
4843      this._hasKeyboardInteraction = false;
4844
4845      this._setListeners();
4846    } // Getters
4847
4848
4849    static get DefaultType() {
4850      return DefaultType;
4851    }
4852
4853    static get Default() {
4854      return Default;
4855    }
4856
4857    static get NAME() {
4858      return NAME;
4859    } // Public
4860
4861
4862    show() {
4863      const showEvent = EventHandler.trigger(this._element, EVENT_SHOW);
4864
4865      if (showEvent.defaultPrevented) {
4866        return;
4867      }
4868
4869      this._clearTimeout();
4870
4871      if (this._config.animation) {
4872        this._element.classList.add(CLASS_NAME_FADE);
4873      }
4874
4875      const complete = () => {
4876        this._element.classList.remove(CLASS_NAME_SHOWING);
4877
4878        EventHandler.trigger(this._element, EVENT_SHOWN);
4879
4880        this._maybeScheduleHide();
4881      };
4882
4883      this._element.classList.remove(CLASS_NAME_HIDE); // @deprecated
4884
4885
4886      reflow(this._element);
4887
4888      this._element.classList.add(CLASS_NAME_SHOW);
4889
4890      this._element.classList.add(CLASS_NAME_SHOWING);
4891
4892      this._queueCallback(complete, this._element, this._config.animation);
4893    }
4894
4895    hide() {
4896      if (!this._element.classList.contains(CLASS_NAME_SHOW)) {
4897        return;
4898      }
4899
4900      const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE);
4901
4902      if (hideEvent.defaultPrevented) {
4903        return;
4904      }
4905
4906      const complete = () => {
4907        this._element.classList.add(CLASS_NAME_HIDE); // @deprecated
4908
4909
4910        this._element.classList.remove(CLASS_NAME_SHOWING);
4911
4912        this._element.classList.remove(CLASS_NAME_SHOW);
4913
4914        EventHandler.trigger(this._element, EVENT_HIDDEN);
4915      };
4916
4917      this._element.classList.add(CLASS_NAME_SHOWING);
4918
4919      this._queueCallback(complete, this._element, this._config.animation);
4920    }
4921
4922    dispose() {
4923      this._clearTimeout();
4924
4925      if (this._element.classList.contains(CLASS_NAME_SHOW)) {
4926        this._element.classList.remove(CLASS_NAME_SHOW);
4927      }
4928
4929      super.dispose();
4930    } // Private
4931
4932
4933    _getConfig(config) {
4934      config = { ...Default,
4935        ...Manipulator.getDataAttributes(this._element),
4936        ...(typeof config === 'object' && config ? config : {})
4937      };
4938      typeCheckConfig(NAME, config, this.constructor.DefaultType);
4939      return config;
4940    }
4941
4942    _maybeScheduleHide() {
4943      if (!this._config.autohide) {
4944        return;
4945      }
4946
4947      if (this._hasMouseInteraction || this._hasKeyboardInteraction) {
4948        return;
4949      }
4950
4951      this._timeout = setTimeout(() => {
4952        this.hide();
4953      }, this._config.delay);
4954    }
4955
4956    _onInteraction(event, isInteracting) {
4957      switch (event.type) {
4958        case 'mouseover':
4959        case 'mouseout':
4960          this._hasMouseInteraction = isInteracting;
4961          break;
4962
4963        case 'focusin':
4964        case 'focusout':
4965          this._hasKeyboardInteraction = isInteracting;
4966          break;
4967      }
4968
4969      if (isInteracting) {
4970        this._clearTimeout();
4971
4972        return;
4973      }
4974
4975      const nextElement = event.relatedTarget;
4976
4977      if (this._element === nextElement || this._element.contains(nextElement)) {
4978        return;
4979      }
4980
4981      this._maybeScheduleHide();
4982    }
4983
4984    _setListeners() {
4985      EventHandler.on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true));
4986      EventHandler.on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false));
4987      EventHandler.on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true));
4988      EventHandler.on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false));
4989    }
4990
4991    _clearTimeout() {
4992      clearTimeout(this._timeout);
4993      this._timeout = null;
4994    } // Static
4995
4996
4997    static jQueryInterface(config) {
4998      return this.each(function () {
4999        const data = Toast.getOrCreateInstance(this, config);
5000
5001        if (typeof config === 'string') {
5002          if (typeof data[config] === 'undefined') {
5003            throw new TypeError(`No method named "${config}"`);
5004          }
5005
5006          data[config](this);
5007        }
5008      });
5009    }
5010
5011  }
5012
5013  enableDismissTrigger(Toast);
5014  /**
5015   * ------------------------------------------------------------------------
5016   * jQuery
5017   * ------------------------------------------------------------------------
5018   * add .Toast to jQuery only if jQuery is present
5019   */
5020
5021  defineJQueryPlugin(Toast);
5022
5023  /**
5024   * --------------------------------------------------------------------------
5025   * Bootstrap (v5.1.3): index.umd.js
5026   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
5027   * --------------------------------------------------------------------------
5028   */
5029  const index_umd = {
5030    Alert,
5031    Button,
5032    Carousel,
5033    Collapse,
5034    Dropdown,
5035    Modal,
5036    Offcanvas,
5037    Popover,
5038    ScrollSpy,
5039    Tab,
5040    Toast,
5041    Tooltip
5042  };
5043
5044  return index_umd;
5045
5046}));
5047//# sourceMappingURL=bootstrap.js.map
5048
vendor: 89,947 bytes, lines 5049-5050
5049/*! jQuery v3.6.3 | (c) OpenJS Foundation and other contributors | jquery.org/license */
5050!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,y=n.hasOwnProperty,a=y.toString,l=a.call(Object),v={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},S=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||S).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.3",E=function(e,t){return new E.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}E.fn=E.prototype={jquery:f,constructor:E,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=E.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return E.each(this,e)},map:function(n){return this.pushStack(E.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(E.grep(this,function(e,t){return(t+1)%2}))},odd:function(){return this.pushStack(E.grep(this,function(e,t){return t%2}))},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},E.extend=E.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(E.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||E.isPlainObject(n)?n:{},i=!1,a[t]=E.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},E.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=y.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t,n){b(e,{nonce:t&&t.nonce},n)},each:function(e,t){var n,r=0;if(p(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},makeArray:function(e,t){var n=t||[];return null!=e&&(p(Object(e))?E.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(p(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g(a)},guid:1,support:v}),"function"==typeof Symbol&&(E.fn[Symbol.iterator]=t[Symbol.iterator]),E.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var d=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,S,y,s,c,v,E="sizzle"+1*new Date,p=n.document,k=0,r=0,m=ue(),x=ue(),A=ue(),N=ue(),j=function(e,t){return e===t&&(l=!0),0},D={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",I="(?:\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",W="\\["+M+"*("+I+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+I+"))|)"+M+"*\\]",F=":("+I+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+W+")*)|.*)\\)|)",$=new RegExp(M+"+","g"),B=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=new RegExp("^"+M+"*,"+M+"*"),z=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,S)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&v(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!y||!y.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ve(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=E)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{if(d.cssSupportsSelector&&!CSS.supports("selector(:is("+c+"))"))throw new Error;return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===E&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[E]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ye(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ve(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,S=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.cssSupportsSelector=ce(function(){return CSS.supports("selector(*)")&&C.querySelectorAll(":is(:jqfake)")&&!CSS.supports("selector(:is(*,:jqfake))")}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=E,!C.getElementsByName||!C.getElementsByName(E).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&S){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&S){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&S)return t.getElementsByClassName(e)},s=[],y=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="<a id='"+E+"'></a><select id='"+E+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+E+"-]").length||y.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||y.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+E+"+*").length||y.push(".#.+[+~]"),e.querySelectorAll("\\\f"),y.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),d.cssSupportsSelector||y.push(":has"),y=y.length&&new RegExp(y.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),v=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType&&e.documentElement||e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&v(p,e)?-1:t==C||t.ownerDocument==p&&v(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&S&&!N[t+" "]&&(!s||!s.test(t))&&(!y||!y.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0<se(t,C,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!=C&&T(e),v(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!=C&&T(e);var n=b.attrHandle[t.toLowerCase()],r=n&&D.call(b.attrHandle,t.toLowerCase())?n(e,t,!S):void 0;return void 0!==r?r:d.attributes||!S?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!d.detectDuplicates,u=!d.sortStable&&e.slice(0),e.sort(j),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(b=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace($," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(h,e,t,g,y){var v="nth"!==h.slice(0,3),m="last"!==h.slice(-4),x="of-type"===e;return 1===g&&0===y?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=v!==m?"nextSibling":"previousSibling",c=e.parentNode,f=x&&e.nodeName.toLowerCase(),p=!n&&!x,d=!1;if(c){if(v){while(l){a=e;while(a=a[l])if(x?a.nodeName.toLowerCase()===f:1===a.nodeType)return!1;u=l="only"===h&&!u&&"nextSibling"}return!0}if(u=[m?c.firstChild:c.lastChild],m&&p){d=(s=(r=(i=(o=(a=c)[E]||(a[E]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===k&&r[1])&&r[2],a=s&&c.childNodes[s];while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if(1===a.nodeType&&++d&&a===e){i[h]=[k,s,d];break}}else if(p&&(d=s=(r=(i=(o=(a=e)[E]||(a[E]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===k&&r[1]),!1===d)while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if((x?a.nodeName.toLowerCase()===f:1===a.nodeType)&&++d&&(p&&((i=(o=a[E]||(a[E]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[k,d]),a===e))break;return(d-=y)===g||d%g==0&&0<=d/g}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return a[E]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=P(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r=[],i=[],s=f(e.replace(B,"$1"));return s[E]?le(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:le(function(t){return function(e){return 0<se(t,e).length}}),contains:le(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return V.test(n||"")||se.error("unsupported lang: "+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=S?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===a},focus:function(e){return e===C.activeElement&&(!C.hasFocus||C.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ye(function(){return[0]}),last:ye(function(e,t){return[t-1]}),eq:ye(function(e,t,n){return[n<0?n+t:n]}),even:ye(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ye(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ye(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:ye(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=de(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=he(e);function me(){}function xe(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function be(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&"parentNode"===c,p=r++;return e.first?function(e,t,n){while(e=e[u])if(1===e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,a=[k,p];if(n){while(e=e[u])if((1===e.nodeType||f)&&s(e,t,n))return!0}else while(e=e[u])if(1===e.nodeType||f)if(i=(o=e[E]||(e[E]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===k&&r[1]===p)return a[2]=r[2];if((i[c]=a)[2]=s(e,t,n))return!0}return!1}}function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Ce(d,h,g,y,v,e){return y&&!y[E]&&(y=Ce(y)),v&&!v[E]&&(v=Ce(v,e)),le(function(e,t,n,r){var i,o,a,s=[],u=[],l=t.length,c=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)se(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),f=!d||!e&&h?c:Te(c,s,d,n,r),p=g?v||(e?d:l||y)?[]:t:f;if(g&&g(f,p,n,r),y){i=Te(p,u),y(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(p[u[o]]=!(f[u[o]]=a))}if(e){if(v||d){if(v){i=[],o=p.length;while(o--)(a=p[o])&&i.push(f[o]=a);v(null,p=[],i,r)}o=p.length;while(o--)(a=p[o])&&-1<(i=v?P(e,a):s[o])&&(e[i]=!(t[i]=a))}}else p=Te(p===t?p.splice(l,p.length):p),v?v(null,t,p,r):H.apply(t,p)})}function Se(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=be(function(e){return e===i},a,!0),l=be(function(e){return-1<P(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[be(we(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[E]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return Ce(1<s&&we(c),1<s&&xe(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(B,"$1"),t,s<n&&Se(e.slice(s,n)),n<r&&Se(e=e.slice(n)),n<r&&xe(e))}c.push(t)}return we(c)}return me.prototype=b.filters=b.pseudos,b.setFilters=new me,h=se.tokenize=function(e,t){var n,r,i,o,a,s,u,l=x[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=_.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=z.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace(B," ")}),a=a.slice(n.length)),b.filter)!(r=G[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):x(e,s).slice(0)},f=se.compile=function(e,t){var n,y,v,m,x,r,i=[],o=[],a=A[e+" "];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Se(t[n]))[E]?i.push(a):o.push(a);(a=A(e,(y=o,m=0<(v=i).length,x=0<y.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=k+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t==C||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument==C||(T(o),n=!S);while(s=y[a++])if(s(o,t||C,n)){r.push(o);break}i&&(k=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=v[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=q.call(r));f=Te(f)}H.apply(r,f),i&&!e&&0<f.length&&1<u+v.length&&se.uniqueSort(r)}return i&&(k=h,w=p),c},m?le(r):r))).selector=e}return a},g=se.select=function(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&h(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&S&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=G.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(te,ne),ee.test(o[0].type)&&ve(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&xe(o)))return H.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!S,n,!t||ee.test(e)&&ve(t.parentNode)||t),n},d.sortStable=E.split("").sort(j).join("")===E,d.detectDuplicates=!!l,T(),d.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(C.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);E.find=d,E.expr=d.selectors,E.expr[":"]=E.expr.pseudos,E.uniqueSort=E.unique=d.uniqueSort,E.text=d.getText,E.isXMLDoc=d.isXML,E.contains=d.contains,E.escapeSelector=d.escape;var h=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&E(e).is(n))break;r.push(e)}return r},T=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},k=E.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var N=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?E.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?E.grep(e,function(e){return e===n!==r}):"string"!=typeof n?E.grep(e,function(e){return-1<i.call(n,e)!==r}):E.filter(n,e,r)}E.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?E.find.matchesSelector(r,e)?[r]:[]:E.find.matches(e,E.grep(t,function(e){return 1===e.nodeType}))},E.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(E(e).filter(function(){for(t=0;t<r;t++)if(E.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)E.find(e,i[t],n);return 1<r?E.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&k.test(e)?E(e):e||[],!1).length}});var D,q=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(E.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof E?t[0]:t,E.merge(this,E.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:S,!0)),N.test(r[1])&&E.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=S.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(E):E.makeArray(e,this)}).prototype=E.fn,D=E(S);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}E.fn.extend({has:function(e){var t=E(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(E.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&E(e);if(!k.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&E.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?E.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?i.call(E(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(E.uniqueSort(E.merge(this.get(),E(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),E.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return h(e,"parentNode")},parentsUntil:function(e,t,n){return h(e,"parentNode",n)},next:function(e){return O(e,"nextSibling")},prev:function(e){return O(e,"previousSibling")},nextAll:function(e){return h(e,"nextSibling")},prevAll:function(e){return h(e,"previousSibling")},nextUntil:function(e,t,n){return h(e,"nextSibling",n)},prevUntil:function(e,t,n){return h(e,"previousSibling",n)},siblings:function(e){return T((e.parentNode||{}).firstChild,e)},children:function(e){return T(e.firstChild)},contents:function(e){return null!=e.contentDocument&&r(e.contentDocument)?e.contentDocument:(A(e,"template")&&(e=e.content||e),E.merge([],e.childNodes))}},function(r,i){E.fn[r]=function(e,t){var n=E.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=E.filter(t,n)),1<this.length&&(H[r]||E.uniqueSort(n),L.test(r)&&n.reverse()),this.pushStack(n)}});var P=/[^\x20\t\r\n\f]+/g;function R(e){return e}function M(e){throw e}function I(e,t,n,r){var i;try{e&&m(i=e.promise)?i.call(e).done(t).fail(n):e&&m(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}E.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},E.each(e.match(P)||[],function(e,t){n[t]=!0}),n):E.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){E.each(e,function(e,t){m(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==w(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return E.each(arguments,function(e,t){var n;while(-1<(n=E.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<E.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},E.extend({Deferred:function(e){var o=[["notify","progress",E.Callbacks("memory"),E.Callbacks("memory"),2],["resolve","done",E.Callbacks("once memory"),E.Callbacks("once memory"),0,"resolved"],["reject","fail",E.Callbacks("once memory"),E.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return E.Deferred(function(r){E.each(o,function(e,t){var n=m(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&m(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,m(t)?s?t.call(e,l(u,o,R,s),l(u,o,M,s)):(u++,t.call(e,l(u,o,R,s),l(u,o,M,s),l(u,o,R,o.notifyWith))):(a!==R&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){E.Deferred.exceptionHook&&E.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==M&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(E.Deferred.getStackHook&&(t.stackTrace=E.Deferred.getStackHook()),C.setTimeout(t))}}return E.Deferred(function(e){o[0][3].add(l(0,e,m(r)?r:R,e.notifyWith)),o[1][3].add(l(0,e,m(t)?t:R)),o[2][3].add(l(0,e,m(n)?n:M))}).promise()},promise:function(e){return null!=e?E.extend(e,a):a}},s={};return E.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=s.call(arguments),o=E.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(I(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||m(i[t]&&i[t].then)))return o.then();while(t--)I(i[t],a(t),o.reject);return o.promise()}});var W=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;E.Deferred.exceptionHook=function(e,t){C.console&&C.console.warn&&e&&W.test(e.name)&&C.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},E.readyException=function(e){C.setTimeout(function(){throw e})};var F=E.Deferred();function $(){S.removeEventListener("DOMContentLoaded",$),C.removeEventListener("load",$),E.ready()}E.fn.ready=function(e){return F.then(e)["catch"](function(e){E.readyException(e)}),this},E.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--E.readyWait:E.isReady)||(E.isReady=!0)!==e&&0<--E.readyWait||F.resolveWith(S,[E])}}),E.ready.then=F.then,"complete"===S.readyState||"loading"!==S.readyState&&!S.documentElement.doScroll?C.setTimeout(E.ready):(S.addEventListener("DOMContentLoaded",$),C.addEventListener("load",$));var B=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===w(n))for(s in i=!0,n)B(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,m(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(E(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},_=/^-ms-/,z=/-([a-z])/g;function U(e,t){return t.toUpperCase()}function X(e){return e.replace(_,"ms-").replace(z,U)}var V=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function G(){this.expando=E.expando+G.uid++}G.uid=1,G.prototype={cache:function(e){var t=e[this.expando];return t||(t={},V(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[X(t)]=n;else for(r in t)i[X(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][X(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(X):(t=X(t))in r?[t]:t.match(P)||[]).length;while(n--)delete r[t[n]]}(void 0===t||E.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!E.isEmptyObject(t)}};var Y=new G,Q=new G,J=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,K=/[A-Z]/g;function Z(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(K,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:J.test(i)?JSON.parse(i):i)}catch(e){}Q.set(e,t,n)}else n=void 0;return n}E.extend({hasData:function(e){return Q.hasData(e)||Y.hasData(e)},data:function(e,t,n){return Q.access(e,t,n)},removeData:function(e,t){Q.remove(e,t)},_data:function(e,t,n){return Y.access(e,t,n)},_removeData:function(e,t){Y.remove(e,t)}}),E.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=Q.get(o),1===o.nodeType&&!Y.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=X(r.slice(5)),Z(o,r,i[r]));Y.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){Q.set(this,n)}):B(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=Q.get(o,n))?t:void 0!==(t=Z(o,n))?t:void 0;this.each(function(){Q.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){Q.remove(this,e)})}}),E.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Y.get(e,t),n&&(!r||Array.isArray(n)?r=Y.access(e,t,E.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=E.queue(e,t),r=n.length,i=n.shift(),o=E._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){E.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Y.get(e,n)||Y.access(e,n,{empty:E.Callbacks("once memory").add(function(){Y.remove(e,[t+"queue",n])})})}}),E.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?E.queue(this[0],t):void 0===n?this:this.each(function(){var e=E.queue(this,t,n);E._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&E.dequeue(this,t)})},dequeue:function(e){return this.each(function(){E.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=E.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=Y.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var ee=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,te=new RegExp("^(?:([+-])=|)("+ee+")([a-z%]*)$","i"),ne=["Top","Right","Bottom","Left"],re=S.documentElement,ie=function(e){return E.contains(e.ownerDocument,e)},oe={composed:!0};re.getRootNode&&(ie=function(e){return E.contains(e.ownerDocument,e)||e.getRootNode(oe)===e.ownerDocument});var ae=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&ie(e)&&"none"===E.css(e,"display")};function se(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return E.css(e,t,"")},u=s(),l=n&&n[3]||(E.cssNumber[t]?"":"px"),c=e.nodeType&&(E.cssNumber[t]||"px"!==l&&+u)&&te.exec(E.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)E.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,E.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ue={};function le(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=Y.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&ae(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ue[s])||(o=a.body.appendChild(a.createElement(s)),u=E.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ue[s]=u)))):"none"!==n&&(l[c]="none",Y.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}E.fn.extend({show:function(){return le(this,!0)},hide:function(){return le(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){ae(this)?E(this).show():E(this).hide()})}});var ce,fe,pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=S.createDocumentFragment().appendChild(S.createElement("div")),(fe=S.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),v.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="<textarea>x</textarea>",v.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="<option></option>",v.option=!!ce.lastChild;var ge={thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function ye(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?E.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n<r;n++)Y.set(e[n],"globalEval",!t||Y.get(t[n],"globalEval"))}ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td,v.option||(ge.optgroup=ge.option=[1,"<select multiple='multiple'>","</select>"]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===w(o))E.merge(p,o.nodeType?[o]:o);else if(me.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+E.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;E.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<E.inArray(o,r))i&&i.push(o);else if(l=ie(o),a=ye(f.appendChild(o),"script"),l&&ve(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}var be=/^([^.]*)(?:\.(.+)|)/;function we(){return!0}function Te(){return!1}function Ce(e,t){return e===function(){try{return S.activeElement}catch(e){}}()==("focus"===t)}function Se(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Se(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Te;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return E().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=E.guid++)),e.each(function(){E.event.add(this,t,i,r,n)})}function Ee(e,i,o){o?(Y.set(e,i,!1),E.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Y.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(E.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Y.set(this,i,r),t=o(this,i),this[i](),r!==(n=Y.get(this,i))||t?Y.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n&&n.value}else r.length&&(Y.set(this,i,{value:E.event.trigger(E.extend(r[0],E.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Y.get(e,i)&&E.event.add(e,i,we)}E.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=Y.get(t);if(V(t)){n.handler&&(n=(o=n).handler,i=o.selector),i&&E.find.matchesSelector(re,i),n.guid||(n.guid=E.guid++),(u=y.events)||(u=y.events=Object.create(null)),(a=y.handle)||(a=y.handle=function(e){return"undefined"!=typeof E&&E.event.triggered!==e.type?E.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(P)||[""]).length;while(l--)d=g=(s=be.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=E.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=E.event.special[d]||{},c=E.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&E.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),E.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=Y.hasData(e)&&Y.get(e);if(y&&(u=y.events)){l=(t=(t||"").match(P)||[""]).length;while(l--)if(d=g=(s=be.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=E.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,y.handle)||E.removeEvent(e,d,y.handle),delete u[d])}else for(d in u)E.event.remove(e,d+t[l],n,r,!0);E.isEmptyObject(u)&&Y.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=new Array(arguments.length),u=E.event.fix(e),l=(Y.get(this,"events")||Object.create(null))[u.type]||[],c=E.event.special[u.type]||{};for(s[0]=u,t=1;t<arguments.length;t++)s[t]=arguments[t];if(u.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,u)){a=E.event.handlers.call(this,u,l),t=0;while((i=a[t++])&&!u.isPropagationStopped()){u.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!u.isImmediatePropagationStopped())u.rnamespace&&!1!==o.namespace&&!u.rnamespace.test(o.namespace)||(u.handleObj=o,u.data=o.data,void 0!==(r=((E.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,s))&&!1===(u.result=r)&&(u.preventDefault(),u.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,u),u.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<E(i,this).index(l):E.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(E.Event.prototype,t,{enumerable:!0,configurable:!0,get:m(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[E.expando]?e:new E.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&Ee(t,"click",we),!1},trigger:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&Ee(t,"click"),!0},_default:function(e){var t=e.target;return pe.test(t.type)&&t.click&&A(t,"input")&&Y.get(t,"click")||A(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},E.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},E.Event=function(e,t){if(!(this instanceof E.Event))return new E.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?we:Te,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&E.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[E.expando]=!0},E.Event.prototype={constructor:E.Event,isDefaultPrevented:Te,isPropagationStopped:Te,isImmediatePropagationStopped:Te,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=we,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=we,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=we,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},E.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:!0},E.event.addProp),E.each({focus:"focusin",blur:"focusout"},function(t,e){E.event.special[t]={setup:function(){return Ee(this,t,Ce),!1},trigger:function(){return Ee(this,t),!0},_default:function(e){return Y.get(e.target,t)},delegateType:e}}),E.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){E.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||E.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),E.fn.extend({on:function(e,t,n,r){return Se(this,e,t,n,r)},one:function(e,t,n,r){return Se(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,E(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Te),this.each(function(){E.event.remove(this,e,n,t)})}});var ke=/<script|<style|<link/i,Ae=/checked\s*(?:[^=]|=\s*.checked.)/i,Ne=/^\s*<!\[CDATA\[|\]\]>\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&E(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n<r;n++)E.event.add(t,i,s[i][n]);Q.hasData(e)&&(o=Q.access(e),a=E.extend({},o),Q.set(t,a))}}function He(n,r,i,o){r=g(r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=m(d);if(h||1<f&&"string"==typeof d&&!v.checkClone&&Ae.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),He(t,r,i,o)});if(f&&(t=(e=xe(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=E.map(ye(e,"script"),De)).length;c<f;c++)u=e,c!==p&&(u=E.clone(u,!0,!0),s&&E.merge(a,ye(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,E.map(a,qe),c=0;c<s;c++)u=a[c],he.test(u.type||"")&&!Y.access(u,"globalEval")&&E.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?E._evalUrl&&!u.noModule&&E._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")},l):b(u.textContent.replace(Ne,""),u,l))}return n}function Oe(e,t,n){for(var r,i=t?E.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||E.cleanData(ye(r)),r.parentNode&&(n&&ie(r)&&ve(ye(r,"script")),r.parentNode.removeChild(r));return e}E.extend({htmlPrefilter:function(e){return e},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=ie(e);if(!(v.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||E.isXMLDoc(e)))for(a=ye(c),r=0,i=(o=ye(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&pe.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ye(e),a=a||ye(c),r=0,i=o.length;r<i;r++)Le(o[r],a[r]);else Le(e,c);return 0<(a=ye(c,"script")).length&&ve(a,!f&&ye(e,"script")),c},cleanData:function(e){for(var t,n,r,i=E.event.special,o=0;void 0!==(n=e[o]);o++)if(V(n)){if(t=n[Y.expando]){if(t.events)for(r in t.events)i[r]?E.event.remove(n,r):E.removeEvent(n,r,t.handle);n[Y.expando]=void 0}n[Q.expando]&&(n[Q.expando]=void 0)}}}),E.fn.extend({detach:function(e){return Oe(this,e,!0)},remove:function(e){return Oe(this,e)},text:function(e){return B(this,function(e){return void 0===e?E.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return He(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||je(this,e).appendChild(e)})},prepend:function(){return He(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=je(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return He(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return He(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(E.cleanData(ye(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return E.clone(this,e,t)})},html:function(e){return B(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!ke.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=E.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(E.cleanData(ye(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return He(this,arguments,function(e){var t=this.parentNode;E.inArray(this,n)<0&&(E.cleanData(ye(this)),t&&t.replaceChild(e,this))},n)}}),E.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){E.fn[e]=function(e){for(var t,n=[],r=E(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),E(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var Pe=new RegExp("^("+ee+")(?!px)[a-z%]+$","i"),Re=/^--/,Me=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=C),t.getComputedStyle(e)},Ie=function(e,t,n){var r,i,o={};for(i in t)o[i]=e.style[i],e.style[i]=t[i];for(i in r=n.call(e),t)e.style[i]=o[i];return r},We=new RegExp(ne.join("|"),"i"),Fe="[\\x20\\t\\r\\n\\f]",$e=new RegExp("^"+Fe+"+|((?:^|[^\\\\])(?:\\\\.)*)"+Fe+"+$","g");function Be(e,t,n){var r,i,o,a,s=Re.test(t),u=e.style;return(n=n||Me(e))&&(a=n.getPropertyValue(t)||n[t],s&&a&&(a=a.replace($e,"$1")||void 0),""!==a||ie(e)||(a=E.style(e,t)),!v.pixelBoxStyles()&&Pe.test(a)&&We.test(t)&&(r=u.width,i=u.minWidth,o=u.maxWidth,u.minWidth=u.maxWidth=u.width=a,a=n.width,u.width=r,u.minWidth=i,u.maxWidth=o)),void 0!==a?a+"":a}function _e(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(l){u.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",l.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",re.appendChild(u).appendChild(l);var e=C.getComputedStyle(l);n="1%"!==e.top,s=12===t(e.marginLeft),l.style.right="60%",o=36===t(e.right),r=36===t(e.width),l.style.position="absolute",i=12===t(l.offsetWidth/3),re.removeChild(u),l=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s,u=S.createElement("div"),l=S.createElement("div");l.style&&(l.style.backgroundClip="content-box",l.cloneNode(!0).style.backgroundClip="",v.clearCloneStyle="content-box"===l.style.backgroundClip,E.extend(v,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),s},scrollboxSize:function(){return e(),i},reliableTrDimensions:function(){var e,t,n,r;return null==a&&(e=S.createElement("table"),t=S.createElement("tr"),n=S.createElement("div"),e.style.cssText="position:absolute;left:-11111px;border-collapse:separate",t.style.cssText="border:1px solid",t.style.height="1px",n.style.height="9px",n.style.display="block",re.appendChild(e).appendChild(t).appendChild(n),r=C.getComputedStyle(t),a=parseInt(r.height,10)+parseInt(r.borderTopWidth,10)+parseInt(r.borderBottomWidth,10)===t.offsetHeight,re.removeChild(e)),a}}))}();var ze=["Webkit","Moz","ms"],Ue=S.createElement("div").style,Xe={};function Ve(e){var t=E.cssProps[e]||Xe[e];return t||(e in Ue?e:Xe[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=ze.length;while(n--)if((e=ze[n]+t)in Ue)return e}(e)||e)}var Ge=/^(none|table(?!-c[ea]).+)/,Ye={position:"absolute",visibility:"hidden",display:"block"},Qe={letterSpacing:"0",fontWeight:"400"};function Je(e,t,n){var r=te.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function Ke(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=E.css(e,n+ne[a],!0,i)),r?("content"===n&&(u-=E.css(e,"padding"+ne[a],!0,i)),"margin"!==n&&(u-=E.css(e,"border"+ne[a]+"Width",!0,i))):(u+=E.css(e,"padding"+ne[a],!0,i),"padding"!==n?u+=E.css(e,"border"+ne[a]+"Width",!0,i):s+=E.css(e,"border"+ne[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function Ze(e,t,n){var r=Me(e),i=(!v.boxSizingReliable()||n)&&"border-box"===E.css(e,"boxSizing",!1,r),o=i,a=Be(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if(Pe.test(a)){if(!n)return a;a="auto"}return(!v.boxSizingReliable()&&i||!v.reliableTrDimensions()&&A(e,"tr")||"auto"===a||!parseFloat(a)&&"inline"===E.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===E.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+Ke(e,t,n||(i?"border":"content"),o,r,a)+"px"}function et(e,t,n,r,i){return new et.prototype.init(e,t,n,r,i)}E.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Be(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=X(t),u=Re.test(t),l=e.style;if(u||(t=Ve(s)),a=E.cssHooks[t]||E.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=te.exec(n))&&i[1]&&(n=se(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(E.cssNumber[s]?"":"px")),v.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=X(t);return Re.test(t)||(t=Ve(s)),(a=E.cssHooks[t]||E.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=Be(e,t,r)),"normal"===i&&t in Qe&&(i=Qe[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),E.each(["height","width"],function(e,u){E.cssHooks[u]={get:function(e,t,n){if(t)return!Ge.test(E.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?Ze(e,u,n):Ie(e,Ye,function(){return Ze(e,u,n)})},set:function(e,t,n){var r,i=Me(e),o=!v.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===E.css(e,"boxSizing",!1,i),s=n?Ke(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-Ke(e,u,"border",!1,i)-.5)),s&&(r=te.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=E.css(e,u)),Je(0,t,s)}}}),E.cssHooks.marginLeft=_e(v.reliableMarginLeft,function(e,t){if(t)return(parseFloat(Be(e,"marginLeft"))||e.getBoundingClientRect().left-Ie(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),E.each({margin:"",padding:"",border:"Width"},function(i,o){E.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+ne[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(E.cssHooks[i+o].set=Je)}),E.fn.extend({css:function(e,t){return B(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Me(e),i=t.length;a<i;a++)o[t[a]]=E.css(e,t[a],!1,r);return o}return void 0!==n?E.style(e,t,n):E.css(e,t)},e,t,1<arguments.length)}}),((E.Tween=et).prototype={constructor:et,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||E.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(E.cssNumber[n]?"":"px")},cur:function(){var e=et.propHooks[this.prop];return e&&e.get?e.get(this):et.propHooks._default.get(this)},run:function(e){var t,n=et.propHooks[this.prop];return this.options.duration?this.pos=t=E.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):et.propHooks._default.set(this),this}}).init.prototype=et.prototype,(et.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=E.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){E.fx.step[e.prop]?E.fx.step[e.prop](e):1!==e.elem.nodeType||!E.cssHooks[e.prop]&&null==e.elem.style[Ve(e.prop)]?e.elem[e.prop]=e.now:E.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=et.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},E.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},E.fx=et.prototype.init,E.fx.step={};var tt,nt,rt,it,ot=/^(?:toggle|show|hide)$/,at=/queueHooks$/;function st(){nt&&(!1===S.hidden&&C.requestAnimationFrame?C.requestAnimationFrame(st):C.setTimeout(st,E.fx.interval),E.fx.tick())}function ut(){return C.setTimeout(function(){tt=void 0}),tt=Date.now()}function lt(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=ne[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function ct(e,t,n){for(var r,i=(ft.tweeners[t]||[]).concat(ft.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function ft(o,e,t){var n,a,r=0,i=ft.prefilters.length,s=E.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=tt||ut(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:E.extend({},e),opts:E.extend(!0,{specialEasing:{},easing:E.easing._default},t),originalProperties:e,originalOptions:t,startTime:tt||ut(),duration:t.duration,tweens:[],createTween:function(e,t){var n=E.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=X(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=E.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=ft.prefilters[r].call(l,o,c,l.opts))return m(n.stop)&&(E._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return E.map(c,ct,l),m(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),E.fx.timer(E.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}E.Animation=E.extend(ft,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return se(n.elem,e,te.exec(t),n),n}]},tweener:function(e,t){m(e)?(t=e,e=["*"]):e=e.match(P);for(var n,r=0,i=e.length;r<i;r++)n=e[r],ft.tweeners[n]=ft.tweeners[n]||[],ft.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&ae(e),y=Y.get(e,"fxshow");for(r in n.queue||(null==(a=E._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,E.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],ot.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!y||void 0===y[r])continue;g=!0}d[r]=y&&y[r]||E.style(e,r)}if((u=!E.isEmptyObject(t))||!E.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=y&&y.display)&&(l=Y.get(e,"display")),"none"===(c=E.css(e,"display"))&&(l?c=l:(le([e],!0),l=e.style.display||l,c=E.css(e,"display"),le([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===E.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(y?"hidden"in y&&(g=y.hidden):y=Y.access(e,"fxshow",{display:l}),o&&(y.hidden=!g),g&&le([e],!0),p.done(function(){for(r in g||le([e]),Y.remove(e,"fxshow"),d)E.style(e,r,d[r])})),u=ct(g?y[r]:0,r,p),r in y||(y[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?ft.prefilters.unshift(e):ft.prefilters.push(e)}}),E.speed=function(e,t,n){var r=e&&"object"==typeof e?E.extend({},e):{complete:n||!n&&t||m(e)&&e,duration:e,easing:n&&t||t&&!m(t)&&t};return E.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in E.fx.speeds?r.duration=E.fx.speeds[r.duration]:r.duration=E.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){m(r.old)&&r.old.call(this),r.queue&&E.dequeue(this,r.queue)},r},E.fn.extend({fadeTo:function(e,t,n,r){return this.filter(ae).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=E.isEmptyObject(t),o=E.speed(e,n,r),a=function(){var e=ft(this,E.extend({},t),o);(i||Y.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=E.timers,r=Y.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&at.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||E.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=Y.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],i=E.timers,o=n?n.length:0;for(t.finish=!0,E.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),E.each(["toggle","show","hide"],function(e,r){var i=E.fn[r];E.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(lt(r,!0),e,t,n)}}),E.each({slideDown:lt("show"),slideUp:lt("hide"),slideToggle:lt("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){E.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),E.timers=[],E.fx.tick=function(){var e,t=0,n=E.timers;for(tt=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||E.fx.stop(),tt=void 0},E.fx.timer=function(e){E.timers.push(e),E.fx.start()},E.fx.interval=13,E.fx.start=function(){nt||(nt=!0,st())},E.fx.stop=function(){nt=null},E.fx.speeds={slow:600,fast:200,_default:400},E.fn.delay=function(r,e){return r=E.fx&&E.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=C.setTimeout(e,r);t.stop=function(){C.clearTimeout(n)}})},rt=S.createElement("input"),it=S.createElement("select").appendChild(S.createElement("option")),rt.type="checkbox",v.checkOn=""!==rt.value,v.optSelected=it.selected,(rt=S.createElement("input")).value="t",rt.type="radio",v.radioValue="t"===rt.value;var pt,dt=E.expr.attrHandle;E.fn.extend({attr:function(e,t){return B(this,E.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){E.removeAttr(this,e)})}}),E.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?E.prop(e,t,n):(1===o&&E.isXMLDoc(e)||(i=E.attrHooks[t.toLowerCase()]||(E.expr.match.bool.test(t)?pt:void 0)),void 0!==n?null===n?void E.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=E.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!v.radioValue&&"radio"===t&&A(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(P);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),pt={set:function(e,t,n){return!1===t?E.removeAttr(e,n):e.setAttribute(n,n),n}},E.each(E.expr.match.bool.source.match(/\w+/g),function(e,t){var a=dt[t]||E.find.attr;dt[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=dt[o],dt[o]=r,r=null!=a(e,t,n)?o:null,dt[o]=i),r}});var ht=/^(?:input|select|textarea|button)$/i,gt=/^(?:a|area)$/i;function yt(e){return(e.match(P)||[]).join(" ")}function vt(e){return e.getAttribute&&e.getAttribute("class")||""}function mt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(P)||[]}E.fn.extend({prop:function(e,t){return B(this,E.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[E.propFix[e]||e]})}}),E.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&E.isXMLDoc(e)||(t=E.propFix[t]||t,i=E.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=E.find.attr(e,"tabindex");return t?parseInt(t,10):ht.test(e.nodeName)||gt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),v.optSelected||(E.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),E.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){E.propFix[this.toLowerCase()]=this}),E.fn.extend({addClass:function(t){var e,n,r,i,o,a;return m(t)?this.each(function(e){E(this).addClass(t.call(this,e,vt(this)))}):(e=mt(t)).length?this.each(function(){if(r=vt(this),n=1===this.nodeType&&" "+yt(r)+" "){for(o=0;o<e.length;o++)i=e[o],n.indexOf(" "+i+" ")<0&&(n+=i+" ");a=yt(n),r!==a&&this.setAttribute("class",a)}}):this},removeClass:function(t){var e,n,r,i,o,a;return m(t)?this.each(function(e){E(this).removeClass(t.call(this,e,vt(this)))}):arguments.length?(e=mt(t)).length?this.each(function(){if(r=vt(this),n=1===this.nodeType&&" "+yt(r)+" "){for(o=0;o<e.length;o++){i=e[o];while(-1<n.indexOf(" "+i+" "))n=n.replace(" "+i+" "," ")}a=yt(n),r!==a&&this.setAttribute("class",a)}}):this:this.attr("class","")},toggleClass:function(t,n){var e,r,i,o,a=typeof t,s="string"===a||Array.isArray(t);return m(t)?this.each(function(e){E(this).toggleClass(t.call(this,e,vt(this),n),n)}):"boolean"==typeof n&&s?n?this.addClass(t):this.removeClass(t):(e=mt(t),this.each(function(){if(s)for(o=E(this),i=0;i<e.length;i++)r=e[i],o.hasClass(r)?o.removeClass(r):o.addClass(r);else void 0!==t&&"boolean"!==a||((r=vt(this))&&Y.set(this,"__className__",r),this.setAttribute&&this.setAttribute("class",r||!1===t?"":Y.get(this,"__className__")||""))}))},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+yt(vt(n))+" ").indexOf(t))return!0;return!1}});var xt=/\r/g;E.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=m(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,E(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=E.map(t,function(e){return null==e?"":e+""})),(r=E.valHooks[this.type]||E.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=E.valHooks[t.type]||E.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(xt,""):null==e?"":e:void 0}}),E.extend({valHooks:{option:{get:function(e){var t=E.find.attr(e,"value");return null!=t?t:yt(E.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!A(n.parentNode,"optgroup"))){if(t=E(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=E.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<E.inArray(E.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),E.each(["radio","checkbox"],function(){E.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<E.inArray(E(e).val(),t)}},v.checkOn||(E.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),v.focusin="onfocusin"in C;var bt=/^(?:focusinfocus|focusoutblur)$/,wt=function(e){e.stopPropagation()};E.extend(E.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||S],d=y.call(e,"type")?e.type:e,h=y.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||S,3!==n.nodeType&&8!==n.nodeType&&!bt.test(d+E.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[E.expando]?e:new E.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:E.makeArray(t,[e]),c=E.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!x(n)){for(s=c.delegateType||d,bt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||S)&&p.push(a.defaultView||a.parentWindow||C)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(Y.get(o,"events")||Object.create(null))[e.type]&&Y.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&V(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!V(n)||u&&m(n[d])&&!x(n)&&((a=n[u])&&(n[u]=null),E.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,wt),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,wt),E.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=E.extend(new E.Event,n,{type:e,isSimulated:!0});E.event.trigger(r,null,t)}}),E.fn.extend({trigger:function(e,t){return this.each(function(){E.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return E.event.trigger(e,t,n,!0)}}),v.focusin||E.each({focus:"focusin",blur:"focusout"},function(n,r){var i=function(e){E.event.simulate(r,e.target,E.event.fix(e))};E.event.special[r]={setup:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r);t||e.addEventListener(n,i,!0),Y.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r)-1;t?Y.access(e,r,t):(e.removeEventListener(n,i,!0),Y.remove(e,r))}}});var Tt=C.location,Ct={guid:Date.now()},St=/\?/;E.parseXML=function(e){var t,n;if(!e||"string"!=typeof e)return null;try{t=(new C.DOMParser).parseFromString(e,"text/xml")}catch(e){}return n=t&&t.getElementsByTagName("parsererror")[0],t&&!n||E.error("Invalid XML: "+(n?E.map(n.childNodes,function(e){return e.textContent}).join("\n"):e)),t};var Et=/\[\]$/,kt=/\r?\n/g,At=/^(?:submit|button|image|reset|file)$/i,Nt=/^(?:input|select|textarea|keygen)/i;function jt(n,e,r,i){var t;if(Array.isArray(e))E.each(e,function(e,t){r||Et.test(n)?i(n,t):jt(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==w(e))i(n,e);else for(t in e)jt(n+"["+t+"]",e[t],r,i)}E.param=function(e,t){var n,r=[],i=function(e,t){var n=m(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!E.isPlainObject(e))E.each(e,function(){i(this.name,this.value)});else for(n in e)jt(n,e[n],t,i);return r.join("&")},E.fn.extend({serialize:function(){return E.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=E.prop(this,"elements");return e?E.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!E(this).is(":disabled")&&Nt.test(this.nodeName)&&!At.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=E(this).val();return null==n?null:Array.isArray(n)?E.map(n,function(e){return{name:t.name,value:e.replace(kt,"\r\n")}}):{name:t.name,value:n.replace(kt,"\r\n")}}).get()}});var Dt=/%20/g,qt=/#.*$/,Lt=/([?&])_=[^&]*/,Ht=/^(.*?):[ \t]*([^\r\n]*)$/gm,Ot=/^(?:GET|HEAD)$/,Pt=/^\/\//,Rt={},Mt={},It="*/".concat("*"),Wt=S.createElement("a");function Ft(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(P)||[];if(m(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function $t(t,i,o,a){var s={},u=t===Mt;function l(e){var r;return s[e]=!0,E.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function Bt(e,t){var n,r,i=E.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&E.extend(!0,e,r),e}Wt.href=Tt.href,E.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Tt.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Tt.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":It,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":E.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Bt(Bt(e,E.ajaxSettings),t):Bt(E.ajaxSettings,e)},ajaxPrefilter:Ft(Rt),ajaxTransport:Ft(Mt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,y=E.ajaxSetup({},t),v=y.context||y,m=y.context&&(v.nodeType||v.jquery)?E(v):E.event,x=E.Deferred(),b=E.Callbacks("once memory"),w=y.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=Ht.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(y.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),y.url=((e||y.url||Tt.href)+"").replace(Pt,Tt.protocol+"//"),y.type=t.method||t.type||y.method||y.type,y.dataTypes=(y.dataType||"*").toLowerCase().match(P)||[""],null==y.crossDomain){r=S.createElement("a");try{r.href=y.url,r.href=r.href,y.crossDomain=Wt.protocol+"//"+Wt.host!=r.protocol+"//"+r.host}catch(e){y.crossDomain=!0}}if(y.data&&y.processData&&"string"!=typeof y.data&&(y.data=E.param(y.data,y.traditional)),$t(Rt,y,t,T),h)return T;for(i in(g=E.event&&y.global)&&0==E.active++&&E.event.trigger("ajaxStart"),y.type=y.type.toUpperCase(),y.hasContent=!Ot.test(y.type),f=y.url.replace(qt,""),y.hasContent?y.data&&y.processData&&0===(y.contentType||"").indexOf("application/x-www-form-urlencoded")&&(y.data=y.data.replace(Dt,"+")):(o=y.url.slice(f.length),y.data&&(y.processData||"string"==typeof y.data)&&(f+=(St.test(f)?"&":"?")+y.data,delete y.data),!1===y.cache&&(f=f.replace(Lt,"$1"),o=(St.test(f)?"&":"?")+"_="+Ct.guid+++o),y.url=f+o),y.ifModified&&(E.lastModified[f]&&T.setRequestHeader("If-Modified-Since",E.lastModified[f]),E.etag[f]&&T.setRequestHeader("If-None-Match",E.etag[f])),(y.data&&y.hasContent&&!1!==y.contentType||t.contentType)&&T.setRequestHeader("Content-Type",y.contentType),T.setRequestHeader("Accept",y.dataTypes[0]&&y.accepts[y.dataTypes[0]]?y.accepts[y.dataTypes[0]]+("*"!==y.dataTypes[0]?", "+It+"; q=0.01":""):y.accepts["*"]),y.headers)T.setRequestHeader(i,y.headers[i]);if(y.beforeSend&&(!1===y.beforeSend.call(v,T,y)||h))return T.abort();if(u="abort",b.add(y.complete),T.done(y.success),T.fail(y.error),c=$t(Mt,y,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,y]),h)return T;y.async&&0<y.timeout&&(d=C.setTimeout(function(){T.abort("timeout")},y.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&C.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(y,T,n)),!i&&-1<E.inArray("script",y.dataTypes)&&E.inArray("json",y.dataTypes)<0&&(y.converters["text script"]=function(){}),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(y,s,T,i),i?(y.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(E.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(E.etag[f]=u)),204===e||"HEAD"===y.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(v,[o,l,T]):x.rejectWith(v,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,y,i?o:a]),b.fireWith(v,[T,l]),g&&(m.trigger("ajaxComplete",[T,y]),--E.active||E.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return E.get(e,t,n,"json")},getScript:function(e,t){return E.get(e,void 0,t,"script")}}),E.each(["get","post"],function(e,i){E[i]=function(e,t,n,r){return m(t)&&(r=r||n,n=t,t=void 0),E.ajax(E.extend({url:e,type:i,dataType:r,data:t,success:n},E.isPlainObject(e)&&e))}}),E.ajaxPrefilter(function(e){var t;for(t in e.headers)"content-type"===t.toLowerCase()&&(e.contentType=e.headers[t]||"")}),E._evalUrl=function(e,t,n){return E.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){E.globalEval(e,t,n)}})},E.fn.extend({wrapAll:function(e){var t;return this[0]&&(m(e)&&(e=e.call(this[0])),t=E(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return m(n)?this.each(function(e){E(this).wrapInner(n.call(this,e))}):this.each(function(){var e=E(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=m(t);return this.each(function(e){E(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){E(this).replaceWith(this.childNodes)}),this}}),E.expr.pseudos.hidden=function(e){return!E.expr.pseudos.visible(e)},E.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},E.ajaxSettings.xhr=function(){try{return new C.XMLHttpRequest}catch(e){}};var _t={0:200,1223:204},zt=E.ajaxSettings.xhr();v.cors=!!zt&&"withCredentials"in zt,v.ajax=zt=!!zt,E.ajaxTransport(function(i){var o,a;if(v.cors||zt&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(_t[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&C.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),E.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),E.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return E.globalEval(e),e}}}),E.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),E.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=E("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),S.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;E.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||E.expando+"_"+Ct.guid++;return this[e]=!0,e}}),E.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||E.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?E(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),v.createHTMLDocument=((Ut=S.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===Ut.childNodes.length),E.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(v.createHTMLDocument?((r=(t=S.implementation.createHTMLDocument("")).createElement("base")).href=S.location.href,t.head.appendChild(r)):t=S),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&E(o).remove(),E.merge([],i.childNodes)));var r,i,o},E.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=yt(e.slice(s)),e=e.slice(0,s)),m(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&E.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?E("<div>").append(E.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},E.expr.pseudos.animated=function(t){return E.grep(E.timers,function(e){return t===e.elem}).length},E.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=E.css(e,"position"),c=E(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=E.css(e,"top"),u=E.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,E.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},E.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){E.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===E.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===E.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=E(e).offset()).top+=E.css(e,"borderTopWidth",!0),i.left+=E.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-E.css(r,"marginTop",!0),left:t.left-i.left-E.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===E.css(e,"position"))e=e.offsetParent;return e||re})}}),E.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;E.fn[t]=function(e){return B(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),E.each(["top","left"],function(e,n){E.cssHooks[n]=_e(v.pixelPosition,function(e,t){if(t)return t=Be(e,n),Pe.test(t)?E(e).position()[n]+"px":t})}),E.each({Height:"height",Width:"width"},function(a,s){E.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){E.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return B(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?E.css(e,t,i):E.style(e,t,n,i)},s,n?e:void 0,n)}})}),E.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){E.fn[t]=function(e){return this.on(t,e)}}),E.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),E.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){E.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}});var Gt=/^[\s\uFEFF\xA0]+|([^\s\uFEFF\xA0])[\s\uFEFF\xA0]+$/g;E.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),m(e))return r=s.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(s.call(arguments)))}).guid=e.guid=e.guid||E.guid++,i},E.holdReady=function(e){e?E.readyWait++:E.ready(!0)},E.isArray=Array.isArray,E.parseJSON=JSON.parse,E.nodeName=A,E.isFunction=m,E.isWindow=x,E.camelCase=X,E.type=w,E.now=Date.now,E.isNumeric=function(e){var t=E.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},E.trim=function(e){return null==e?"":(e+"").replace(Gt,"$1")},"function"==typeof define&&define.amd&&define("jquery",[],function(){return E});var Yt=C.jQuery,Qt=C.$;return E.noConflict=function(e){return C.$===E&&(C.$=Qt),e&&C.jQuery===E&&(C.jQuery=Yt),E},"undefined"==typeof e&&(C.jQuery=C.$=E),E});
vendor: 7,142 bytes, lines 5051-5111
5051
5052/*! URI.js v1.19.11 http://medialize.github.io/URI.js/ */
5053/* build contains: IPv6.js, punycode.js, SecondLevelDomains.js, URI.js, jquery.URI.js */
5054/*
5055 URI.js - Mutating URLs
5056 IPv6 Support
5057
5058 Version: 1.19.11
5059
5060 Author: Rodney Rehm
5061 Web: http://medialize.github.io/URI.js/
5062
5063 Licensed under
5064   MIT License http://www.opensource.org/licenses/mit-license
5065
5066 https://mths.be/punycode v1.4.0 by @mathias  URI.js - Mutating URLs
5067 Second Level Domain (SLD) Support
5068
5069 Version: 1.19.11
5070
5071 Author: Rodney Rehm
5072 Web: http://medialize.github.io/URI.js/
5073
5074 Licensed under
5075   MIT License http://www.opensource.org/licenses/mit-license
5076
5077 URI.js - Mutating URLs
5078
5079 Version: 1.19.11
5080
5081 Author: Rodney Rehm
5082 Web: http://medialize.github.io/URI.js/
5083
5084 Licensed under
5085   MIT License http://www.opensource.org/licenses/mit-license
5086
5087 URI.js - Mutating URLs
5088 jQuery Plugin
5089
5090 Version: 1.19.11
5091
5092 Author: Rodney Rehm
5093 Web: http://medialize.github.io/URI.js/jquery-uri-plugin.html
5094
5095 Licensed under
5096   MIT License http://www.opensource.org/licenses/mit-license
5097
5098*/
5099(function(m,u){"object"===typeof module&&module.exports?module.exports=u():"function"===typeof define&&define.amd?define(u):m.IPv6=u(m)})(this,function(m){var u=m&&m.IPv6;return{best:function(q){q=q.toLowerCase().split(":");var k=q.length,d=8;""===q[0]&&""===q[1]&&""===q[2]?(q.shift(),q.shift()):""===q[0]&&""===q[1]?q.shift():""===q[k-1]&&""===q[k-2]&&q.pop();k=q.length;-1!==q[k-1].indexOf(".")&&(d=7);var n;for(n=0;n<k&&""!==q[n];n++);if(n<d)for(q.splice(n,1,"0000");q.length<d;)q.splice(n,0,"0000");
5100    for(n=0;n<d;n++){k=q[n].split("");for(var z=0;3>z;z++)if("0"===k[0]&&1<k.length)k.splice(0,1);else break;q[n]=k.join("")}k=-1;var x=z=0,M=-1,F=!1;for(n=0;n<d;n++)F?"0"===q[n]?x+=1:(F=!1,x>z&&(k=M,z=x)):"0"===q[n]&&(F=!0,M=n,x=1);x>z&&(k=M,z=x);1<z&&q.splice(k,z,"");k=q.length;d="";""===q[0]&&(d=":");for(n=0;n<k;n++){d+=q[n];if(n===k-1)break;d+=":"}""===q[k-1]&&(d+=":");return d},noConflict:function(){m.IPv6===this&&(m.IPv6=u);return this}}});
5101(function(m){function u(p){throw new RangeError(J[p]);}function q(p,t){for(var y=p.length,v=[];y--;)v[y]=t(p[y]);return v}function k(p,t){var y=p.split("@"),v="";1<y.length&&(v=y[0]+"@",p=y[1]);p=p.replace(G,".");y=p.split(".");y=q(y,t).join(".");return v+y}function d(p){for(var t=[],y=0,v=p.length,C,H;y<v;)C=p.charCodeAt(y++),55296<=C&&56319>=C&&y<v?(H=p.charCodeAt(y++),56320==(H&64512)?t.push(((C&1023)<<10)+(H&1023)+65536):(t.push(C),y--)):t.push(C);return t}function n(p){return q(p,function(t){var y=
5102  "";65535<t&&(t-=65536,y+=g(t>>>10&1023|55296),t=56320|t&1023);return y+=g(t)}).join("")}function z(p,t,y){var v=0;p=y?K(p/700):p>>1;for(p+=K(p/t);455<p;v+=36)p=K(p/35);return K(v+36*p/(p+38))}function x(p){var t=[],y=p.length,v=0,C=128,H=72,a,b;var c=p.lastIndexOf("-");0>c&&(c=0);for(a=0;a<c;++a)128<=p.charCodeAt(a)&&u("not-basic"),t.push(p.charCodeAt(a));for(c=0<c?c+1:0;c<y;){a=v;var e=1;for(b=36;;b+=36){c>=y&&u("invalid-input");var f=p.charCodeAt(c++);f=10>f-48?f-22:26>f-65?f-65:26>f-97?f-97:36;
5103  (36<=f||f>K((2147483647-v)/e))&&u("overflow");v+=f*e;var l=b<=H?1:b>=H+26?26:b-H;if(f<l)break;f=36-l;e>K(2147483647/f)&&u("overflow");e*=f}e=t.length+1;H=z(v-a,e,0==a);K(v/e)>2147483647-C&&u("overflow");C+=K(v/e);v%=e;t.splice(v++,0,C)}return n(t)}function M(p){var t,y,v,C=[];p=d(p);var H=p.length;var a=128;var b=0;var c=72;for(v=0;v<H;++v){var e=p[v];128>e&&C.push(g(e))}for((t=y=C.length)&&C.push("-");t<H;){var f=2147483647;for(v=0;v<H;++v)e=p[v],e>=a&&e<f&&(f=e);var l=t+1;f-a>K((2147483647-b)/l)&&
5104u("overflow");b+=(f-a)*l;a=f;for(v=0;v<H;++v)if(e=p[v],e<a&&2147483647<++b&&u("overflow"),e==a){var w=b;for(f=36;;f+=36){e=f<=c?1:f>=c+26?26:f-c;if(w<e)break;var B=w-e;w=36-e;var D=C;e+=B%w;D.push.call(D,g(e+22+75*(26>e)-0));w=K(B/w)}C.push(g(w+22+75*(26>w)-0));c=z(b,l,t==y);b=0;++t}++b;++a}return C.join("")}var F="object"==typeof exports&&exports&&!exports.nodeType&&exports,P="object"==typeof module&&module&&!module.nodeType&&module,h="object"==typeof global&&global;if(h.global===h||h.window===h||
5105  h.self===h)m=h;var r=/^xn--/,A=/[^\x20-\x7E]/,G=/[\x2E\u3002\uFF0E\uFF61]/g,J={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},K=Math.floor,g=String.fromCharCode,E;var I={version:"1.3.2",ucs2:{decode:d,encode:n},decode:x,encode:M,toASCII:function(p){return k(p,function(t){return A.test(t)?"xn--"+M(t):t})},toUnicode:function(p){return k(p,function(t){return r.test(t)?x(t.slice(4).toLowerCase()):
5106    t})}};if("function"==typeof define&&"object"==typeof define.amd&&define.amd)define("punycode",function(){return I});else if(F&&P)if(module.exports==F)P.exports=I;else for(E in I)I.hasOwnProperty(E)&&(F[E]=I[E]);else m.punycode=I})(this);
5107(function(m,u){"object"===typeof module&&module.exports?module.exports=u():"function"===typeof define&&define.amd?define(u):m.SecondLevelDomains=u(m)})(this,function(m){var u=m&&m.SecondLevelDomains,q={list:{ac:" com gov mil net org ",ae:" ac co gov mil name net org pro sch ",af:" com edu gov net org ",al:" com edu gov mil net org ",ao:" co ed gv it og pb ",ar:" com edu gob gov int mil net org tur ",at:" ac co gv or ",au:" asn com csiro edu gov id net org ",ba:" co com edu gov mil net org rs unbi unmo unsa untz unze ",
5108    bb:" biz co com edu gov info net org store tv ",bh:" biz cc com edu gov info net org ",bn:" com edu gov net org ",bo:" com edu gob gov int mil net org tv ",br:" adm adv agr am arq art ato b bio blog bmd cim cng cnt com coop ecn edu eng esp etc eti far flog fm fnd fot fst g12 ggf gov imb ind inf jor jus lel mat med mil mus net nom not ntr odo org ppg pro psc psi qsl rec slg srv tmp trd tur tv vet vlog wiki zlg ",bs:" com edu gov net org ",bz:" du et om ov rg ",ca:" ab bc mb nb nf nl ns nt nu on pe qc sk yk ",
5109    ck:" biz co edu gen gov info net org ",cn:" ac ah bj com cq edu fj gd gov gs gx gz ha hb he hi hl hn jl js jx ln mil net nm nx org qh sc sd sh sn sx tj tw xj xz yn zj ",co:" com edu gov mil net nom org ",cr:" ac c co ed fi go or sa ",cy:" ac biz com ekloges gov ltd name net org parliament press pro tm ","do":" art com edu gob gov mil net org sld web ",dz:" art asso com edu gov net org pol ",ec:" com edu fin gov info med mil net org pro ",eg:" com edu eun gov mil name net org sci ",er:" com edu gov ind mil net org rochest w ",
5110    es:" com edu gob nom org ",et:" biz com edu gov info name net org ",fj:" ac biz com info mil name net org pro ",fk:" ac co gov net nom org ",fr:" asso com f gouv nom prd presse tm ",gg:" co net org ",gh:" com edu gov mil org ",gn:" ac com gov net org ",gr:" com edu gov mil net org ",gt:" com edu gob ind mil net org ",gu:" com edu gov net org ",hk:" com edu gov idv net org ",hu:" 2000 agrar bolt casino city co erotica erotika film forum games hotel info ingatlan jogasz konyvelo lakas media news org priv reklam sex shop sport suli szex tm tozsde utazas video ",
5111    id:" ac co go mil net or sch web ",il:" ac co gov idf k12 muni net org ","in":" ac co edu ernet firm gen gov i ind mil net nic org res ",iq:" com edu gov i mil net org ",ir:" ac co dnssec gov i id net org sch ",it:" edu gov ",je:" c
5111o net org ",jo:" com edu gov mil name net org sch ",jp:" ac ad co ed go gr lg ne or ",ke:" ac co go info me mobi ne or sc ",kh:" com edu gov mil net org per ",ki:" biz com de edu gov info mob net org tel ",km:" asso com coop edu gouv k medecin mil nom notaires pharmaciens presse tm veterinaire ",
5112    kn:" edu gov net org ",kr:" ac busan chungbuk chungnam co daegu daejeon es gangwon go gwangju gyeongbuk gyeonggi gyeongnam hs incheon jeju jeonbuk jeonnam k kg mil ms ne or pe re sc seoul ulsan ",kw:" com edu gov net org ",ky:" com edu gov net org ",kz:" com edu gov mil net org ",lb:" com edu gov net org ",lk:" assn com edu gov grp hotel int ltd net ngo org sch soc web ",lr:" com edu gov net org ",lv:" asn com conf edu gov id mil net org ",ly:" com edu gov id med net org plc sch ",ma:" ac co gov m net org press ",
5113    mc:" asso tm ",me:" ac co edu gov its net org priv ",mg:" com edu gov mil nom org prd tm ",mk:" com edu gov inf name net org pro ",ml:" com edu gov net org presse ",mn:" edu gov org ",mo:" com edu gov net org ",mt:" com edu gov net org ",mv:" aero biz com coop edu gov info int mil museum name net org pro ",mw:" ac co com coop edu gov int museum net org ",mx:" com edu gob net org ",my:" com edu gov mil name net org sch ",nf:" arts com firm info net other per rec store web ",ng:" biz com edu gov mil mobi name net org sch ",
5114    ni:" ac co com edu gob mil net nom org ",np:" com edu gov mil net org ",nr:" biz com edu gov info net org ",om:" ac biz co com edu gov med mil museum net org pro sch ",pe:" com edu gob mil net nom org sld ",ph:" com edu gov i mil net ngo org ",pk:" biz com edu fam gob gok gon gop gos gov net org web ",pl:" art bialystok biz com edu gda gdansk gorzow gov info katowice krakow lodz lublin mil net ngo olsztyn org poznan pwr radom slupsk szczecin torun warszawa waw wroc wroclaw zgora ",pr:" ac biz com edu est gov info isla name net org pro prof ",
5115    ps:" com edu gov net org plo sec ",pw:" belau co ed go ne or ",ro:" arts com firm info nom nt org rec store tm www ",rs:" ac co edu gov in org ",sb:" com edu gov net org ",sc:" com edu gov net org ",sh:" co com edu gov net nom org ",sl:" com edu gov net org ",st:" co com consulado edu embaixada gov mil net org principe saotome store ",sv:" com edu gob org red ",sz:" ac co org ",tr:" av bbs bel biz com dr edu gen gov info k12 name net org pol tel tsk tv web ",tt:" aero biz cat co com coop edu gov info int jobs mil mobi museum name net org pro tel travel ",
5116    tw:" club com ebiz edu game gov idv mil net org ",mu:" ac co com gov net or org ",mz:" ac co edu gov org ",na:" co com ",nz:" ac co cri geek gen govt health iwi maori mil net org parliament school ",pa:" abo ac com edu gob ing med net nom org sld ",pt:" com edu gov int net nome org publ ",py:" com edu gov mil net org ",qa:" com edu gov mil net org ",re:" asso com nom ",ru:" ac adygeya altai amur arkhangelsk astrakhan bashkiria belgorod bir bryansk buryatia cbg chel chelyabinsk chita chukotka chuvashia com dagestan e-burg edu gov grozny int irkutsk ivanovo izhevsk jar joshkar-ola kalmykia kaluga kamchatka karelia kazan kchr kemerovo khabarovsk khakassia khv kirov koenig komi kostroma kranoyarsk kuban kurgan kursk lipetsk magadan mari mari-el marine mil mordovia mosreg msk murmansk nalchik net nnov nov novosibirsk nsk omsk orenburg org oryol penza perm pp pskov ptz rnd ryazan sakhalin samara saratov simbirsk smolensk spb stavropol stv surgut tambov tatarstan tom tomsk tsaritsyn tsk tula tuva tver tyumen udm udmurtia ulan-ude vladikavkaz vladimir vladivostok volgograd vologda voronezh vrn vyatka yakutia yamal yekaterinburg yuzhno-sakhalinsk ",
5117    rw:" ac co com edu gouv gov int mil net ",sa:" com edu gov med net org pub sch ",sd:" com edu gov info med net org tv ",se:" a ac b bd c d e f g h i k l m n o org p parti pp press r s t tm u w x y z ",sg:" com edu gov idn net org per ",sn:" art com edu gouv org perso univ ",sy:" com edu gov mil net news org ",th:" ac co go in mi net or ",tj:" ac biz co com edu go gov info int mil name net nic org test web ",tn:" agrinet com defense edunet ens fin gov ind info intl mincom nat net org perso rnrt rns rnu tourism ",
5118    tz:" ac co go ne or ",ua:" biz cherkassy chernigov chernovtsy ck cn co com crimea cv dn dnepropetrovsk donetsk d
vendor: 30,898 bytes, lines 5118-5176
5118p edu gov if in ivano-frankivsk kh kharkov kherson khmelnitskiy kiev kirovograd km kr ks kv lg lugansk lutsk lviv me mk net nikolaev od odessa org pl poltava pp rovno rv sebastopol sumy te ternopil uzhgorod vinnica vn zaporizhzhe zhitomir zp zt ",ug:" ac co go ne or org sc ",uk:" ac bl british-library co cym gov govt icnet jet lea ltd me mil mod national-library-scotland nel net nhs nic nls org orgn parliament plc police sch scot soc ",
5119    us:" dni fed isa kids nsn ",uy:" com edu gub mil net org ",ve:" co com edu gob info mil net org web ",vi:" co com k12 net org ",vn:" ac biz com edu gov health info int name net org pro ",ye:" co com gov ltd me net org plc ",yu:" ac co edu gov org ",za:" ac agric alt bourse city co cybernet db edu gov grondar iaccess imt inca landesign law mil net ngo nis nom olivetti org pix school tm web ",zm:" ac co com edu gov net org sch ",com:"ar br cn de eu gb gr hu jpn kr no qc ru sa se uk us uy za ",net:"gb jp se uk ",
5120    org:"ae",de:"com "},has:function(k){var d=k.lastIndexOf(".");if(0>=d||d>=k.length-1)return!1;var n=k.lastIndexOf(".",d-1);if(0>=n||n>=d-1)return!1;var z=q.list[k.slice(d+1)];return z?0<=z.indexOf(" "+k.slice(n+1,d)+" "):!1},is:function(k){var d=k.lastIndexOf(".");if(0>=d||d>=k.length-1||0<=k.lastIndexOf(".",d-1))return!1;var n=q.list[k.slice(d+1)];return n?0<=n.indexOf(" "+k.slice(0,d)+" "):!1},get:function(k){var d=k.lastIndexOf(".");if(0>=d||d>=k.length-1)return null;var n=k.lastIndexOf(".",d-1);
5121    if(0>=n||n>=d-1)return null;var z=q.list[k.slice(d+1)];return!z||0>z.indexOf(" "+k.slice(n+1,d)+" ")?null:k.slice(n+1)},noConflict:function(){m.SecondLevelDomains===this&&(m.SecondLevelDomains=u);return this}};return q});
5122(function(m,u){"object"===typeof module&&module.exports?module.exports=u(require("./punycode"),require("./IPv6"),require("./SecondLevelDomains")):"function"===typeof define&&define.amd?define(["./punycode","./IPv6","./SecondLevelDomains"],u):m.URI=u(m.punycode,m.IPv6,m.SecondLevelDomains,m)})(this,function(m,u,q,k){function d(a,b){var c=1<=arguments.length,e=2<=arguments.length;if(!(this instanceof d))return c?e?new d(a,b):new d(a):new d;if(void 0===a){if(c)throw new TypeError("undefined is not a valid argument for URI");
5123  a="undefined"!==typeof location?location.href+"":""}if(null===a&&c)throw new TypeError("null is not a valid argument for URI");this.href(a);return void 0!==b?this.absoluteTo(b):this}function n(a){return a.replace(/([.*+?^=!:${}()|[\]\/\\])/g,"\\$1")}function z(a){return void 0===a?"Undefined":String(Object.prototype.toString.call(a)).slice(8,-1)}function x(a){return"Array"===z(a)}function M(a,b){var c={},e;if("RegExp"===z(b))c=null;else if(x(b)){var f=0;for(e=b.length;f<e;f++)c[b[f]]=!0}else c[b]=
5124  !0;f=0;for(e=a.length;f<e;f++)if(c&&void 0!==c[a[f]]||!c&&b.test(a[f]))a.splice(f,1),e--,f--;return a}function F(a,b){var c;if(x(b)){var e=0;for(c=b.length;e<c;e++)if(!F(a,b[e]))return!1;return!0}var f=z(b);e=0;for(c=a.length;e<c;e++)if("RegExp"===f){if("string"===typeof a[e]&&a[e].match(b))return!0}else if(a[e]===b)return!0;return!1}function P(a,b){if(!x(a)||!x(b)||a.length!==b.length)return!1;a.sort();b.sort();for(var c=0,e=a.length;c<e;c++)if(a[c]!==b[c])return!1;return!0}function h(a){return a.replace(/^\/+|\/+$/g,
5125  "")}function r(a){return escape(a)}function A(a){return encodeURIComponent(a).replace(/[!'()*]/g,r).replace(/\*/g,"%2A")}function G(a){return function(b,c){if(void 0===b)return this._parts[a]||"";this._parts[a]=b||null;this.build(!c);return this}}function J(a,b){return function(c,e){if(void 0===c)return this._parts[a]||"";null!==c&&(c+="",c.charAt(0)===b&&(c=c.substring(1)));this._parts[a]=c;this.build(!e);return this}}var K=k&&k.URI;d.version="1.19.11";var g=d.prototype,E=Object.prototype.hasOwnProperty;
5126  d._parts=function(){return{protocol:null,username:null,password:null,hostname:null,urn:null,port:null,path:null,query:null,fragment:null,preventInvalidHostname:d.preventInvalidHostname,duplicateQueryParameters:d.duplicateQueryParameters,escapeQuerySpace:d.escapeQuerySpace}};d.preventInvalidHostname=!1;d.duplicateQueryParameters=!1;d.escapeQuerySpace=!0;d.protocol_expression=/^[a-z][a-z0-9.+-]*$/i;d.idn_expression=/[^a-z0-9\._-]/i;d.punycode_expression=/(xn--)/i;d.ip4_expression=/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/;
5127  d.ip6_expression=/^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$/;
5128  d.find_uri_expression=/\b((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?\u00ab\u00bb\u201c\u201d\u2018\u2019]))/ig;d.findUri={start:/\b(?:([a-z][a-z0-9.+-]*:\/\/)|www\.)/gi,end:/[\s\r\n]|$/,trim:/[`!()\[\]{};:'".,<>?\u00ab\u00bb\u201c\u201d\u201e\u2018\u2019]+$/,parens:/(\([^\)]*\)|\[[^\]]*\]|\{[^}]*\}|<[^>]*>)/g};d.leading_whitespace_expression=/^[\x00-\x20\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]+/;
5129  d.ascii_tab_whitespace=/[\u0009\u000A\u000D]+/g;d.defaultPorts={http:"80",https:"443",ftp:"21",gopher:"70",ws:"80",wss:"443"};d.hostProtocols=["http","https"];d.invalid_hostname_characters=/[^a-zA-Z0-9\.\-:_]/;d.domAttributes={a:"href",blockquote:"cite",link:"href",base:"href",script:"src",form:"action",img:"src",area:"href",iframe:"src",embed:"src",source:"src",track:"src",input:"src",audio:"src",video:"src"};d.getDomAttribute=function(a){if(a&&a.nodeName){var b=a.nodeName.toLowerCase();if("input"!==
5130    b||"image"===a.type)return d.domAttributes[b]}};d.encode=A;d.decode=decodeURIComponent;d.iso8859=function(){d.encode=escape;d.decode=unescape};d.unicode=function(){d.encode=A;d.decode=decodeURIComponent};d.characters={pathname:{encode:{expression:/%(24|26|2B|2C|3B|3D|3A|40)/ig,map:{"%24":"$","%26":"&","%2B":"+","%2C":",","%3B":";","%3D":"=","%3A":":","%40":"@"}},decode:{expression:/[\/\?#]/g,map:{"/":"%2F","?":"%3F","#":"%23"}}},reserved:{encode:{expression:/%(21|23|24|26|27|28|29|2A|2B|2C|2F|3A|3B|3D|3F|40|5B|5D)/ig,
5131        map:{"%3A":":","%2F":"/","%3F":"?","%23":"#","%5B":"[","%5D":"]","%40":"@","%21":"!","%24":"$","%26":"&","%27":"'","%28":"(","%29":")","%2A":"*","%2B":"+","%2C":",","%3B":";","%3D":"="}}},urnpath:{encode:{expression:/%(21|24|27|28|29|2A|2B|2C|3B|3D|40)/ig,map:{"%21":"!","%24":"$","%27":"'","%28":"(","%29":")","%2A":"*","%2B":"+","%2C":",","%3B":";","%3D":"=","%40":"@"}},decode:{expression:/[\/\?#:]/g,map:{"/":"%2F","?":"%3F","#":"%23",":":"%3A"}}}};d.encodeQuery=function(a,b){var c=d.encode(a+"");
5132    void 0===b&&(b=d.escapeQuerySpace);return b?c.replace(/%20/g,"+"):c};d.decodeQuery=function(a,b){a+="";void 0===b&&(b=d.escapeQuerySpace);try{return d.decode(b?a.replace(/\+/g,"%20"):a)}catch(c){return a}};var I={encode:"encode",decode:"decode"},p,t=function(a,b){return function(c){try{return d[b](c+"").replace(d.characters[a][b].expression,function(e){return d.characters[a][b].map[e]})}catch(e){return c}}};for(p in I)d[p+"PathSegment"]=t("pathname",I[p]),d[p+"UrnPathSegment"]=t("urnpath",I[p]);I=
5133    function(a,b,c){return function(e){var f=c?function(B){return d[b](d[c](B))}:d[b];e=(e+"").split(a);for(var l=0,w=e.length;l<w;l++)e[l]=f(e[l]);return e.join(a)}};d.decodePath=I("/","decodePathSegment");d.decodeUrnPath=I(":","decodeUrnPathSegment");d.recodePath=I("/","encodePathSegment","decode");d.recodeUrnPath=I(":","encodeUrnPathSegment","decode");d.encodeReserved=t("reserved","encode");d.parse=function(a,b){b||(b={preventInvalidHostname:d.preventInvalidHostname});a=a.replace(d.leading_whitespace_expression,
5134    "");a=a.replace(d.ascii_tab_whitespace,"");var c=a.indexOf("#");-1<c&&(b.fragment=a.substring(c+1)||null,a=a.substring(0,c));c=a.indexOf("?");-1<c&&(b.query=a.substring(c+1)||null,a=a.substring(0,c));a=a.replace(/^(https?|ftp|wss?)?:+[/\\]*/i,"$1://");a=a.replace(/^[/\\]{2,}/i,"//");"//"===a.substring(0,2)?(b.protocol=null,a=a.substring(2),a=d.parseAuthority(a,b)):(c=a.indexOf(":"),-1<c&&(b.protocol=a.substring(0,c)||null,b.protocol&&!b.protocol.match(d.protocol_expression)?b.protocol=void 0:"//"===
5135  a.substring(c+1,c+3).replace(/\\/g,"/")?(a=a.substring(c+3),a=d.parseAuthority(a,b)):(a=a.substring(c+1),b.urn=!0)));b.path=a;return b};d.parseHost=function(a,b){a||(a="");a=a.replace(/\\/g,"/");var c=a.indexOf("/");-1===c&&(c=a.length);if("["===a.charAt(0)){var e=a.indexOf("]");b.hostname=a.substring(1,e)||null;b.port=a.substring(e+2,c)||null;"/"===b.port&&(b.port=null)}else{var f=a.indexOf(":");e=a.indexOf("/");f=a.indexOf(":",f+1);-1!==f&&(-1===e||f<e)?(b.hostname=a.substring(0,c)||null,b.port=
5136    null):(e=a.substring(0,c).split(":"),b.hostname=e[0]||null,b.port=e[1]||null)}b.hostname&&"/"!==a.substring(c).charAt(0)&&(c++,a="/"+a);b.preventInvalidHostname&&d.ensureValidHostname(b.hostname,b.protocol);b.port&&d.ensureValidPort(b.port);return a.substring(c)||"/"};d.parseAuthority=function(a,b){a=d.parseUserinfo(a,b);return d.parseHost(a,b)};d.parseUserinfo=function(a,b){var c=a;-1!==a.indexOf("\\")&&(a=a.replace(/\\/g,"/"));var e=a.indexOf("/"),f=a.lastIndexOf("@",-1<e?e:a.length-1);-1<f&&(-1===
5137    e||f<e)?(e=a.substring(0,f).split(":"),b.username=e[0]?d.decode(e[0]):null,e.shift(),b.password=e[0]?d.decode(e.join(":")):null,a=c.substring(f+1)):(b.username=null,b.password=null);return a};d.parseQuery=function(a,b){if(!a)return{};a=a.replace(/&+/g,"&").replace(/^\?*&*|&+$/g,"");if(!a)return{};for(var c={},e=a.split("&"),f=e.length,l,w,B=0;B<f;B++)if(l=e[B].split("="),w=d.decodeQuery(l.shift(),b),l=l.length?d.decodeQuery(l.join("="),b):null,"__proto__"!==w)if(E.call(c,w)){if("string"===typeof c[w]||
5138    null===c[w])c[w]=[c[w]];c[w].push(l)}else c[w]=l;return c};d.build=function(a){var b="",c=!1;a.protocol&&(b+=a.protocol+":");a.urn||!b&&!a.hostname||(b+="//",c=!0);b+=d.buildAuthority(a)||"";"string"===typeof a.path&&("/"!==a.path.charAt(0)&&c&&(b+="/"),b+=a.path);"string"===typeof a.query&&a.query&&(b+="?"+a.query);"string"===typeof a.fragment&&a.fragment&&(b+="#"+a.fragment);return b};d.buildHost=function(a){var b="";if(a.hostname)b=d.ip6_expression.test(a.hostname)?b+("["+a.hostname+"]"):b+a.hostname;
5139  else return"";a.port&&(b+=":"+a.port);return b};d.buildAuthority=function(a){return d.buildUserinfo(a)+d.buildHost(a)};d.buildUserinfo=function(a){var b="";a.username&&(b+=d.encode(a.username));a.password&&(b+=":"+d.encode(a.password));b&&(b+="@");return b};d.buildQuery=function(a,b,c){var e="",f,l;for(f in a)if("__proto__"!==f&&E.call(a,f))if(x(a[f])){var w={};var B=0;for(l=a[f].length;B<l;B++)void 0!==a[f][B]&&void 0===w[a[f][B]+""]&&(e+="&"+d.buildQueryParameter(f,a[f][B],c),!0!==b&&(w[a[f][B]+
5140  ""]=!0))}else void 0!==a[f]&&(e+="&"+d.buildQueryParameter(f,a[f],c));return e.substring(1)};d.buildQueryParameter=function(a,b,c){return d.encodeQuery(a,c)+(null!==b?"="+d.encodeQuery(b,c):"")};d.addQuery=function(a,b,c){if("object"===typeof b)for(var e in b)E.call(b,e)&&d.addQuery(a,e,b[e]);else if("string"===typeof b)void 0===a[b]?a[b]=c:("string"===typeof a[b]&&(a[b]=[a[b]]),x(c)||(c=[c]),a[b]=(a[b]||[]).concat(c));else throw new TypeError("URI.addQuery() accepts an object, string as the name parameter");
5141  };d.setQuery=function(a,b,c){if("object"===typeof b)for(var e in b)E.call(b,e)&&d.setQuery(a,e,b[e]);else if("string"===typeof b)a[b]=void 0===c?null:c;else throw new TypeError("URI.setQuery() accepts an object, string as the name parameter");};d.removeQuery=function(a,b,c){var e;if(x(b))for(c=0,e=b.length;c<e;c++)a[b[c]]=void 0;else if("RegExp"===z(b))for(e in a)b.test(e)&&(a[e]=void 0);else if("object"===typeof b)for(e in b)E.call(b,e)&&d.removeQuery(a,e,b[e]);else if("string"===typeof b)void 0!==
5142  c?"RegExp"===z(c)?!x(a[b])&&c.test(a[b])?a[b]=void 0:a[b]=M(a[b],c):a[b]!==String(c)||x(c)&&1!==c.length?x(a[b])&&(a[b]=M(a[b],c)):a[b]=void 0:a[b]=void 0;else throw new TypeError("URI.removeQuery() accepts an object, string, RegExp as the first parameter");};d.hasQuery=function(a,b,c,e){switch(z(b)){case "String":break;case "RegExp":for(var f in a)if(E.call(a,f)&&b.test(f)&&(void 0===c||d.hasQuery(a,f,c)))return!0;return!1;case "Object":for(var l in b)if(E.call(b,l)&&!d.hasQuery(a,l,b[l]))return!1;
5143    return!0;default:throw new TypeError("URI.hasQuery() accepts a string, regular expression or object as the name parameter");}switch(z(c)){case "Undefined":return b in a;case "Boolean":return a=!(x(a[b])?!a[b].length:!a[b]),c===a;case "Function":return!!c(a[b],b,a);case "Array":return x(a[b])?(e?F:P)(a[b],c):!1;case "RegExp":return x(a[b])?e?F(a[b],c):!1:!(!a[b]||!a[b].match(c));case "Number":c=String(c);case "String":return x(a[b])?e?F(a[b],c):!1:a[b]===c;default:throw new TypeError("URI.hasQuery() accepts undefined, boolean, string, number, RegExp, Function as the value parameter");
5144  }};d.joinPaths=function(){for(var a=[],b=[],c=0,e=0;e<arguments.length;e++){var f=new d(arguments[e]);a.push(f);f=f.segment();for(var l=0;l<f.length;l++)"string"===typeof f[l]&&b.push(f[l]),f[l]&&c++}if(!b.length||!c)return new d("");b=(new d("")).segment(b);""!==a[0].path()&&"/"!==a[0].path().slice(0,1)||b.path("/"+b.path());return b.normalize()};d.commonPath=function(a,b){var c=Math.min(a.length,b.length),e;for(e=0;e<c;e++)if(a.charAt(e)!==b.charAt(e)){e--;break}if(1>e)return a.charAt(0)===b.charAt(0)&&
5145  "/"===a.charAt(0)?"/":"";if("/"!==a.charAt(e)||"/"!==b.charAt(e))e=a.substring(0,e).lastIndexOf("/");return a.substring(0,e+1)};d.withinString=function(a,b,c){c||(c={});var e=c.start||d.findUri.start,f=c.end||d.findUri.end,l=c.trim||d.findUri.trim,w=c.parens||d.findUri.parens,B=/[a-z0-9-]=["']?$/i;for(e.lastIndex=0;;){var D=e.exec(a);if(!D)break;var O=D.index;if(c.ignoreHtml){var L=a.slice(Math.max(O-3,0),O);if(L&&B.test(L))continue}var N=O+a.slice(O).search(f);L=a.slice(O,N);for(N=-1;;){var Q=w.exec(L);
5146    if(!Q)break;N=Math.max(N,Q.index+Q[0].length)}L=-1<N?L.slice(0,N)+L.slice(N).replace(l,""):L.replace(l,"");L.length<=D[0].length||c.ignore&&c.ignore.test(L)||(N=O+L.length,D=b(L,O,N,a),void 0===D?e.lastIndex=N:(D=String(D),a=a.slice(0,O)+D+a.slice(N),e.lastIndex=O+D.length))}e.lastIndex=0;return a};d.ensureValidHostname=function(a,b){var c=!!a,e=!1;b&&(e=F(d.hostProtocols,b));if(e&&!c)throw new TypeError("Hostname cannot be empty, if protocol is "+b);if(a&&a.match(d.invalid_hostname_characters)){if(!m)throw new TypeError('Hostname "'+
5147    a+'" contains characters other than [A-Z0-9.-:_] and Punycode.js is not available');if(m.toASCII(a).match(d.invalid_hostname_characters))throw new TypeError('Hostname "'+a+'" contains characters other than [A-Z0-9.-:_]');}};d.ensureValidPort=function(a){if(a){var b=Number(a);if(!(/^[0-9]+$/.test(b)&&0<b&&65536>b))throw new TypeError('Port "'+a+'" is not a valid port');}};d.noConflict=function(a){if(a)return a={URI:this.noConflict()},k.URITemplate&&"function"===typeof k.URITemplate.noConflict&&(a.URITemplate=
5148    k.URITemplate.noConflict()),k.IPv6&&"function"===typeof k.IPv6.noConflict&&(a.IPv6=k.IPv6.noConflict()),k.SecondLevelDomains&&"function"===typeof k.SecondLevelDomains.noConflict&&(a.SecondLevelDomains=k.SecondLevelDomains.noConflict()),a;k.URI===this&&(k.URI=K);return this};g.build=function(a){if(!0===a)this._deferred_build=!0;else if(void 0===a||this._deferred_build)this._string=d.build(this._parts),this._deferred_build=!1;return this};g.clone=function(){return new d(this)};g.valueOf=g.toString=
5149    function(){return this.build(!1)._string};g.protocol=G("protocol");g.username=G("username");g.password=G("password");g.hostname=G("hostname");g.port=G("port");g.query=J("query","?");g.fragment=J("fragment","#");g.search=function(a,b){var c=this.query(a,b);return"string"===typeof c&&c.length?"?"+c:c};g.hash=function(a,b){var c=this.fragment(a,b);return"string"===typeof c&&c.length?"#"+c:c};g.pathname=function(a,b){if(void 0===a||!0===a){var c=this._parts.path||(this._parts.hostname?"/":"");return a?
5150    (this._parts.urn?d.decodeUrnPath:d.decodePath)(c):c}this._parts.path=this._parts.urn?a?d.recodeUrnPath(a):"":a?d.recodePath(a):"/";this.build(!b);return this};g.path=g.pathname;g.href=function(a,b){var c;if(void 0===a)return this.toString();this._string="";this._parts=d._parts();var e=a instanceof d,f="object"===typeof a&&(a.hostname||a.path||a.pathname);a.nodeName&&(f=d.getDomAttribute(a),a=a[f]||"",f=!1);!e&&f&&void 0!==a.pathname&&(a=a.toString());if("string"===typeof a||a instanceof String)this._parts=
5151    d.parse(String(a),this._parts);else if(e||f){e=e?a._parts:a;for(c in e)"query"!==c&&E.call(this._parts,c)&&(this._parts[c]=e[c]);e.query&&this.query(e.query,!1)}else throw new TypeError("invalid input");this.build(!b);return this};g.is=function(a){var b=!1,c=!1,e=!1,f=!1,l=!1,w=!1,B=!1,D=!this._parts.urn;this._parts.hostname&&(D=!1,c=d.ip4_expression.test(this._parts.hostname),e=d.ip6_expression.test(this._parts.hostname),b=c||e,l=(f=!b)&&q&&q.has(this._parts.hostname),w=f&&d.idn_expression.test(this._parts.hostname),
5152    B=f&&d.punycode_expression.test(this._parts.hostname));switch(a.toLowerCase()){case "relative":return D;case "absolute":return!D;case "domain":case "name":return f;case "sld":return l;case "ip":return b;case "ip4":case "ipv4":case "inet4":return c;case "ip6":case "ipv6":case "inet6":return e;case "idn":return w;case "url":return!this._parts.urn;case "urn":return!!this._parts.urn;case "punycode":return B}return null};var y=g.protocol,v=g.port,C=g.hostname;g.protocol=function(a,b){if(a&&(a=a.replace(/:(\/\/)?$/,
5153    ""),!a.match(d.protocol_expression)))throw new TypeError('Protocol "'+a+"\" contains characters other than [A-Z0-9.+-] or doesn't start with [A-Z]");return y.call(this,a,b)};g.scheme=g.protocol;g.port=function(a,b){if(this._parts.urn)return void 0===a?"":this;void 0!==a&&(0===a&&(a=null),a&&(a+="",":"===a.charAt(0)&&(a=a.substring(1)),d.ensureValidPort(a)));return v.call(this,a,b)};g.hostname=function(a,b){if(this._parts.urn)return void 0===a?"":this;if(void 0!==a){var c={preventInvalidHostname:this._parts.preventInvalidHostname};
5154    if("/"!==d.parseHost(a,c))throw new TypeError('Hostname "'+a+'" contains characters other than [A-Z0-9.-]');a=c.hostname;this._parts.preventInvalidHostname&&d.ensureValidHostname(a,this._parts.protocol)}return C.call(this,a,b)};g.origin=function(a,b){if(this._parts.urn)return void 0===a?"":this;if(void 0===a){var c=this.protocol();return this.authority()?(c?c+"://":"")+this.authority():""}c=d(a);this.protocol(c.protocol()).authority(c.authority()).build(!b);return this};g.host=function(a,b){if(this._parts.urn)return void 0===
5155  a?"":this;if(void 0===a)return this._parts.hostname?d.buildHost(this._parts):"";if("/"!==d.parseHost(a,this._parts))throw new TypeError('Hostname "'+a+'" contains characters other than [A-Z0-9.-]');this.build(!b);return this};g.authority=function(a,b){if(this._parts.urn)return void 0===a?"":this;if(void 0===a)return this._parts.hostname?d.buildAuthority(this._parts):"";if("/"!==d.parseAuthority(a,this._parts))throw new TypeError('Hostname "'+a+'" contains characters other than [A-Z0-9.-]');this.build(!b);
5156    return this};g.userinfo=function(a,b){if(this._parts.urn)return void 0===a?"":this;if(void 0===a){var c=d.buildUserinfo(this._parts);return c?c.substring(0,c.length-1):c}"@"!==a[a.length-1]&&(a+="@");d.parseUserinfo(a,this._parts);this.build(!b);return this};g.resource=function(a,b){if(void 0===a)return this.path()+this.search()+this.hash();var c=d.parse(a);this._parts.path=c.path;this._parts.query=c.query;this._parts.fragment=c.fragment;this.build(!b);return this};g.subdomain=function(a,b){if(this._parts.urn)return void 0===
5157  a?"":this;if(void 0===a){if(!this._parts.hostname||this.is("IP"))return"";var c=this._parts.hostname.length-this.domain().length-1;return this._parts.hostname.substring(0,c)||""}c=this._parts.hostname.length-this.domain().length;c=this._parts.hostname.substring(0,c);c=new RegExp("^"+n(c));a&&"."!==a.charAt(a.length-1)&&(a+=".");if(-1!==a.indexOf(":"))throw new TypeError("Domains cannot contain colons");a&&d.ensureValidHostname(a,this._parts.protocol);this._parts.hostname=this._parts.hostname.replace(c,
5158    a);this.build(!b);return this};g.domain=function(a,b){if(this._parts.urn)return void 0===a?"":this;"boolean"===typeof a&&(b=a,a=void 0);if(void 0===a){if(!this._parts.hostname||this.is("IP"))return"";var c=this._parts.hostname.match(/\./g);if(c&&2>c.length)return this._parts.hostname;c=this._parts.hostname.length-this.tld(b).length-1;c=this._parts.hostname.lastIndexOf(".",c-1)+1;return this._parts.hostname.substring(c)||""}if(!a)throw new TypeError("cannot set domain empty");if(-1!==a.indexOf(":"))throw new TypeError("Domains cannot contain colons");
5159    d.ensureValidHostname(a,this._parts.protocol);!this._parts.hostname||this.is("IP")?this._parts.hostname=a:(c=new RegExp(n(this.domain())+"$"),this._parts.hostname=this._parts.hostname.replace(c,a));this.build(!b);return this};g.tld=function(a,b){if(this._parts.urn)return void 0===a?"":this;"boolean"===typeof a&&(b=a,a=void 0);if(void 0===a){if(!this._parts.hostname||this.is("IP"))return"";var c=this._parts.hostname.lastIndexOf(".");c=this._parts.hostname.substring(c+1);return!0!==b&&q&&q.list[c.toLowerCase()]?
5160    q.get(this._parts.hostname)||c:c}if(a)if(a.match(/[^a-zA-Z0-9-]/))if(q&&q.is(a))c=new RegExp(n(this.tld())+"$"),this._parts.hostname=this._parts.hostname.replace(c,a);else throw new TypeError('TLD "'+a+'" contains characters other than [A-Z0-9]');else{if(!this._parts.hostname||this.is("IP"))throw new ReferenceError("cannot set TLD on non-domain host");c=new RegExp(n(this.tld())+"$");this._parts.hostname=this._parts.hostname.replace(c,a)}else throw new TypeError("cannot set TLD empty");this.build(!b);
5161    return this};g.directory=function(a,b){if(this._parts.urn)return void 0===a?"":this;if(void 0===a||!0===a){if(!this._parts.path&&!this._parts.hostname)return"";if("/"===this._parts.path)return"/";var c=this._parts.path.length-this.filename().length-1;c=this._parts.path.substring(0,c)||(this._parts.hostname?"/":"");return a?d.decodePath(c):c}c=this._parts.path.length-this.filename().length;c=this._parts.path.substring(0,c);c=new RegExp("^"+n(c));this.is("relative")||(a||(a="/"),"/"!==a.charAt(0)&&
5162  (a="/"+a));a&&"/"!==a.charAt(a.length-1)&&(a+="/");a=d.recodePath(a);this._parts.path=this._parts.path.replace(c,a);this.build(!b);return this};g.filename=function(a,b){if(this._parts.urn)return void 0===a?"":this;if("string"!==typeof a){if(!this._parts.path||"/"===this._parts.path)return"";var c=this._parts.path.lastIndexOf("/");c=this._parts.path.substring(c+1);return a?d.decodePathSegment(c):c}c=!1;"/"===a.charAt(0)&&(a=a.substring(1));a.match(/\.?\//)&&(c=!0);var e=new RegExp(n(this.filename())+
5163    "$");a=d.recodePath(a);this._parts.path=this._parts.path.replace(e,a);c?this.normalizePath(b):this.build(!b);return this};g.suffix=function(a,b){if(this._parts.urn)return void 0===a?"":this;if(void 0===a||!0===a){if(!this._parts.path||"/"===this._parts.path)return"";var c=this.filename(),e=c.lastIndexOf(".");if(-1===e)return"";c=c.substring(e+1);c=/^[a-z0-9%]+$/i.test(c)?c:"";return a?d.decodePathSegment(c):c}"."===a.charAt(0)&&(a=a.substring(1));if(c=this.suffix())e=a?new RegExp(n(c)+"$"):new RegExp(n("."+
5164    c)+"$");else{if(!a)return this;this._parts.path+="."+d.recodePath(a)}e&&(a=d.recodePath(a),this._parts.path=this._parts.path.replace(e,a));this.build(!b);return this};g.segment=function(a,b,c){var e=this._parts.urn?":":"/",f=this.path(),l="/"===f.substring(0,1);f=f.split(e);void 0!==a&&"number"!==typeof a&&(c=b,b=a,a=void 0);if(void 0!==a&&"number"!==typeof a)throw Error('Bad segment "'+a+'", must be 0-based integer');l&&f.shift();0>a&&(a=Math.max(f.length+a,0));if(void 0===b)return void 0===a?f:
5165    f[a];if(null===a||void 0===f[a])if(x(b)){f=[];a=0;for(var w=b.length;a<w;a++)if(b[a].length||f.length&&f[f.length-1].length)f.length&&!f[f.length-1].length&&f.pop(),f.push(h(b[a]))}else{if(b||"string"===typeof b)b=h(b),""===f[f.length-1]?f[f.length-1]=b:f.push(b)}else b?f[a]=h(b):f.splice(a,1);l&&f.unshift("");return this.path(f.join(e),c)};g.segmentCoded=function(a,b,c){var e;"number"!==typeof a&&(c=b,b=a,a=void 0);if(void 0===b){a=this.segment(a,b,c);if(x(a)){var f=0;for(e=a.length;f<e;f++)a[f]=
5166    d.decode(a[f])}else a=void 0!==a?d.decode(a):void 0;return a}if(x(b))for(f=0,e=b.length;f<e;f++)b[f]=d.encode(b[f]);else b="string"===typeof b||b instanceof String?d.encode(b):b;return this.segment(a,b,c)};var H=g.query;g.query=function(a,b){if(!0===a)return d.parseQuery(this._parts.query,this._parts.escapeQuerySpace);if("function"===typeof a){var c=d.parseQuery(this._parts.query,this._parts.escapeQuerySpace),e=a.call(this,c);this._parts.query=d.buildQuery(e||c,this._parts.duplicateQueryParameters,
5167    this._parts.escapeQuerySpace);this.build(!b);return this}return void 0!==a&&"string"!==typeof a?(this._parts.query=d.buildQuery(a,this._parts.duplicateQueryParameters,this._parts.escapeQuerySpace),this.build(!b),this):H.call(this,a,b)};g.setQuery=function(a,b,c){var e=d.parseQuery(this._parts.query,this._parts.escapeQuerySpace);if("string"===typeof a||a instanceof String)e[a]=void 0!==b?b:null;else if("object"===typeof a)for(var f in a)E.call(a,f)&&(e[f]=a[f]);else throw new TypeError("URI.addQuery() accepts an object, string as the name parameter");
5168    this._parts.query=d.buildQuery(e,this._parts.duplicateQueryParameters,this._parts.escapeQuerySpace);"string"!==typeof a&&(c=b);this.build(!c);return this};g.addQuery=function(a,b,c){var e=d.parseQuery(this._parts.query,this._parts.escapeQuerySpace);d.addQuery(e,a,void 0===b?null:b);this._parts.query=d.buildQuery(e,this._parts.duplicateQueryParameters,this._parts.escapeQuerySpace);"string"!==typeof a&&(c=b);this.build(!c);return this};g.removeQuery=function(a,b,c){var e=d.parseQuery(this._parts.query,
5169    this._parts.escapeQuerySpace);d.removeQuery(e,a,b);this._parts.query=d.buildQuery(e,this._parts.duplicateQueryParameters,this._parts.escapeQuerySpace);"string"!==typeof a&&(c=b);this.build(!c);return this};g.hasQuery=function(a,b,c){var e=d.parseQuery(this._parts.query,this._parts.escapeQuerySpace);return d.hasQuery(e,a,b,c)};g.setSearch=g.setQuery;g.addSearch=g.addQuery;g.removeSearch=g.removeQuery;g.hasSearch=g.hasQuery;g.normalize=function(){return this._parts.urn?this.normalizeProtocol(!1).normalizePath(!1).normalizeQuery(!1).normalizeFragment(!1).build():
5170    this.normalizeProtocol(!1).normalizeHostname(!1).normalizePort(!1).normalizePath(!1).normalizeQuery(!1).normalizeFragment(!1).build()};g.normalizeProtocol=function(a){"string"===typeof this._parts.protocol&&(this._parts.protocol=this._parts.protocol.toLowerCase(),this.build(!a));return this};g.normalizeHostname=function(a){this._parts.hostname&&(this.is("IDN")&&m?this._parts.hostname=m.toASCII(this._parts.hostname):this.is("IPv6")&&u&&(this._parts.hostname=u.best(this._parts.hostname)),this._parts.hostname=
5171    this._parts.hostname.toLowerCase(),this.build(!a));return this};g.normalizePort=function(a){"string"===typeof this._parts.protocol&&this._parts.port===d.defaultPorts[this._parts.protocol]&&(this._parts.port=null,this.build(!a));return this};g.normalizePath=function(a){var b=this._parts.path;if(!b)return this;if(this._parts.urn)return this._parts.path=d.recodeUrnPath(this._parts.path),this.build(!a),this;if("/"===this._parts.path)return this;b=d.recodePath(b);var c="";if("/"!==b.charAt(0)){var e=!0;
5172    b="/"+b}if("/.."===b.slice(-3)||"/."===b.slice(-2))b+="/";b=b.replace(/(\/(\.\/)+)|(\/\.$)/g,"/").replace(/\/{2,}/g,"/");e&&(c=b.substring(1).match(/^(\.\.\/)+/)||"")&&(c=c[0]);for(;;){var f=b.search(/\/\.\.(\/|$)/);if(-1===f)break;else if(0===f){b=b.substring(3);continue}var l=b.substring(0,f).lastIndexOf("/");-1===l&&(l=f);b=b.substring(0,l)+b.substring(f+3)}e&&this.is("relative")&&(b=c+b.substring(1));this._parts.path=b;this.build(!a);return this};g.normalizePathname=g.normalizePath;g.normalizeQuery=
5173    function(a){"string"===typeof this._parts.query&&(this._parts.query.length?this.query(d.parseQuery(this._parts.query,this._parts.escapeQuerySpace)):this._parts.query=null,this.build(!a));return this};g.normalizeFragment=function(a){this._parts.fragment||(this._parts.fragment=null,this.build(!a));return this};g.normalizeSearch=g.normalizeQuery;g.normalizeHash=g.normalizeFragment;g.iso8859=function(){var a=d.encode,b=d.decode;d.encode=escape;d.decode=decodeURIComponent;try{this.normalize()}finally{d.encode=
5174    a,d.decode=b}return this};g.unicode=function(){var a=d.encode,b=d.decode;d.encode=A;d.decode=unescape;try{this.normalize()}finally{d.encode=a,d.decode=b}return this};g.readable=function(){var a=this.clone();a.username("").password("").normalize();var b="";a._parts.protocol&&(b+=a._parts.protocol+"://");a._parts.hostname&&(a.is("punycode")&&m?(b+=m.toUnicode(a._parts.hostname),a._parts.port&&(b+=":"+a._parts.port)):b+=a.host());a._parts.hostname&&a._parts.path&&"/"!==a._parts.path.charAt(0)&&(b+="/");
5175    b+=a.path(!0);if(a._parts.query){for(var c="",e=0,f=a._parts.query.split("&"),l=f.length;e<l;e++){var w=(f[e]||"").split("=");c+="&"+d.decodeQuery(w[0],this._parts.escapeQuerySpace).replace(/&/g,"%26");void 0!==w[1]&&(c+="="+d.decodeQuery(w[1],this._parts.escapeQuerySpace).replace(/&/g,"%26"))}b+="?"+c.substring(1)}return b+=d.decodeQuery(a.hash(),!0)};g.absoluteTo=function(a){var b=this.clone(),c=["protocol","username","password","hostname","port"],e,f;if(this._parts.urn)throw Error("URNs do not have any generally defined hierarchical components");
5176    a instanceof d||(a=new d(a));if(b._parts.protocol)return b;b._parts.protocol=a._parts.protocol;if(this._parts.hostname)return b;for(e=0;f=c[e];e++)b._parts[f]=a._parts[f];b._parts.path?(".."===b._parts.path.substring(-2)&&(b._parts.path+="/"),"/"!==b.path().charAt(0)&&(c=(c=a.directory())?c:0===a.path().indexOf("/")?"/":"",b._parts.path=(c?c+"/":"")+b._parts.path,b.normalizePath())):(b._parts.path=a._parts.path,b._parts.query||(b._parts.query=a._parts.query
5176));b.build();return b};g.relativeTo=function(a){var b=
5177    this.clone().normalize();if(b._parts.urn)throw Error("URNs do not have any generally defined hierarchical components");a=(new d(a)).normalize();var c=b._parts;var e=a._parts;var f=b.path();a=a.path();if("/"!==f.charAt(0))throw Error("URI is already relative");if("/"!==a.charAt(0))throw Error("Cannot calculate a URI relative to another relative URI");c.protocol===e.protocol&&(c.protocol=null);if(c.username===e.username&&c.password===e.password&&null===c.protocol&&null===c.username&&null===c.password&&
5178    c.hostname===e.hostname&&c.port===e.port)c.hostname=null,c.port=null;else return b.build();if(f===a)return c.path="",b.build();f=d.commonPath(f,a);if(!f)return b.build();e=e.path.substring(f.length).replace(/[^\/]*$/,"").replace(/.*?\//g,"../");c.path=e+c.path.substring(f.length)||"./";return b.build()};g.equals=function(a){var b=this.clone(),c=new d(a);a={};var e;b.normalize();c.normalize();if(b.toString()===c.toString())return!0;var f=b.query();var l=c.query();b.query("");c.query("");if(b.toString()!==
5179    c.toString()||f.length!==l.length)return!1;b=d.parseQuery(f,this._parts.escapeQuerySpace);l=d.parseQuery(l,this._parts.escapeQuerySpace);for(e in b)if(E.call(b,e)){if(!x(b[e])){if(b[e]!==l[e])return!1}else if(!P(b[e],l[e]))return!1;a[e]=!0}for(e in l)if(E.call(l,e)&&!a[e])return!1;return!0};g.preventInvalidHostname=function(a){this._parts.preventInvalidHostname=!!a;return this};g.duplicateQueryParameters=function(a){this._parts.duplicateQueryParameters=!!a;return this};g.escapeQuerySpace=function(a){this._parts.escapeQuerySpace=
5180    !!a;return this};return d});
5181(function(m,u){"object"===typeof module&&module.exports?module.exports=u(require("jquery"),require("./URI")):"function"===typeof define&&define.amd?define(["jquery","./URI"],u):u(m.jQuery,m.URI)})(this,function(m,u){function q(h){return h.replace(/([.*+?^=!:${}()|[\]\/\\])/g,"\\$1")}function k(h){var r=h.nodeName.toLowerCase();if("input"!==r||"image"===h.type)return u.domAttributes[r]}function d(h){return{get:function(r){return m(r).uri()[h]()},set:function(r,A){m(r).uri()[h](A);return A}}}function n(h,
5182                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          r){if(!k(h)||!r)return!1;var A=r.match(F);if(!A||!A[5]&&":"!==A[2]&&!x[A[2]])return!1;var G=m(h).uri();if(A[5])return G.is(A[5]);if(":"===A[2]){var J=A[1].toLowerCase()+":";return x[J]?x[J](G,A[4]):!1}J=A[1].toLowerCase();return z[J]?x[A[2]](G[J](),A[4],J):!1}var z={},x={"=":function(h,r){return h===r},"^=":function(h,r){return!!(h+"").match(new RegExp("^"+q(r),"i"))},"$=":function(h,r){return!!(h+"").match(new RegExp(q(r)+"$","i"))},"*=":function(h,r,A){"directory"===A&&(h+="/");return!!(h+"").match(new RegExp(q(r),
5183    "i"))},"equals:":function(h,r){return h.equals(r)},"is:":function(h,r){return h.is(r)}};m.each("origin authority directory domain filename fragment hash host hostname href password path pathname port protocol query resource scheme search subdomain suffix tld username".split(" "),function(h,r){z[r]=!0;m.attrHooks["uri:"+r]=d(r)});var M=function(h,r){return m(h).uri().href(r).toString()};m.each(["src","href","action","uri","cite"],function(h,r){m.attrHooks[r]={set:M}});m.attrHooks.uri.get=function(h){return m(h).uri()};
5184  m.fn.uri=function(h){var r=this.first(),A=r.get(0),G=k(A);if(!G)throw Error('Element "'+A.nodeName+'" does not have either property: href, src, action, cite');if(void 0!==h){var J=r.data("uri");if(J)return J.href(h);h instanceof u||(h=u(h||""))}else{if(h=r.data("uri"))return h;h=u(r.attr(G)||"")}h._dom_element=A;h._dom_attribute=G;h.normalize();r.data("uri",h);return h};u.prototype.build=function(h){if(this._dom_element)this._string=u.build(this._parts),this._deferred_build=!1,this._dom_element.setAttribute(this._dom_attribute,
5185    this._string),this._dom_element[this._dom_attribute]=this._string;else if(!0===h)this._deferred_build=!0;else if(void 0===h||this._deferred_build)this._string=u.build(this._parts),this._deferred_build=!1;return this};var F=/^([a-zA-Z]+)\s*([\^\$*]?=|:)\s*(['"]?)(.+)\3|^\s*([a-zA-Z0-9]+)\s*$/;var P=m.expr.createPseudo?m.expr.createPseudo(function(h){return function(r){return n(r,h)}}):function(h,r,A){return n(h,A[3])};m.expr[":"].uri=P;return m});
5186
5187
5188function SearchController() {
5189    var _this = this;
5190
5191    _this.ajaxType = 7383;
5192
5193    this.init = function() {
5194        jQuery("body").delegate("a.solr-ajaxified", "click", _this.handleClickOnAjaxifiedUri);
5195    };
5196
5197    this.handleClickOnAjaxifiedUri = function() {
5198        var clickedLink = jQuery(this);
5199
5200        var solrContainer = clickedLink.closest(".tx_solr");
5201        var solrParent = solrContainer.parent();
5202
5203        var loader = jQuery("<div class='tx-solr-loader'></div>");
5204        var uri = clickedLink.uri();
5205
5206        solrParent.append(loader);
5207        uri.addQuery("type", _this.ajaxType);
5208
5209        jQuery.get(
5210            uri.href(),
5211            function(data) {
5212                solrContainer = solrContainer.replaceWith(data);
5213                _this.scrollToTopOfElement(solrParent, 50);
5214                jQuery("body").trigger("tx_solr_updated");
5215                loader.fadeOut().remove();
5216                history.replaceState({}, null, uri.removeQuery("type").href());
5217            }
5218        );
5219        return false;
5220    };
5221
5222    this.scrollToTopOfElement = function(element, deltaTop) {
5223        jQuery('html, body').animate({
5224            scrollTop: (element.offset().top - deltaTop) + 'px'
5225        }, 'slow');
5226    };
5227
5228    this.setAjaxType = function(ajaxType) {
5229        _this.ajaxType = ajaxType;
5230    };
5231}
5232
5233jQuery(document).ready(function() {
5234    var solrSearchController = new SearchController();
5235    solrSearchController.init();
5236
5237    if(typeof solrSearchAjaxType !== "undefined") {
5238        solrSearchController.setAjaxType(solrSearchAjaxType);
5239    }
5240});
5241
5242/**
5243 *  Ajax Autocomplete for jQuery, version 1.4.11
5244 *  (c) 2017 Tomas Kirda
5245 *
5246 *  Ajax Autocomplete for jQuery is freely distributable under the terms of an MIT-style license.
5247 *  For details, see the web site: https://github.com/devbridge/jQuery-Autocomplete
5248 */
5249!function(t){"use strict";"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof exports&&"function"==typeof require?t(require("jquery")):t(jQuery)}(function(t){"use strict";var e={escapeRegExChars:function(t){return t.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&")},createNode:function(t){var e=document.createElement("div");return e.className=t,e.style.position="absolute",e.style.display="none",e}},s=27,i=9,n=13,o=38,a=39,u=40,l=t.noop;function r(e,s){this.element=e,this.el=t(e),this.suggestions=[],this.badQueries=[],this.selectedIndex=-1,this.currentValue=this.element.value,this.timeoutId=null,this.cachedResponse={},this.onChangeTimeout=null,this.onChange=null,this.isLocal=!1,this.suggestionsContainer=null,this.noSuggestionsContainer=null,this.options=t.extend(!0,{},r.defaults,s),this.classes={selected:"autocomplete-selected",suggestion:"autocomplete-suggestion"},this.hint=null,this.hintValue="",this.selection=null,this.initialize(),this.setOptions(s)}r.utils=e,t.Autocomplete=r,r.defaults={ajaxSettings:{},autoSelectFirst:!1,appendTo:"body",serviceUrl:null,lookup:null,onSelect:null,onHint:null,width:"auto",minChars:1,maxHeight:300,deferRequestBy:0,params:{},formatResult:function(t,s){if(!s)return t.value;var i="("+e.escapeRegExChars(s)+")";return t.value.replace(new RegExp(i,"gi"),"<strong>$1</strong>").replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/&lt;(\/?strong)&gt;/g,"<$1>")},formatGroup:function(t,e){return'<div class="autocomplete-group">'+e+"</div>"},delimiter:null,zIndex:9999,type:"GET",noCache:!1,onSearchStart:l,onSearchComplete:l,onSearchError:l,preserveInput:!1,containerClass:"autocomplete-suggestions",tabDisabled:!1,dataType:"text",currentRequest:null,triggerSelectOnValidInput:!0,preventBadQueries:!0,lookupFilter:function(t,e,s){return-1!==t.value.toLowerCase().indexOf(s)},paramName:"query",transformResult:function(e){return"string"==typeof e?t.parseJSON(e):e},showNoSuggestionNotice:!1,noSuggestionNotice:"No results",orientation:"bottom",forceFixPosition:!1},r.prototype={initialize:function(){var e,s=this,i="."+s.classes.suggestion,n=s.classes.selected,o=s.options;s.element.setAttribute("autocomplete","off"),s.noSuggestionsContainer=t('<div class="autocomplete-no-suggestion"></div>').html(this.options.noSuggestionNotice).get(0),s.suggestionsContainer=r.utils.createNode(o.containerClass),(e=t(s.suggestionsContainer)).appendTo(o.appendTo||"body"),"auto"!==o.width&&e.css("width",o.width),e.on("mouseover.autocomplete",i,function(){s.activate(t(this).data("index"))}),e.on("mouseout.autocomplete",function(){s.selectedIndex=-1,e.children("."+n).removeClass(n)}),e.on("click.autocomplete",i,function(){s.select(t(this).data("index"))}),e.on("click.autocomplete",function(){clearTimeout(s.blurTimeoutId)}),s.fixPositionCapture=function(){s.visible&&s.fixPosition()},t(window).on("resize.autocomplete",s.fixPositionCapture),s.el.on("keydown.autocomplete",function(t){s.onKeyPress(t)}),s.el.on("keyup.autocomplete",function(t){s.onKeyUp(t)}),s.el.on("blur.autocomplete",function(){s.onBlur()}),s.el.on("focus.autocomplete",function(){s.onFocus()}),s.el.on("change.autocomplete",function(t){s.onKeyUp(t)}),s.el.on("input.autocomplete",function(t){s.onKeyUp(t)})},onFocus:function(){this.disabled||(this.fixPosition(),this.el.val().length>=this.options.minChars&&this.onValueChange())},onBlur:function(){var e=this,s=e.options,i=e.el.val(),n=e.getQuery(i);e.blurTimeoutId=setTimeout(function(){e.hide(),e.selection&&e.currentValue!==n&&(s.onInvalidateSelection||t.noop).call(e.element)},200)},abortAjax:function(){this.currentRequest&&(this.currentRequest.abort(),this.currentRequest=null)},setOptions:function(e){var s=t.extend({},this.options,e);this.isLocal=Array.isArray(s.lookup),this.isLocal&&(s.lookup=this.verifySuggestionsFormat(s.lookup)),s.orientation=this.validateOrientation(s.orientation,"bottom"),t(this.suggestionsContainer).css({"max-height":s.maxHeight+"px",width:s.width+"px","z-index":s.zIndex}),this.options=s},clearCache:function(){this.cachedResponse={},this.badQueries=[]},clear:function(){this.clearCache(),this.currentValue="",this.suggestions=[]},disable:function(){this.disabled=!0,clearTimeout(this.onChangeTimeout),this.abortAjax()},enable:function(){this.disabled=!1},fixPosition:function(){var e=t(this.suggestionsContainer),s=e.parent().get(0);if(s===document.body||this.options.forceFixPosition){var i=this.options.orientation,n=e.outerHeight(),o=this.el.outerHeight(),a=this.el.offset(),u={top:a.top,left
5249:a.left};if("auto"===i){var l=t(window).height(),r=t(window).scrollTop(),h=-r+a.top-n,c=r+l-(a.top+o+n);i=Math.max(h,c)===h?"top":"bottom"}if(u.top+="top"===i?-n:o,s!==document.body){var g,d=e.css("opacity");this.visible||e.css("opacity",0).show(),g=e.offsetParent().offset(),u.top-=g.top,u.top+=s.scrollTop,u.left-=g.left,this.visible||e.css("opacity",d).hide()}"auto"===this.options.width&&(u.width=this.el.outerWidth()+"px"),e.css(u)}},isCursorAtEnd:function(){var t,e=this.el.val().length,s=this.element.selectionStart;return"number"==typeof s?s===e:!document.selection||((t=document.selection.createRange()).moveStart("character",-e),e===t.text.length)},onKeyPress:function(t){if(this.disabled||this.visible||t.which!==u||!this.currentValue){if(!this.disabled&&this.visible){switch(t.which){case s:this.el.val(this.currentValue),this.hide();break;case a:if(this.hint&&this.options.onHint&&this.isCursorAtEnd()){this.selectHint();break}return;case i:if(this.hint&&this.options.onHint)return void this.selectHint();if(-1===this.selectedIndex)return void this.hide();if(this.select(this.selectedIndex),!1===this.options.tabDisabled)return;break;case n:if(-1===this.selectedIndex)return void this.hide();this.select(this.selectedIndex);break;case o:this.moveUp();break;case u:this.moveDown();break;default:return}t.stopImmediatePropagation(),t.preventDefault()}}else this.suggest()},onKeyUp:function(t){var e=this;if(!e.disabled){switch(t.which){case o:case u:return}clearTimeout(e.onChangeTimeout),e.currentValue!==e.el.val()&&(e.findBestHint(),e.options.deferRequestBy>0?e.onChangeTimeout=setTimeout(function(){e.onValueChange()},e.options.deferRequestBy):e.onValueChange())}},onValueChange:function(){if(this.ignoreValueChange)this.ignoreValueChange=!1;else{var e=this.options,s=this.el.val(),i=this.getQuery(s);this.selection&&this.currentValue!==i&&(this.selection=null,(e.onInvalidateSelection||t.noop).call(this.element)),clearTimeout(this.onChangeTimeout),this.currentValue=s,this.selectedIndex=-1,e.triggerSelectOnValidInput&&this.isExactMatch(i)?this.select(0):i.length<e.minChars?this.hide():this.getSuggestions(i)}},isExactMatch:function(t){var e=this.suggestions;return 1===e.length&&e[0].value.toLowerCase()===t.toLowerCase()},getQuery:function(e){var s,i=this.options.delimiter;return i?(s=e.split(i),t.trim(s[s.length-1])):e},getSuggestionsLocal:function(e){var s,i=this.options,n=e.toLowerCase(),o=i.lookupFilter,a=parseInt(i.lookupLimit,10);return s={suggestions:t.grep(i.lookup,function(t){return o(t,e,n)})},a&&s.suggestions.length>a&&(s.suggestions=s.suggestions.slice(0,a)),s},getSuggestions:function(e){var s,i,n,o,a=this,u=a.options,l=u.serviceUrl;u.params[u.paramName]=e,!1!==u.onSearchStart.call(a.element,u.params)&&(i=u.ignoreParams?null:u.params,t.isFunction(u.lookup)?u.lookup(e,function(t){a.suggestions=t.suggestions,a.suggest(),u.onSearchComplete.call(a.element,e,t.suggestions)}):(a.isLocal?s=a.getSuggestionsLocal(e):(t.isFunction(l)&&(l=l.call(a.element,e)),n=l+"?"+t.param(i||{}),s=a.cachedResponse[n]),s&&Array.isArray(s.suggestions)?(a.suggestions=s.suggestions,a.suggest(),u.onSearchComplete.call(a.element,e,s.suggestions)):a.isBadQuery(e)?u.onSearchComplete.call(a.element,e,[]):(a.abortAjax(),o={url:l,data:i,type:u.type,dataType:u.dataType},t.extend(o,u.ajaxSettings),a.currentRequest=t.ajax(o).done(function(t){var s;a.currentRequest=null,s=u.transformResult(t,e),a.processResponse(s,e,n),u.onSearchComplete.call(a.element,e,s.suggestions)}).fail(function(t,s,i){u.onSearchError.call(a.element,e,t,s,i)}))))},isBadQuery:function(t){if(!this.options.preventBadQueries)return!1;for(var e=this.badQueries,s=e.length;s--;)if(0===t.indexOf(e[s]))return!0;return!1},hide:function(){var e=t(this.suggestionsContainer);t.isFunction(this.options.onHide)&&this.visible&&this.options.onHide.call(this.element,e),this.visible=!1,this.selectedIndex=-1,clearTimeout(this.onChangeTimeout),t(this.suggestionsContainer).hide(),this.onHint(null)},suggest:function(){if(this.suggestions.length){var e,s=this.options,i=s.groupBy,n=s.formatResult,o=this.getQuery(this.currentValue),a=this.classes.suggestion,u=this.classes.selected,l=t(this.suggestionsContainer),r=t(this.noSuggestionsContainer),h=s.beforeRender,c="";s.triggerSelectOnValidInput&&this.isExactMatch(o)?this.select(0):(t.each(this.suggestions,function(t,u){i&&(c+=function(t,n){var o=t.data[i];return e===o?"":(e=o,s.formatGroup(t,e))}(u,0)),c+='<div class="'+a+'" data-index="'+t+'">'+n(u,o,t)+"</div>"}),this.adjustContainerWidth(),r.detach(),l.html(c),t.isFunction(h)&&h.call(this.element,l,this.suggestions),this.fixPosition(),l.show(),s.autoSelectFirst&&(this.selectedIndex=0,l.scrollTop(0),l.children("."+a).first().addClass(u)),this.visible=!0,this.findBestHint())}else this.options.showNoSuggestionNotice?this.noSuggestions():this.hide()},noSuggestions:function(){var e=this.options.beforeRender,s=t(this.suggestionsContainer),i=t(this.noSuggestionsContainer);this.adjustContainerWidth(),i.detach(),s.empty(),s.append(i),t.isFunction(e)&&e.call(this.element,s,this.suggestions),this.fixPosition(),s.show(),this.visible=!0},adjustContainerWidth:function(){var e,s=this.options,i=t(this.suggestionsContainer);"auto"===s.width?(e=this.el.outerWidth(),i.css("width",e>0?e:300)):"flex"===s.width&&i.css("width","")},findBestHint:function(){var e=this.el.val().toLowerCase(),s=null;e&&(t.each(this.suggestions,function(t,i){var n=0===i.value.toLowerCase().indexOf(e);return n&&(s=i),!n}),this.onHint(s))},onHint:function(e){var s=this.options.onHint,i="";e&&(i=this.currentValue+e.value.substr(this.currentValue.length)),this.hintValue!==i&&(this.hintValue=i,this.hint=e,t.isFunction(s)&&s.call(this.element,i))},verifySuggestionsFormat:function(e){return e.length&&"string"==typeof e[0]?t.map(e,function(t){return{value:t,data:null}}):e},validateOrientation:function(e,s){return e=t.trim(e||"").toLowerCase(),-1===t.inArray(e,["auto","bottom","top"])&&(e=s),e},processResponse:function(t,e,s){var i=this.options;t.suggestions=this.verifySuggestionsFormat(t.suggestions),i.noCache||(this.cachedResponse[s]=t,i.preventBadQueries&&!t.suggestions.length&&this.badQueries.push(e)),e===this.getQuery(this.currentValue)&&(this.suggestions=t.suggestions,this.suggest())},activate:function(e){var s,i=this.classes.selected,n=t(this.suggestionsContainer),o=n.find("."+this.classes.suggestion);return n.find("."+i).removeClass(i),this.selectedIndex=e,-1!==this.selectedIndex&&o.length>this.selectedIndex?(s=o.get(this.selectedIndex),t(s).addClass(i),s):null},selectHint:function(){var e=t.inArray(this.hint,this.suggestions);this.select(e)},select:function(t){this.hide(),this.onSelect(t)},moveUp:function(){if(-1!==this.selectedIndex)return 0===this.selectedIndex?(t(this.suggestionsContainer).children("."+this.classes.suggestion).first().removeClass(this.classes.selected),this.selectedIndex=-1,this.ignoreValueChange=!1,this.el.val(this.currentValue),void this.findBestHint()):void this.adjustScroll(this.selectedIndex-1)},moveDown:function(){this.selectedIndex!==this.suggestions.length-1&&this.adjustScroll(this.selectedIndex+1)},adjustScroll:function(e){var s=this.activate(e);if(s){var i,n,o,a=t(s).outerHeight();i=s.offsetTop,o=(n=t(this.suggestionsContainer).scrollTop())+this.options.maxHeight-a,i<n?t(this.suggestionsContainer).scrollTop(i):i>o&&t(this.suggestionsContainer).scrollTop(i-this.options.maxHeight+a),this.options.preserveInput||(this.ignoreValueChange=!0,this.el.val(this.getValue(this.suggestions[e].value))),this.onHint(null)}},onSelect:function(e){var s=this.options.onSelect,i=this.suggestions[e];this.currentValue=this.getValue(i.value),this.currentValue===this.el.val()||this.options.preserveInput||this.el.val(this.currentValue),this.onHint(null),this.suggestions=[],this.selection=i,t.isFunction(s)&&s.call(this.element,i)},getValue:function(t){var e,s,i=this.options.delimiter;return i?1===(s=(e=this.currentValue).split(i)).length?t:e.substr(0,e.length-s[s.length-1].length)+t:t},dispose:function(){this.el.off(".autocomplete").removeData("autocomplete"),t(window).off("resize.autocomplete",this.fixPositionCapture),t(this.suggestionsContainer).remove()}},t.fn.devbridgeAutocomplete=function(e,s){return arguments.length?this.each(function(){var i=t(this),n=i.data("autocomplete");"string"==typeof e?n&&"function"==typeof n[e]&&n[e](s):(n&&n.dispose&&n.dispose(),n=new r(this,e),i.data("autocomplete",n))}):this.first().data("autocomplete")}
5249,t.fn.autocomplete||(t.fn.autocomplete=t.fn.devbridgeAutocomplete)});
5250
5251/**
5252 * Project override of EXT:solr's suggest_controller.js.
5253 *
5254 * Only change vs. the vendor original: `width` is 'flex' instead of a fixed
5255 * px value (searchBox.outerWidth() * 0.66). Combined with the
5256 * `tx-solr-autocomplete` wrapper (position: relative) around the search
5257 * field in SolrSearchHeadForm.html, this makes the devbridge-autocomplete
5258 * plugin skip its own top/left/width calculation entirely (it only computes
5259 * those when appended directly to <body>) and lets CSS
5260 * (.tx-solr-autosuggest in _custom.scss) size the suggestion box to exactly
5261 * match the search field at every breakpoint, instead of a fixed multiplier.
5262 */
5263function SuggestController() {
5264
5265    this.init = function () {
5266
5267        jQuery('form[data-suggest]').each(function () {
5268            var $form = $(this), $searchBox = $form.find('.tx-solr-suggest'), $formAutoComplete;
5269
5270            if ($form.find('.tx-solr-autocomplete').length > 0){
5271                $formAutoComplete = $form.find('.tx-solr-autocomplete');
5272            } else {
5273                $formAutoComplete = $('body');
5274            }
5275
5276            // when no specific container found, use the form as container
5277            if ($searchBox.length === 0) {
5278                $searchBox = $form;
5279            }
5280            $searchBox.css('position', 'relative');
5281
5282            $form.find('.tx-solr-suggest-focus').focus();
5283
5284            // Prevent submit of empty search form
5285            $form.on('submit', function (e) {
5286                if ($form.find('.tx-solr-suggest-focus').val() === '') {
5287                    e.preventDefault();
5288                    $form.find('.tx-solr-suggest-focus').focus();
5289                }
5290            });
5291
5292            $form.find('.tx-solr-suggest').devbridgeAutocomplete({
5293                serviceUrl: $form.data('suggest'),
5294                dataType: 'json',
5295                paramName: 'tx_solr[queryString]',
5296                groupBy: 'category',
5297                maxHeight: 1000,
5298                appendTo: $formAutoComplete,
5299                autoSelectFirst: false,
5300                triggerSelectOnValidInput: false,
5301                width: 'flex',
5302                onSelect: function (suggestion) {
5303                    // go to link when selecting found result
5304                    if (suggestion.data.link) {
5305                        // Open youtube in overlay
5306                        if (suggestion.data.link.indexOf('https://www.youtube.com') === 0) {
5307                            openVideoOverlay(suggestion.data.link);
5308                        } else {
5309                            location.href = suggestion.data.link;
5310                        }
5311                        // else trigger form submit (do search)
5312                    } else {
5313                        $form.trigger('submit');
5314                    }
5315                },
5316                transformResult: function (response) {
5317                    if (!response.suggestions) return {suggestions: []};
5318                    var firstSuggestion, result = {
5319                        suggestions: $.map(response.suggestions, function (count, suggestion) {
5320                            if (!firstSuggestion) firstSuggestion = suggestion;
5321                            return {value: suggestion, data: {category: 'suggestion', count: count}};
5322                        })
5323                    };
5324
5325                    $.each(response.documents, function (key, value) {
5326                        var dataObject = value;
5327
5328                        var defaultGroup = $form.data('suggest-header') ? $form.data('suggest-header') : 'Top results';
5329                        dataObject.category = defaultGroup;
5330
5331                        // if a group is set we try to get a label
5332                        if(dataObject.group) {
5333                            dataObject.category = $form.data('suggest-header-' + dataObject.group) ? $form.data('suggest-header-' + dataObject.group) : dataObject.group;
5334                        }
5335
5336                        result.suggestions.push(
5337                            {
5338                                value: firstSuggestion,
5339                                data: dataObject
5340                            }
5341                        );
5342                    });
5343
5344                    return result;
5345                },
5346                beforeRender: function (container) {
5347                    // remove first group header
5348                    container.find('.autocomplete-group:first').remove();
5349                    container.addClass('tx-solr-autosuggest');
5350
5351                    // add active class to container
5352                    $searchBox.parent().addClass('autocomplete-active').fadeIn();
5353                },
5354                formatResult: function (suggestion, currentValue) {
5355                    // Do not replace anything if there current value is empty
5356                    if (!currentValue) {
5357                        return suggestion.value;
5358                    }
5359                    var pattern = '(' + $.Autocomplete.utils.escapeRegExChars(currentValue.trim()) + ')';
5360                    // normal suggestion
5361                    if (suggestion.data.category === 'suggestion') {
5362                        return suggestion.value
5363                            .replace(new RegExp(pattern, 'gi'), '<strong>$1<\/strong>')
5364                            .replace(/&/g, '&amp;')
5365                            .replace(/</g, '&lt;')
5366                            .replace(/>/g, '&gt;')
5367                            .replace(/"/g, '&quot;')
5368                            .replace(/&lt;(\/?strong)&gt;/g, '<$1>');
5369
5370                        // results
5371                    } else {
5372                        var title = suggestion.data.title
5373                            .replace(new RegExp(pattern, 'gi'), '<em>$1<\/em>')
5374                            .replace(/&/g, '&amp;')
5375                            .replace(/</g, '&lt;')
5376                            .replace(/>/g, '&gt;')
5377                            .replace(/"/g, '&quot;')
5378                            .replace(/&lt;(\/?em)&gt;/g, '<$1>');
5379
5380                        return '<div class="' + suggestion.data.type + '">' +
5381                            (!!suggestion.data.previewImage ? '<figure ' + (!!suggestion.data.hasVideo ? 'class="hasVideo"' : '') + '>
5381<img src="' + suggestion.data.previewImage + '" /></figure>' : '') +
5382                            '<a href="' + suggestion.data.link + '" class="internal-link">' + title + '</a>' +
5383                            '</div>';
5384                    }
5385
5386                }
5387            }).on('blur', function () {
5388                $searchBox.parent().removeClass('autocomplete-active');
5389                var $box = $(this);
5390                setTimeout(function () {
5391                    $box.devbridgeAutocomplete('hide');
5392                }, 200);
5393            });
5394        });
5395    };
5396}
5397
5398jQuery(document).ready(function() {
5399    /** solr search autocomplete **/
5400    var solrSuggestController = new SuggestController();
5401    solrSuggestController.init();
5402
5403    jQuery("body").on("tx_solr_updated", function() {
5404        solrSuggestController.init();
5405    });
5406});

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.