{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/core-js/internals/global.js","webpack:///./node_modules/core-js/internals/is-callable.js","webpack:///./node_modules/core-js/internals/function-uncurry-this.js","webpack:///./node_modules/core-js/internals/fails.js","webpack:///./node_modules/core-js/internals/has-own-property.js","webpack:///./node_modules/core-js/internals/descriptors.js","webpack:///./node_modules/core-js/internals/is-object.js","webpack:///./node_modules/jquery/dist/jquery.js-exposed?5ef8","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/core-js/internals/function-call.js","webpack:///./node_modules/core-js/internals/function-bind-native.js","webpack:///./node_modules/core-js/internals/well-known-symbol.js","webpack:///./node_modules/core-js/internals/get-built-in.js","webpack:///./node_modules/core-js/internals/create-non-enumerable-property.js","webpack:///./node_modules/core-js/internals/to-object.js","webpack:///./node_modules/core-js/internals/shared-store.js","webpack:///./node_modules/core-js/internals/set-global.js","webpack:///./node_modules/core-js/internals/uid.js","webpack:///./node_modules/core-js/internals/classof-raw.js","webpack:///./node_modules/core-js/internals/object-define-property.js","webpack:///./node_modules/core-js/internals/an-object.js","webpack:///./node_modules/core-js/internals/to-integer-or-infinity.js","webpack:///./node_modules/core-js/internals/to-indexed-object.js","webpack:///./node_modules/core-js/internals/require-object-coercible.js","webpack:///./node_modules/core-js/internals/shared.js","webpack:///./node_modules/core-js/internals/native-symbol.js","webpack:///./node_modules/core-js/internals/engine-user-agent.js","webpack:///./node_modules/core-js/internals/use-symbol-as-uid.js","webpack:///./node_modules/core-js/internals/try-to-string.js","webpack:///./node_modules/core-js/internals/ie8-dom-define.js","webpack:///./node_modules/core-js/internals/document-create-element.js","webpack:///./node_modules/core-js/internals/to-property-key.js","webpack:///./node_modules/core-js/internals/is-symbol.js","webpack:///./node_modules/core-js/internals/object-is-prototype-of.js","webpack:///./node_modules/core-js/internals/a-callable.js","webpack:///./node_modules/core-js/internals/create-property-descriptor.js","webpack:///./node_modules/core-js/internals/redefine.js","webpack:///./node_modules/core-js/internals/inspect-source.js","webpack:///./node_modules/core-js/internals/shared-key.js","webpack:///./node_modules/core-js/internals/hidden-keys.js","webpack:///./node_modules/core-js/internals/length-of-array-like.js","webpack:///./node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack:///./app/javascript/images/apple-touch-icon-114x114-precomposed.png","webpack:///./app/javascript/images/apple-touch-icon-144x144-precomposed.png","webpack:///./app/javascript/images/apple-touch-icon-72x72-precomposed.png","webpack:///./app/javascript/images/apple-touch-icon-precomposed.png","webpack:///./app/javascript/images/favicon.png","webpack:///./node_modules/popper.js/dist/esm/popper.js","webpack:///./app/javascript/src/test-api.js","webpack:///./node_modules/clipboard/dist/clipboard.js","webpack:///./node_modules/@rails/ujs/app/assets/javascripts/rails-ujs.esm.js","webpack:///./app/javascript/packs/application.js","webpack:///./node_modules/core-js/modules/es.typed-array.set.js","webpack:///./node_modules/core-js/internals/array-buffer-view-core.js","webpack:///./node_modules/core-js/internals/array-buffer-native.js","webpack:///./node_modules/core-js/internals/classof.js","webpack:///./node_modules/core-js/internals/to-string-tag-support.js","webpack:///./node_modules/core-js/internals/is-pure.js","webpack:///./node_modules/core-js/internals/engine-v8-version.js","webpack:///./node_modules/core-js/internals/v8-prototype-define-bug.js","webpack:///./node_modules/core-js/internals/to-primitive.js","webpack:///./node_modules/core-js/internals/get-method.js","webpack:///./node_modules/core-js/internals/ordinary-to-primitive.js","webpack:///./node_modules/core-js/internals/internal-state.js","webpack:///./node_modules/core-js/internals/native-weak-map.js","webpack:///./node_modules/core-js/internals/function-name.js","webpack:///./node_modules/core-js/internals/object-get-prototype-of.js","webpack:///./node_modules/core-js/internals/correct-prototype-getter.js","webpack:///./node_modules/core-js/internals/object-set-prototype-of.js","webpack:///./node_modules/core-js/internals/a-possible-prototype.js","webpack:///./node_modules/core-js/internals/to-length.js","webpack:///./node_modules/core-js/internals/to-offset.js","webpack:///./node_modules/core-js/internals/to-positive-integer.js","webpack:///./node_modules/core-js/modules/web.immediate.js","webpack:///./node_modules/core-js/internals/export.js","webpack:///./node_modules/core-js/internals/object-property-is-enumerable.js","webpack:///./node_modules/core-js/internals/indexed-object.js","webpack:///./node_modules/core-js/internals/copy-constructor-properties.js","webpack:///./node_modules/core-js/internals/own-keys.js","webpack:///./node_modules/core-js/internals/object-get-own-property-names.js","webpack:///./node_modules/core-js/internals/object-keys-internal.js","webpack:///./node_modules/core-js/internals/array-includes.js","webpack:///./node_modules/core-js/internals/to-absolute-index.js","webpack:///./node_modules/core-js/internals/enum-bug-keys.js","webpack:///./node_modules/core-js/internals/object-get-own-property-symbols.js","webpack:///./node_modules/core-js/internals/is-forced.js","webpack:///./node_modules/core-js/internals/task.js","webpack:///./node_modules/core-js/internals/function-apply.js","webpack:///./node_modules/core-js/internals/function-bind-context.js","webpack:///./node_modules/core-js/internals/html.js","webpack:///./node_modules/core-js/internals/array-slice.js","webpack:///./node_modules/core-js/internals/validate-arguments-length.js","webpack:///./node_modules/core-js/internals/engine-is-ios.js","webpack:///./node_modules/core-js/internals/engine-is-node.js","webpack:///./app/javascript/images sync ^\\.\\/.*$","webpack:///./app/javascript/images/favicon.ico","webpack:///./node_modules/regenerator-runtime/runtime.js","webpack:///./node_modules/bootstrap/dist/js/bootstrap.js","webpack:///./node_modules/jquery/dist/jquery.js-exposed","webpack:///./node_modules/jquery/dist/jquery.js","webpack:///./app/javascript/src/setup.js","webpack:///./app/javascript/src/bootstrap-setup.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","it","Math","check","globalThis","window","self","global","this","Function","argument","NATIVE_BIND","FunctionPrototype","uncurryThis","fn","apply","arguments","exec","error","toObject","hasOwn","fails","isCallable","g","e","test","shared","uid","NATIVE_SYMBOL","USE_SYMBOL_AS_UID","WellKnownSymbolsStore","symbolFor","createWellKnownSymbol","withoutSetter","description","aFunction","undefined","namespace","method","length","DESCRIPTORS","definePropertyModule","createPropertyDescriptor","f","requireObjectCoercible","setGlobal","SHARED","store","configurable","writable","id","postfix","random","toString","stringSlice","slice","IE8_DOM_DEFINE","V8_PROTOTYPE_DEFINE_BUG","anObject","toPropertyKey","TypeError","$defineProperty","$getOwnPropertyDescriptor","getOwnPropertyDescriptor","ENUMERABLE","CONFIGURABLE","WRITABLE","O","P","Attributes","current","isObject","String","ceil","floor","number","IndexedObject","IS_PURE","push","version","copyright","license","source","V8_VERSION","getOwnPropertySymbols","symbol","sham","getBuiltIn","iterator","createElement","a","document","EXISTS","toPrimitive","isSymbol","isPrototypeOf","$Symbol","tryToString","bitmap","createNonEnumerableProperty","inspectSource","InternalStateModule","CONFIGURABLE_FUNCTION_NAME","getInternalState","enforceInternalState","enforce","TEMPLATE","split","options","state","unsafe","simple","noTargetGet","replace","join","functionToString","keys","toLength","obj","propertyIsEnumerableModule","toIndexedObject","isBrowser","navigator","timeoutDuration","longerTimeoutBrowsers","userAgent","indexOf","debounce","Promise","called","resolve","then","scheduled","setTimeout","isFunction","functionToCheck","getStyleComputedProperty","element","nodeType","css","ownerDocument","defaultView","getComputedStyle","getParentNode","nodeName","parentNode","host","getScrollParent","body","_getStyleComputedProp","overflow","overflowX","overflowY","getReferenceNode","reference","referenceNode","isIE11","MSInputMethodContext","documentMode","isIE10","isIE","getOffsetParent","documentElement","noOffsetParent","offsetParent","nextElementSibling","getRoot","node","findCommonOffsetParent","element1","element2","order","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","start","end","range","createRange","setStart","setEnd","commonAncestorContainer","contains","firstElementChild","element1root","getScroll","side","upperSide","html","scrollingElement","includeScroll","rect","subtract","scrollTop","scrollLeft","modifier","top","bottom","left","right","getBordersSize","styles","axis","sideA","sideB","parseFloat","getSize","computedStyle","max","parseInt","getWindowSizes","height","width","classCallCheck","instance","Constructor","createClass","defineProperties","target","props","descriptor","protoProps","staticProps","_extends","assign","getClientRect","offsets","getBoundingClientRect","result","sizes","clientWidth","clientHeight","horizScrollbar","offsetWidth","vertScrollbar","offsetHeight","getOffsetRectRelativeToArbitraryNode","children","parent","fixedPosition","isHTML","childrenRect","parentRect","scrollParent","borderTopWidth","borderLeftWidth","marginTop","marginLeft","getViewportOffsetRectRelativeToArtbitraryNode","excludeScroll","relativeOffset","innerWidth","innerHeight","offset","isFixed","getFixedPositionOffsetParent","parentElement","el","getBoundaries","popper","padding","boundariesElement","boundaries","boundariesNode","_getWindowSizes","isPaddingNumber","getArea","_ref","computeAutoPlacement","placement","refRect","rects","sortedAreas","map","area","sort","b","filteredAreas","filter","_ref2","computedPlacement","variation","getReferenceOffsets","commonOffsetParent","getOuterSizes","x","marginBottom","y","marginRight","getOppositePlacement","hash","matched","getPopperOffsets","referenceOffsets","popperRect","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","find","arr","Array","runModifiers","modifiers","data","ends","prop","findIndex","cur","match","forEach","console","warn","enabled","update","isDestroyed","arrowStyles","attributes","flipped","positionFixed","flip","originalPlacement","position","isCreated","onUpdate","onCreate","isModifierEnabled","modifierName","some","getSupportedPropertyName","prefixes","upperProp","charAt","toUpperCase","prefix","toCheck","style","destroy","removeAttribute","willChange","disableEventListeners","removeOnDestroy","removeChild","getWindow","attachToScrollParents","event","callback","scrollParents","isBody","addEventListener","passive","setupEventListeners","updateBound","scrollElement","eventsEnabled","enableEventListeners","scheduleUpdate","cancelAnimationFrame","removeEventListener","isNumeric","isNaN","isFinite","setStyles","unit","isFirefox","isModifierRequired","requestingName","requestedName","requesting","isRequired","_requesting","requested","placements","validPlacements","clockwise","counter","index","concat","reverse","BEHAVIORS","parseOffset","basePlacement","useHeight","fragments","frag","trim","divider","search","splitRegex","ops","op","mergeWithPrevious","reduce","str","toValue","index2","shift","shiftvariation","_data$offsets","isVertical","shiftOffsets","preventOverflow","transformProp","popperStyles","transform","priority","primary","escapeWithReference","secondary","min","keepTogether","opSide","arrow","_data$offsets$arrow","arrowElement","querySelector","len","sideCapitalized","toLowerCase","altSide","arrowElementSize","center","popperMarginSide","popperBorderSide","sideValue","round","placementOpposite","flipOrder","behavior","step","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariationByRef","flipVariations","flippedVariationByContent","flipVariationsByContent","flippedVariation","getOppositeVariation","inner","subtractLength","hide","bound","computeStyle","legacyGpuAccelerationOption","gpuAcceleration","offsetParentRect","shouldRound","noRound","v","referenceWidth","popperWidth","isVariation","horizontalToInteger","verticalToInteger","getRoundedOffsets","devicePixelRatio","prefixedProperty","invertTop","invertLeft","applyStyle","setAttribute","onLoad","modifierOptions","Defaults","Popper","_this","requestAnimationFrame","jquery","Utils","PopperUtils","TestApi","elementId","$","click","change","reset","processing","api","val","api_key","api_user","domain","post","attr","done","success","fail","addClass","removeClass","factory","__webpack_modules__","__unused_webpack_module","__webpack_exports__","tiny_emitter","tiny_emitter_default","listen","listen_default","src_select","select_default","command","type","execCommand","err","actions_cut","selectedText","createFakeElement","isRTL","getAttribute","fakeElement","fontSize","border","margin","yPosition","pageYOffset","actions_copy","container","appendChild","remove","_typeof","constructor","actions_default","_options$action","action","text","Error","hasAttribute","clipboard_typeof","_defineProperties","_setPrototypeOf","setPrototypeOf","__proto__","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","Proxy","Date","_isNativeReflectConstruct","Super","_getPrototypeOf","NewTarget","_possibleConstructorReturn","ReferenceError","_assertThisInitialized","getPrototypeOf","getAttributeValue","suffix","attribute","Clipboard","_Emitter","subClass","superClass","_inherits","_super","trigger","_classCallCheck","resolveOptions","listenClick","defaultAction","defaultTarget","defaultText","_this2","listener","onClick","delegateTarget","currentTarget","emit","clearSelection","focus","activeElement","blur","getSelection","removeAllRanges","selector","actions","support","queryCommandSupported","clipboard","Element","matches","proto","matchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","webkitMatchesSelector","__unused_webpack_exports","closest","_delegate","useCapture","listenerFn","elements","querySelectorAll","HTMLElement","nodeList","string","is","delegate","listenNode","listenNodeList","listenSelector","isReadOnly","select","setSelectionRange","selection","selectNodeContents","addRange","E","on","ctx","once","off","_","evtArr","evts","liveEvents","TinyEmitter","__webpack_module_cache__","definition","linkClickSelector","buttonClickSelector","exclude","inputChangeSelector","formSubmitSelector","formInputClickSelector","formDisableSelector","formEnableSelector","linkDisableSelector","buttonDisableSelector","nonce","loadCSPNonce","metaTag","content","cspNonce","getData","setData","isContentEditable","isEditable","csrfToken","meta","csrfParam","CSRFProtection","xhr","token","setRequestHeader","refreshCSRFTokens","param","input","AcceptHeaders","xml","json","script","ajax","prepareOptions","createXHR","response","processResponse","responseText","getResponseHeader","status","statusText","complete","beforeSend","readyState","XMLHttpRequest","OPENED","send","url","location","href","dataType","accept","open","crossDomain","withCredentials","onreadystatechange","DONE","JSON","parse","head","parser","DOMParser","parseFromString","error1","isCrossDomain","originAnchor","urlAnchor","protocol","preventDefault","CustomEvent","params","evt","createEvent","initCustomEvent","bubbles","cancelable","detail","Event","defaultPrevented","fire","dispatchEvent","stopEverything","stopPropagation","stopImmediatePropagation","eventType","handler","toArray","serializeElement","additionalParam","inputs","disabled","option","selected","checked","encodeURIComponent","formElements","form","allowAction","rails","message","answer","confirm","handleDisabledElement","enableElement","isXhrRedirect","enableLinkElement","enableFormElement","enableFormElements","disableElement","disableLinkElement","disableFormElement","disableFormElements","replacement","innerHTML","originalText","formSubmitButtonClick","button","formNoValidate","preventInsignificantClick","insignificantMetaClick","metaKey","ctrlKey","Rails","fileInputSelector","handleConfirm","handleMethod","link","csrfToken$1","csrfParam$1","formContent","display","handleMethodWithRails","handleRemote","isRemote","enctype","FormData","append","_len","args","_key","_len2","_key2","_len3","_key3","handleRemoteWithRails","_rails_loaded","jQuery","ajaxPrefilter","originalOptions","require","ArrayBufferViewCore","lengthOfArrayLike","toOffset","RangeError","Int8Array","Int8ArrayPrototype","$set","set","aTypedArray","exportTypedArrayMethod","WORKS_WITH_OBJECTS_AND_GEERIC_ON_TYPED_ARRAYS","array","Uint8ClampedArray","TO_OBJECT_BUG","NATIVE_ARRAY_BUFFER_VIEWS","arrayLike","src","NAME","Prototype","NATIVE_ARRAY_BUFFER","classof","redefine","wellKnownSymbol","Uint8ClampedArrayPrototype","TypedArray","TypedArrayPrototype","ObjectPrototype","TO_STRING_TAG","TYPED_ARRAY_TAG","TYPED_ARRAY_CONSTRUCTOR","opera","TYPED_ARRAY_TAG_REQUIRED","TypedArrayConstructorsList","Uint8Array","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","BigIntArrayConstructorsList","BigInt64Array","BigUint64Array","isTypedArray","klass","aTypedArrayConstructor","C","KEY","forced","ARRAY","TypedArrayConstructor","error2","exportTypedArrayStaticMethod","isView","ArrayBuffer","DataView","TO_STRING_TAG_SUPPORT","classofRaw","CORRECT_ARGUMENTS","tag","tryGet","callee","process","Deno","versions","v8","getMethod","ordinaryToPrimitive","TO_PRIMITIVE","pref","exoticToPrim","aCallable","V","func","valueOf","has","NATIVE_WEAK_MAP","sharedKey","hiddenKeys","OBJECT_ALREADY_INITIALIZED","WeakMap","wmget","wmhas","wmset","metadata","facade","STATE","getterFor","TYPE","getDescriptor","PROPER","CORRECT_PROTOTYPE_GETTER","IE_PROTO","F","aPossiblePrototype","setter","CORRECT_SETTER","toIntegerOrInfinity","toPositiveInteger","BYTES","task","setImmediate","clearImmediate","clear","copyConstructorProperties","isForced","targetProperty","sourceProperty","TARGET","GLOBAL","STATIC","stat","$propertyIsEnumerable","propertyIsEnumerable","NASHORN_BUG","ownKeys","getOwnPropertyDescriptorModule","exceptions","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","internalObjectKeys","getOwnPropertyNames","names","toAbsoluteIndex","createMethod","IS_INCLUDES","$this","fromIndex","includes","integer","feature","detection","normalize","POLYFILL","NATIVE","defer","channel","port","arraySlice","validateArgumentsLength","IS_IOS","IS_NODE","Dispatch","MessageChannel","queue","ONREADYSTATECHANGE","run","runner","postMessage","nextTick","now","port2","port1","onmessage","importScripts","that","passed","required","webpackContext","req","webpackContextResolve","code","runtime","Op","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","define","wrap","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","context","Context","_invoke","GenStateSuspendedStart","arg","GenStateExecuting","GenStateCompleted","doneResult","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","record","tryCatch","GenStateSuspendedYield","makeInvokeMethod","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","NativeIteratorPrototype","values","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","invoke","reject","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","info","resultName","next","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","iterable","iteratorMethod","displayName","isGeneratorFunction","genFun","ctor","mark","awrap","async","iter","pop","skipTempReset","prev","stop","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","finish","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","_interopDefaultLegacy","$__default","Popper__default","_createClass","_inheritsLoose","TRANSITION_END","MAX_UID","MILLISECONDS_MULTIPLIER","toType","getSpecialTransitionEndEvent","bindType","delegateType","handleObj","transitionEndEmulator","duration","one","Util","triggerTransitionEnd","setTransitionEndSupport","emulateTransitionEnd","special","getUID","getElementById","getSelectorFromElement","hrefAttr","getTransitionDurationFromElement","transitionDuration","transitionDelay","floatTransitionDuration","floatTransitionDelay","reflow","supportsTransitionEnd","Boolean","isElement","typeCheckConfig","componentName","config","configTypes","expectedTypes","valueType","RegExp","findShadowRoot","attachShadow","getRootNode","root","ShadowRoot","jQueryDetection","minMajor","ltMajor","minMinor","minPatch","maxMajor","NAME$a","VERSION$a","DATA_KEY$a","EVENT_KEY$a","DATA_API_KEY$7","JQUERY_NO_CONFLICT$a","CLASS_NAME_ALERT","CLASS_NAME_FADE$5","CLASS_NAME_SHOW$7","EVENT_CLOSE","EVENT_CLOSED","EVENT_CLICK_DATA_API$6","SELECTOR_DISMISS","Alert","_element","_proto","close","rootElement","_getRootElement","_triggerCloseEvent","isDefaultPrevented","_removeElement","dispose","removeData","closeEvent","hasClass","_destroyElement","detach","_jQueryInterface","each","$element","_handleDismiss","alertInstance","noConflict","NAME$9","VERSION$9","DATA_KEY$9","EVENT_KEY$9","DATA_API_KEY$6","JQUERY_NO_CONFLICT$9","CLASS_NAME_ACTIVE$3","CLASS_NAME_BUTTON","CLASS_NAME_FOCUS","EVENT_CLICK_DATA_API$5","EVENT_FOCUS_BLUR_DATA_API","EVENT_LOAD_DATA_API$2","SELECTOR_DATA_TOGGLE_CARROT","SELECTOR_DATA_TOGGLES","SELECTOR_DATA_TOGGLE$4","SELECTOR_DATA_TOGGLES_BUTTONS","SELECTOR_INPUT","SELECTOR_ACTIVE$2","SELECTOR_BUTTON","Button","shouldAvoidTriggerChange","toggle","triggerChangeEvent","addAriaPressed","classList","toggleClass","avoidTriggerChange","initialButton","inputBtn","tagName","buttons","add","_i","_button","NAME$8","VERSION$8","DATA_KEY$8","EVENT_KEY$8","DATA_API_KEY$5","JQUERY_NO_CONFLICT$8","ARROW_LEFT_KEYCODE","ARROW_RIGHT_KEYCODE","TOUCHEVENT_COMPAT_WAIT","SWIPE_THRESHOLD","CLASS_NAME_CAROUSEL","CLASS_NAME_ACTIVE$2","CLASS_NAME_SLIDE","CLASS_NAME_RIGHT","CLASS_NAME_LEFT","CLASS_NAME_NEXT","CLASS_NAME_PREV","CLASS_NAME_POINTER_EVENT","DIRECTION_NEXT","DIRECTION_PREV","DIRECTION_LEFT","DIRECTION_RIGHT","EVENT_SLIDE","EVENT_SLID","EVENT_KEYDOWN","EVENT_MOUSEENTER","EVENT_MOUSELEAVE","EVENT_TOUCHSTART","EVENT_TOUCHMOVE","EVENT_TOUCHEND","EVENT_POINTERDOWN","EVENT_POINTERUP","EVENT_DRAG_START","EVENT_LOAD_DATA_API$1","EVENT_CLICK_DATA_API$4","SELECTOR_ACTIVE$1","SELECTOR_ACTIVE_ITEM","SELECTOR_ITEM","SELECTOR_ITEM_IMG","SELECTOR_NEXT_PREV","SELECTOR_INDICATORS","SELECTOR_DATA_SLIDE","SELECTOR_DATA_RIDE","Default$7","interval","keyboard","slide","pause","touch","DefaultType$7","PointerType","TOUCH","PEN","Carousel","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","touchStartX","touchDeltaX","_config","_getConfig","_indicatorsElement","_touchSupported","maxTouchPoints","_pointerEvent","PointerEvent","MSPointerEvent","_addEventListeners","_slide","nextWhenVisible","hidden","cycle","clearInterval","_updateInterval","setInterval","visibilityState","to","activeIndex","_getItemIndex","direction","_handleSwipe","absDeltax","abs","_keydown","_addTouchEventListeners","_this3","originalEvent","pointerType","clientX","touches","move","clearTimeout","which","_getItemByDirection","isNextDirection","isPrevDirection","lastItemIndex","itemIndex","_triggerSlideEvent","relatedTarget","eventDirectionName","targetIndex","slideEvent","from","_setActiveIndicatorElement","indicators","nextIndicator","elementInterval","defaultInterval","directionalClassName","orderClassName","_this4","activeElementIndex","nextElement","nextElementIndex","isCycling","slidEvent","ride","_dataApiClickHandler","slideIndex","carousels","$carousel","NAME$7","VERSION$7","DATA_KEY$7","EVENT_KEY$7","DATA_API_KEY$4","JQUERY_NO_CONFLICT$7","CLASS_NAME_SHOW$6","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_COLLAPSED","DIMENSION_WIDTH","DIMENSION_HEIGHT","EVENT_SHOW$4","EVENT_SHOWN$4","EVENT_HIDE$4","EVENT_HIDDEN$4","EVENT_CLICK_DATA_API$3","SELECTOR_ACTIVES","SELECTOR_DATA_TOGGLE$3","Default$6","DefaultType$6","Collapse","_isTransitioning","_triggerArray","toggleList","elem","filterElement","foundElem","_selector","_parent","_getParent","_addAriaAndCollapsedClass","show","actives","activesData","not","startEvent","dimension","_getDimension","setTransitioning","scrollSize","triggerArrayLength","isTransitioning","_getTargetFromElement","triggerArray","isOpen","$trigger","selectors","$target","NAME$6","VERSION$6","DATA_KEY$6","EVENT_KEY$6","DATA_API_KEY$3","JQUERY_NO_CONFLICT$6","ESCAPE_KEYCODE$1","SPACE_KEYCODE","TAB_KEYCODE","ARROW_UP_KEYCODE","ARROW_DOWN_KEYCODE","RIGHT_MOUSE_BUTTON_WHICH","REGEXP_KEYDOWN","CLASS_NAME_DISABLED$1","CLASS_NAME_SHOW$5","CLASS_NAME_DROPUP","CLASS_NAME_DROPRIGHT","CLASS_NAME_DROPLEFT","CLASS_NAME_MENURIGHT","CLASS_NAME_POSITION_STATIC","EVENT_HIDE$3","EVENT_HIDDEN$3","EVENT_SHOW$3","EVENT_SHOWN$3","EVENT_CLICK","EVENT_CLICK_DATA_API$2","EVENT_KEYDOWN_DATA_API","EVENT_KEYUP_DATA_API","SELECTOR_DATA_TOGGLE$2","SELECTOR_FORM_CHILD","SELECTOR_MENU","SELECTOR_NAVBAR_NAV","SELECTOR_VISIBLE_ITEMS","PLACEMENT_TOP","PLACEMENT_TOPEND","PLACEMENT_BOTTOM","PLACEMENT_BOTTOMEND","PLACEMENT_RIGHT","PLACEMENT_LEFT","Default$5","boundary","popperConfig","DefaultType$5","Dropdown","_popper","_menu","_getMenuElement","_inNavbar","_detectNavbar","isActive","_clearMenus","usePopper","showEvent","_getParentFromElement","referenceElement","_getPopperConfig","noop","hideEvent","Default","DefaultType","_getPlacement","$parentDropdown","_getOffset","toggles","clickEvent","dropdownMenu","_dataApiKeydownHandler","items","item","NAME$5","VERSION$5","DATA_KEY$5","EVENT_KEY$5","DATA_API_KEY$2","JQUERY_NO_CONFLICT$5","ESCAPE_KEYCODE","CLASS_NAME_SCROLLABLE","CLASS_NAME_SCROLLBAR_MEASURER","CLASS_NAME_BACKDROP","CLASS_NAME_OPEN","CLASS_NAME_FADE$4","CLASS_NAME_SHOW$4","CLASS_NAME_STATIC","EVENT_HIDE$2","EVENT_HIDE_PREVENTED","EVENT_HIDDEN$2","EVENT_SHOW$2","EVENT_SHOWN$2","EVENT_FOCUSIN","EVENT_RESIZE","EVENT_CLICK_DISMISS$1","EVENT_KEYDOWN_DISMISS","EVENT_MOUSEUP_DISMISS","EVENT_MOUSEDOWN_DISMISS","EVENT_CLICK_DATA_API$1","SELECTOR_DIALOG","SELECTOR_MODAL_BODY","SELECTOR_DATA_TOGGLE$1","SELECTOR_DATA_DISMISS$1","SELECTOR_FIXED_CONTENT","SELECTOR_STICKY_CONTENT","Default$4","backdrop","DefaultType$4","Modal","_dialog","_backdrop","_isShown","_isBodyOverflowing","_ignoreBackdropClick","_scrollbarWidth","_checkScrollbar","_setScrollbar","_adjustDialog","_setEscapeEvent","_setResizeEvent","_showBackdrop","_showElement","transition","_hideModal","htmlElement","handleUpdate","_triggerBackdropTransition","hideEventPrevented","isModalOverflowing","scrollHeight","modalTransitionDuration","modalBody","ELEMENT_NODE","_enforceFocus","shownEvent","transitionComplete","_this5","_this6","_this7","_this8","_resetAdjustments","_resetScrollbar","_removeBackdrop","_this9","animate","className","appendTo","backdropTransitionDuration","callbackRemove","_backdropTransitionDuration","paddingLeft","paddingRight","_getScrollbarWidth","_this10","fixedContent","stickyContent","actualPadding","calculatedPadding","actualMargin","calculatedMargin","scrollDiv","scrollbarWidth","_this11","uriAttrs","DefaultWhitelist","br","col","div","em","hr","h1","h2","h3","h4","h5","h6","img","li","ol","pre","small","span","sub","sup","strong","u","ul","SAFE_URL_PATTERN","DATA_URL_PATTERN","allowedAttribute","allowedAttributeList","attrName","nodeValue","regExp","attrRegex","sanitizeHtml","unsafeHtml","whiteList","sanitizeFn","createdDocument","whitelistKeys","_loop","elName","attributeList","whitelistedAttributes","NAME$4","VERSION$4","DATA_KEY$4","EVENT_KEY$4","JQUERY_NO_CONFLICT$4","CLASS_PREFIX$1","BSCLS_PREFIX_REGEX$1","DISALLOWED_ATTRIBUTES","CLASS_NAME_FADE$3","CLASS_NAME_SHOW$3","HOVER_STATE_SHOW","HOVER_STATE_OUT","SELECTOR_TOOLTIP_INNER","SELECTOR_ARROW","TRIGGER_HOVER","TRIGGER_FOCUS","TRIGGER_CLICK","TRIGGER_MANUAL","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","Default$3","animation","template","title","delay","fallbackPlacement","customClass","sanitize","DefaultType$3","Event$1","HIDE","HIDDEN","SHOW","SHOWN","INSERTED","CLICK","FOCUSIN","FOCUSOUT","MOUSEENTER","MOUSELEAVE","Tooltip","_isEnabled","_timeout","_hoverState","_activeTrigger","tip","_setListeners","enable","disable","toggleEnabled","dataKey","DATA_KEY","_getDelegateConfig","_isWithActiveTrigger","_enter","_leave","getTipElement","EVENT_KEY","_hideModalHandler","isWithContent","shadowRoot","isInTheDom","tipId","setContent","attachment","_getAttachment","addAttachmentClass","_getContainer","_fixTransition","prevHoverState","_cleanTipClass","getTitle","setElementContent","empty","_handlePopperPlacementChange","eventIn","eventOut","_fixTitle","titleType","dataAttributes","dataAttr","$tip","tabClass","popperData","initConfigAnimation","NAME$3","VERSION$3","DATA_KEY$3","EVENT_KEY$3","JQUERY_NO_CONFLICT$3","CLASS_PREFIX","BSCLS_PREFIX_REGEX","CLASS_NAME_FADE$2","CLASS_NAME_SHOW$2","SELECTOR_TITLE","SELECTOR_CONTENT","Default$2","DefaultType$2","Popover","_Tooltip","_getContent","NAME$2","VERSION$2","DATA_KEY$2","EVENT_KEY$2","DATA_API_KEY$1","JQUERY_NO_CONFLICT$2","CLASS_NAME_DROPDOWN_ITEM","CLASS_NAME_ACTIVE$1","EVENT_ACTIVATE","EVENT_SCROLL","EVENT_LOAD_DATA_API","METHOD_OFFSET","METHOD_POSITION","SELECTOR_DATA_SPY","SELECTOR_NAV_LIST_GROUP$1","SELECTOR_NAV_LINKS","SELECTOR_NAV_ITEMS","SELECTOR_LIST_ITEMS","SELECTOR_DROPDOWN$1","SELECTOR_DROPDOWN_ITEMS","SELECTOR_DROPDOWN_TOGGLE$1","Default$1","DefaultType$1","ScrollSpy","_scrollElement","_offsets","_targets","_activeTarget","_scrollHeight","_process","refresh","autoMethod","offsetMethod","offsetBase","_getScrollTop","_getScrollHeight","targetSelector","targetBCR","_getOffsetHeight","maxScroll","_activate","_clear","queries","$link","parents","scrollSpys","$spy","NAME$1","VERSION$1","DATA_KEY$1","EVENT_KEY$1","DATA_API_KEY","JQUERY_NO_CONFLICT$1","CLASS_NAME_DROPDOWN_MENU","CLASS_NAME_ACTIVE","CLASS_NAME_DISABLED","CLASS_NAME_FADE$1","CLASS_NAME_SHOW$1","EVENT_HIDE$1","EVENT_HIDDEN$1","EVENT_SHOW$1","EVENT_SHOWN$1","EVENT_CLICK_DATA_API","SELECTOR_DROPDOWN","SELECTOR_NAV_LIST_GROUP","SELECTOR_ACTIVE","SELECTOR_ACTIVE_UL","SELECTOR_DATA_TOGGLE","SELECTOR_DROPDOWN_TOGGLE","SELECTOR_DROPDOWN_ACTIVE_CHILD","Tab","previous","listElement","itemSelector","makeArray","hiddenEvent","active","_transitionComplete","dropdownChild","dropdownElement","dropdownToggleList","VERSION","JQUERY_NO_CONFLICT","CLASS_NAME_FADE","CLASS_NAME_HIDE","CLASS_NAME_SHOW","CLASS_NAME_SHOWING","EVENT_CLICK_DISMISS","EVENT_HIDE","EVENT_HIDDEN","EVENT_SHOW","EVENT_SHOWN","SELECTOR_DATA_DISMISS","autohide","Toast","_clearTimeout","_close","Scrollspy","w","noGlobal","flat","class2type","fnToString","ObjectFunctionString","isWindow","preservedScriptAttributes","noModule","DOMEval","doc","rhtmlSuffix","init","isArrayLike","num","pushStack","elems","ret","merge","prevObject","first","eq","last","even","grep","_elem","odd","j","splice","extend","copy","copyIsArray","clone","deep","isPlainObject","isArray","expando","isReady","msg","Ctor","isEmptyObject","globalEval","textContent","results","inArray","isXMLDoc","namespaceURI","docElem","second","invert","callbackExpect","guid","whitespace","rtrimCSS","bup","rcssescape","fcssescape","ch","asCodePoint","charCodeAt","escapeSelector","sel","preferredDoc","pushNative","Expr","outermostContext","sortInput","hasDuplicate","documentIsHTML","rbuggyQSA","dirruns","classCache","createCache","tokenCache","compilerCache","nonnativeSelectorCache","sortOrder","booleans","identifier","pseudos","rwhitespace","rcomma","rleadingCombinator","rdescend","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rinputs","rheader","rquickExpr","rsibling","runescape","funescape","escape","nonHex","high","fromCharCode","unloadHandler","setDocument","inDisabledFieldset","addCombinator","dir","childNodes","els","seed","nid","groups","newSelector","newContext","getElementsByTagName","getElementsByClassName","testContext","scope","tokenize","toSelector","qsaError","cache","cacheLength","markFunction","assert","createInputPseudo","createButtonPseudo","createDisabledPseudo","isDisabled","createPositionalPseudo","matchIndexes","subWindow","getById","getElementsByName","disconnectedMatch","cssHas","attrId","getAttributeNode","compare","sortDetached","expr","attrHandle","uniqueSort","duplicates","sortStable","createPseudo","relative","preFilter","excess","unquoted","nodeNameSelector","expectedNodeName","pattern","operator","what","_argument","forward","ofType","_context","outerCache","nodeIndex","useCache","diff","firstChild","lastChild","pseudo","setFilters","idx","matcher","compile","unmatched","lang","elemLang","safeActiveElement","hasFocus","tabIndex","selectedIndex","nextSibling","header","_matchIndexes","lt","gt","nth","radio","checkbox","file","password","image","submit","parseOnly","tokens","soFar","preFilters","cached","combinator","base","skip","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","matcherOut","preMap","postMap","preexisting","contexts","multipleContexts","matcherIn","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","setMatchers","elementMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","matcherFromGroupMatchers","compiled","filters","unique","getText","isXML","until","truncate","siblings","rneedsContext","rsingleTag","winnow","qualifier","rootjQuery","parseHTML","ready","rparentsprev","guaranteedUnique","contents","sibling","targets","prevAll","addBack","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","rnothtmlwhite","Identity","Thrower","ex","adoptValue","noValue","promise","Callbacks","flag","createOptions","firing","memory","fired","locked","list","firingIndex","stopOnFalse","lock","fireWith","Deferred","tuples","always","deferred","pipe","fns","newDefer","tuple","returned","progress","notify","onFulfilled","onRejected","onProgress","maxDepth","depth","mightThrow","notifyWith","resolveWith","exceptionHook","rejectWith","getErrorHook","getStackHook","stateString","when","singleValue","remaining","resolveContexts","resolveValues","updateFunc","rerrorNames","asyncError","stack","readyException","readyList","completed","catch","readyWait","wait","doScroll","access","chainable","emptyGet","raw","bulk","rmsPrefix","rdashAlpha","fcamelCase","_all","letter","camelCase","acceptData","owner","Data","hasData","dataPriv","dataUser","rbrace","rmultiDash","_data","_removeData","attrs","dequeue","startLength","hooks","_queueHooks","unshift","clearQueue","tmp","count","pnum","rcssNum","cssExpand","isAttached","composed","isHiddenWithinTree","adjustCSS","valueParts","tween","adjusted","scale","maxIterations","currentValue","initial","cssNumber","initialInUnit","defaultDisplayMap","getDefaultDisplay","showHide","rcheckableType","rtagName","rscriptType","createDocumentFragment","checkClone","cloneNode","noCloneChecked","defaultValue","wrapMap","thead","tr","td","_default","getAll","setGlobalEval","refElements","tbody","tfoot","colgroup","caption","th","optgroup","rhtml","buildFragment","scripts","ignored","attached","fragment","nodes","htmlPrefilter","createTextNode","rtypenamespace","returnTrue","returnFalse","types","origFn","leverageNative","isSetup","saved","isTrigger","isImmediatePropagationStopped","handleObjIn","eventHandle","events","handlers","namespaces","origType","elemData","triggered","dispatch","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","nativeEvent","handlerQueue","fix","preDispatch","isPropagationStopped","rnamespace","postDispatch","matchedHandlers","matchedSelectors","addProp","hook","load","noBubble","beforeunload","returnValue","timeStamp","isSimulated","altKey","changedTouches","eventPhase","pageX","pageY","shiftKey","view","charCode","keyCode","clientY","offsetX","offsetY","pointerId","screenX","screenY","targetTouches","toElement","focusMappedHandler","simulate","attaches","dataHolder","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","dest","udataOld","udataCur","fixInput","domManip","collection","hasScripts","iNoClone","valueIsFunction","_evalUrl","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","prepend","insertBefore","before","after","replaceWith","replaceChild","prependTo","insertAfter","replaceAll","original","insert","rnumnonpx","rcustomProp","getStyles","opener","swap","old","rboxStyle","curCSS","computed","minWidth","maxWidth","isCustomProp","getPropertyValue","pixelBoxStyles","addGetHookIf","conditionFn","hookFn","computeStyleTests","cssText","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","pixelBoxStylesVal","boxSizingReliableVal","scrollboxSizeVal","measure","reliableTrDimensionsVal","backgroundClip","clearCloneStyle","boxSizingReliable","pixelPosition","reliableMarginLeft","scrollboxSize","reliableTrDimensions","table","trChild","trStyle","borderBottomWidth","cssPrefixes","emptyStyle","vendorProps","finalPropName","final","cssProps","capName","vendorPropName","rdisplayswap","cssShow","visibility","cssNormalTransform","letterSpacing","fontWeight","setPositiveNumber","boxModelAdjustment","box","isBorderBox","computedVal","extra","delta","marginDelta","getWidthOrHeight","valueIsBorderBox","offsetProp","getClientRects","Tween","easing","cssHooks","opacity","animationIterationCount","aspectRatio","borderImageSlice","columnCount","flexGrow","flexShrink","gridArea","gridColumn","gridColumnEnd","gridColumnStart","gridRow","gridRowEnd","gridRowStart","lineHeight","orphans","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeMiterlimit","strokeOpacity","origName","setProperty","scrollboxSizeBuggy","expand","expanded","parts","propHooks","percent","eased","pos","fx","linear","swing","cos","PI","fxNow","inProgress","rfxtypes","rrun","schedule","tick","createFxNow","genFx","includeWidth","createTween","Animation","tweeners","properties","stopped","prefilters","currentTime","startTime","tweens","opts","specialEasing","originalProperties","gotoEnd","propFilter","timer","anim","tweener","oldfire","propTween","restoreDisplay","isBox","dataShow","unqueued","prefilter","speed","opt","speeds","fadeTo","optall","doAnimation","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","slow","fast","time","timeout","checkOn","optSelected","radioValue","boolHook","removeAttr","nType","attrHooks","attrNames","lowercaseName","rfocusable","rclickable","stripAndCollapse","getClass","classesToArray","removeProp","propFix","tabindex","classNames","curValue","finalValue","stateVal","isValidValue","rreturn","valHooks","optionSet","rquery","parseXML","parserErrorElem","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","parentWindow","triggerHandler","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","valueOrFunction","serialize","serializeArray","r20","rhash","rantiCache","rheaders","rnoContent","rprotocol","transports","allTypes","addToPrefiltersOrTransports","structure","dataTypeExpression","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","lastModified","etag","isLocal","processData","contentType","accepts","responseFields","converters","ajaxSetup","settings","ajaxTransport","transport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","fireGlobals","uncached","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getAllResponseHeaders","overrideMimeType","mimeType","abort","finalText","hasContent","ifModified","headers","nativeStatusText","responses","isSuccess","modified","ct","finalDataType","firstDataType","ajaxHandleResponses","conv2","conv","dataFilter","throws","ajaxConvert","getJSON","getScript","wrapAll","wrapInner","htmlIsFunction","unwrap","visible","xhrSuccessStatus","xhrSupported","cors","errorCallback","username","xhrFields","onload","onerror","onabort","ontimeout","responseType","binary","scriptAttrs","charset","scriptCharset","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","createHTMLDocument","implementation","keepScripts","parsed","animated","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","curElem","using","win","pageXOffset","parentOffset","scrollTo","Height","Width","defaultExtra","funcName","unbind","undelegate","hover","fnOver","fnOut","rtrim","proxy","holdReady","hold","parseJSON","_jQuery","_$","combobox","clearIfNoMatch","bsVersion","iconCaret","freeform","$address","ClipboardJS","popover","tooltip"],"mappings":"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","file":"js/application-91a177a59d4671fc2c7b.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/packs/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 51);\n","var check = function (it) {\n  return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n  // eslint-disable-next-line es/no-global-this -- safe\n  check(typeof globalThis == 'object' && globalThis) ||\n  check(typeof window == 'object' && window) ||\n  // eslint-disable-next-line no-restricted-globals -- safe\n  check(typeof self == 'object' && self) ||\n  check(typeof global == 'object' && global) ||\n  // eslint-disable-next-line no-new-func -- fallback\n  (function () { return this; })() || Function('return this')();\n","// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\nmodule.exports = function (argument) {\n  return typeof argument == 'function';\n};\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar bind = FunctionPrototype.bind;\nvar call = FunctionPrototype.call;\nvar uncurryThis = NATIVE_BIND && bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? function (fn) {\n  return fn && uncurryThis(fn);\n} : function (fn) {\n  return fn && function () {\n    return call.apply(fn, arguments);\n  };\n};\n","module.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (error) {\n    return true;\n  }\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n  return hasOwnProperty(toObject(it), key);\n};\n","var fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n  // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n  return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","var isCallable = require('../internals/is-callable');\n\nmodule.exports = function (it) {\n  return typeof it == 'object' ? it !== null : isCallable(it);\n};\n","module.exports = global[\"$\"] = require(\"-!/tmp/build/node_modules/expose-loader/index.js?jQuery!./jquery.js\");","var g; // This works in non-strict mode\n\ng = function () {\n  return this;\n}();\n\ntry {\n  // This works if eval is allowed (see CSP)\n  g = g || new Function(\"return this\")();\n} catch (e) {\n  // This works if the window reference is available\n  if (typeof window === \"object\") g = window;\n} // g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\n\nmodule.exports = g;","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar call = Function.prototype.call;\n\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n  return call.apply(call, arguments);\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n  var test = (function () { /* empty */ }).bind();\n  // eslint-disable-next-line no-prototype-builtins -- safe\n  return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar symbolFor = Symbol && Symbol['for'];\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n  if (!hasOwn(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) {\n    var description = 'Symbol.' + name;\n    if (NATIVE_SYMBOL && hasOwn(Symbol, name)) {\n      WellKnownSymbolsStore[name] = Symbol[name];\n    } else if (USE_SYMBOL_AS_UID && symbolFor) {\n      WellKnownSymbolsStore[name] = symbolFor(description);\n    } else {\n      WellKnownSymbolsStore[name] = createWellKnownSymbol(description);\n    }\n  } return WellKnownSymbolsStore[name];\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (argument) {\n  return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n  return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n  return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n  object[key] = value;\n  return object;\n};\n","var global = require('../internals/global');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar Object = global.Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n  return Object(requireObjectCoercible(argument));\n};\n","var global = require('../internals/global');\nvar setGlobal = require('../internals/set-global');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n","var global = require('../internals/global');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n  try {\n    defineProperty(global, key, { value: value, configurable: true, writable: true });\n  } catch (error) {\n    global[key] = value;\n  } return value;\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n  return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n  return stringSlice(toString(it), 8, -1);\n};\n","var global = require('../internals/global');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar TypeError = global.TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPropertyKey(P);\n  anObject(Attributes);\n  if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n    var current = $getOwnPropertyDescriptor(O, P);\n    if (current && current[WRITABLE]) {\n      O[P] = Attributes.value;\n      Attributes = {\n        configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n        enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n        writable: false\n      };\n    }\n  } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPropertyKey(P);\n  anObject(Attributes);\n  if (IE8_DOM_DEFINE) try {\n    return $defineProperty(O, P, Attributes);\n  } catch (error) { /* empty */ }\n  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n  if ('value' in Attributes) O[P] = Attributes.value;\n  return O;\n};\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar String = global.String;\nvar TypeError = global.TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n  if (isObject(argument)) return argument;\n  throw TypeError(String(argument) + ' is not an object');\n};\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n  var number = +argument;\n  // eslint-disable-next-line no-self-compare -- safe\n  return number !== number || number === 0 ? 0 : (number > 0 ? floor : ceil)(number);\n};\n","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n  return IndexedObject(requireObjectCoercible(it));\n};\n","var global = require('../internals/global');\n\nvar TypeError = global.TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n  if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n  return it;\n};\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n  return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n  version: '3.21.1',\n  mode: IS_PURE ? 'pure' : 'global',\n  copyright: '© 2014-2022 Denis Pushkarev (zloirock.ru)',\n  license: 'https://github.com/zloirock/core-js/blob/v3.21.1/LICENSE',\n  source: 'https://github.com/zloirock/core-js'\n});\n","/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n  var symbol = Symbol();\n  // Chrome 38 Symbol has incorrect toString conversion\n  // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n  return !String(symbol) || !(Object(symbol) instanceof Symbol) ||\n    // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n    !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n","/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\n\nmodule.exports = NATIVE_SYMBOL\n  && !Symbol.sham\n  && typeof Symbol.iterator == 'symbol';\n","var global = require('../internals/global');\n\nvar String = global.String;\n\nmodule.exports = function (argument) {\n  try {\n    return String(argument);\n  } catch (error) {\n    return 'Object';\n  }\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n  // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n  return Object.defineProperty(createElement('div'), 'a', {\n    get: function () { return 7; }\n  }).a != 7;\n});\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n  return EXISTS ? document.createElement(it) : {};\n};\n","var toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n  var key = toPrimitive(argument, 'string');\n  return isSymbol(key) ? key : key + '';\n};\n","var global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar Object = global.Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n  return typeof it == 'symbol';\n} : function (it) {\n  var $Symbol = getBuiltIn('Symbol');\n  return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, Object(it));\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar TypeError = global.TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n  if (isCallable(argument)) return argument;\n  throw TypeError(tryToString(argument) + ' is not a function');\n};\n","module.exports = function (bitmap, value) {\n  return {\n    enumerable: !(bitmap & 1),\n    configurable: !(bitmap & 2),\n    writable: !(bitmap & 4),\n    value: value\n  };\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar setGlobal = require('../internals/set-global');\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\nvar CONFIGURABLE_FUNCTION_NAME = require('../internals/function-name').CONFIGURABLE;\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(String).split('String');\n\n(module.exports = function (O, key, value, options) {\n  var unsafe = options ? !!options.unsafe : false;\n  var simple = options ? !!options.enumerable : false;\n  var noTargetGet = options ? !!options.noTargetGet : false;\n  var name = options && options.name !== undefined ? options.name : key;\n  var state;\n  if (isCallable(value)) {\n    if (String(name).slice(0, 7) === 'Symbol(') {\n      name = '[' + String(name).replace(/^Symbol\\(([^)]*)\\)/, '$1') + ']';\n    }\n    if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n      createNonEnumerableProperty(value, 'name', name);\n    }\n    state = enforceInternalState(value);\n    if (!state.source) {\n      state.source = TEMPLATE.join(typeof name == 'string' ? name : '');\n    }\n  }\n  if (O === global) {\n    if (simple) O[key] = value;\n    else setGlobal(key, value);\n    return;\n  } else if (!unsafe) {\n    delete O[key];\n  } else if (!noTargetGet && O[key]) {\n    simple = true;\n  }\n  if (simple) O[key] = value;\n  else createNonEnumerableProperty(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n  return isCallable(this) && getInternalState(this).source || inspectSource(this);\n});\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n  store.inspectSource = function (it) {\n    return functionToString(it);\n  };\n}\n\nmodule.exports = store.inspectSource;\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n  return keys[key] || (keys[key] = uid(key));\n};\n","module.exports = {};\n","var toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n  return toLength(obj.length);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n  O = toIndexedObject(O);\n  P = toPropertyKey(P);\n  if (IE8_DOM_DEFINE) try {\n    return $getOwnPropertyDescriptor(O, P);\n  } catch (error) { /* empty */ }\n  if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n","module.exports = __webpack_public_path__ + \"media/images/apple-touch-icon-114x114-precomposed-d0f45bb808dfc894df23affe5fb86a7d.png\";","module.exports = __webpack_public_path__ + \"media/images/apple-touch-icon-144x144-precomposed-9e8ffca88f01e21b61157c0de29ad092.png\";","module.exports = __webpack_public_path__ + \"media/images/apple-touch-icon-72x72-precomposed-0ed992e2a02492c623a9170c1b2e0627.png\";","module.exports = __webpack_public_path__ + \"media/images/apple-touch-icon-precomposed-6d687d01a0cf43d2e962b65a609d8e8d.png\";","module.exports = __webpack_public_path__ + \"media/images/favicon-7126ba5dc4d68a8c7630602a77c22702.png\";","/**!\n * @fileOverview Kickass library to create and place poppers near their reference elements.\n * @version 1.16.1\n * @license\n * Copyright (c) 2016 Federico Zivolo and contributors\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && typeof navigator !== 'undefined';\n\nvar timeoutDuration = function () {\n  var longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\n\n  for (var i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n    if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n      return 1;\n    }\n  }\n\n  return 0;\n}();\n\nfunction microtaskDebounce(fn) {\n  var called = false;\n  return function () {\n    if (called) {\n      return;\n    }\n\n    called = true;\n    window.Promise.resolve().then(function () {\n      called = false;\n      fn();\n    });\n  };\n}\n\nfunction taskDebounce(fn) {\n  var scheduled = false;\n  return function () {\n    if (!scheduled) {\n      scheduled = true;\n      setTimeout(function () {\n        scheduled = false;\n        fn();\n      }, timeoutDuration);\n    }\n  };\n}\n\nvar supportsMicroTasks = isBrowser && window.Promise;\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\n\nvar debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce;\n/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\n\nfunction isFunction(functionToCheck) {\n  var getType = {};\n  return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';\n}\n/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\n\n\nfunction getStyleComputedProperty(element, property) {\n  if (element.nodeType !== 1) {\n    return [];\n  } // NOTE: 1 DOM access here\n\n\n  var window = element.ownerDocument.defaultView;\n  var css = window.getComputedStyle(element, null);\n  return property ? css[property] : css;\n}\n/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\n\n\nfunction getParentNode(element) {\n  if (element.nodeName === 'HTML') {\n    return element;\n  }\n\n  return element.parentNode || element.host;\n}\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\n\n\nfunction getScrollParent(element) {\n  // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n  if (!element) {\n    return document.body;\n  }\n\n  switch (element.nodeName) {\n    case 'HTML':\n    case 'BODY':\n      return element.ownerDocument.body;\n\n    case '#document':\n      return element.body;\n  } // Firefox want us to check `-x` and `-y` variations as well\n\n\n  var _getStyleComputedProp = getStyleComputedProperty(element),\n      overflow = _getStyleComputedProp.overflow,\n      overflowX = _getStyleComputedProp.overflowX,\n      overflowY = _getStyleComputedProp.overflowY;\n\n  if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {\n    return element;\n  }\n\n  return getScrollParent(getParentNode(element));\n}\n/**\n * Returns the reference node of the reference object, or the reference object itself.\n * @method\n * @memberof Popper.Utils\n * @param {Element|Object} reference - the reference element (the popper will be relative to this)\n * @returns {Element} parent\n */\n\n\nfunction getReferenceNode(reference) {\n  return reference && reference.referenceNode ? reference.referenceNode : reference;\n}\n\nvar isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);\nvar isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);\n/**\n * Determines if the browser is Internet Explorer\n * @method\n * @memberof Popper.Utils\n * @param {Number} version to check\n * @returns {Boolean} isIE\n */\n\nfunction isIE(version) {\n  if (version === 11) {\n    return isIE11;\n  }\n\n  if (version === 10) {\n    return isIE10;\n  }\n\n  return isIE11 || isIE10;\n}\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\n\n\nfunction getOffsetParent(element) {\n  if (!element) {\n    return document.documentElement;\n  }\n\n  var noOffsetParent = isIE(10) ? document.body : null; // NOTE: 1 DOM access here\n\n  var offsetParent = element.offsetParent || null; // Skip hidden elements which don't have an offsetParent\n\n  while (offsetParent === noOffsetParent && element.nextElementSibling) {\n    offsetParent = (element = element.nextElementSibling).offsetParent;\n  }\n\n  var nodeName = offsetParent && offsetParent.nodeName;\n\n  if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n    return element ? element.ownerDocument.documentElement : document.documentElement;\n  } // .offsetParent will return the closest TH, TD or TABLE in case\n  // no offsetParent is present, I hate this job...\n\n\n  if (['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, 'position') === 'static') {\n    return getOffsetParent(offsetParent);\n  }\n\n  return offsetParent;\n}\n\nfunction isOffsetContainer(element) {\n  var nodeName = element.nodeName;\n\n  if (nodeName === 'BODY') {\n    return false;\n  }\n\n  return nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element;\n}\n/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\n\n\nfunction getRoot(node) {\n  if (node.parentNode !== null) {\n    return getRoot(node.parentNode);\n  }\n\n  return node;\n}\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\n\n\nfunction findCommonOffsetParent(element1, element2) {\n  // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n  if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n    return document.documentElement;\n  } // Here we make sure to give as \"start\" the element that comes first in the DOM\n\n\n  var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING;\n  var start = order ? element1 : element2;\n  var end = order ? element2 : element1; // Get common ancestor container\n\n  var range = document.createRange();\n  range.setStart(start, 0);\n  range.setEnd(end, 0);\n  var commonAncestorContainer = range.commonAncestorContainer; // Both nodes are inside #document\n\n  if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) {\n    if (isOffsetContainer(commonAncestorContainer)) {\n      return commonAncestorContainer;\n    }\n\n    return getOffsetParent(commonAncestorContainer);\n  } // one of the nodes is inside shadowDOM, find which one\n\n\n  var element1root = getRoot(element1);\n\n  if (element1root.host) {\n    return findCommonOffsetParent(element1root.host, element2);\n  } else {\n    return findCommonOffsetParent(element1, getRoot(element2).host);\n  }\n}\n/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\n\n\nfunction getScroll(element) {\n  var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top';\n  var upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n  var nodeName = element.nodeName;\n\n  if (nodeName === 'BODY' || nodeName === 'HTML') {\n    var html = element.ownerDocument.documentElement;\n    var scrollingElement = element.ownerDocument.scrollingElement || html;\n    return scrollingElement[upperSide];\n  }\n\n  return element[upperSide];\n}\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\n\n\nfunction includeScroll(rect, element) {\n  var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n  var scrollTop = getScroll(element, 'top');\n  var scrollLeft = getScroll(element, 'left');\n  var modifier = subtract ? -1 : 1;\n  rect.top += scrollTop * modifier;\n  rect.bottom += scrollTop * modifier;\n  rect.left += scrollLeft * modifier;\n  rect.right += scrollLeft * modifier;\n  return rect;\n}\n/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\n\nfunction getBordersSize(styles, axis) {\n  var sideA = axis === 'x' ? 'Left' : 'Top';\n  var sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n  return parseFloat(styles['border' + sideA + 'Width']) + parseFloat(styles['border' + sideB + 'Width']);\n}\n\nfunction getSize(axis, body, html, computedStyle) {\n  return Math.max(body['offset' + axis], body['scroll' + axis], html['client' + axis], html['offset' + axis], html['scroll' + axis], isIE(10) ? parseInt(html['offset' + axis]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Top' : 'Left')]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Bottom' : 'Right')]) : 0);\n}\n\nfunction getWindowSizes(document) {\n  var body = document.body;\n  var html = document.documentElement;\n  var computedStyle = isIE(10) && getComputedStyle(html);\n  return {\n    height: getSize('Height', body, html, computedStyle),\n    width: getSize('Width', body, html, computedStyle)\n  };\n}\n\nvar classCallCheck = function (instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n};\n\nvar createClass = function () {\n  function defineProperties(target, props) {\n    for (var i = 0; i < props.length; i++) {\n      var descriptor = props[i];\n      descriptor.enumerable = descriptor.enumerable || false;\n      descriptor.configurable = true;\n      if (\"value\" in descriptor) descriptor.writable = true;\n      Object.defineProperty(target, descriptor.key, descriptor);\n    }\n  }\n\n  return function (Constructor, protoProps, staticProps) {\n    if (protoProps) defineProperties(Constructor.prototype, protoProps);\n    if (staticProps) defineProperties(Constructor, staticProps);\n    return Constructor;\n  };\n}();\n\nvar defineProperty = function (obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n};\n\nvar _extends = Object.assign || function (target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i];\n\n    for (var key in source) {\n      if (Object.prototype.hasOwnProperty.call(source, key)) {\n        target[key] = source[key];\n      }\n    }\n  }\n\n  return target;\n};\n/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\n\n\nfunction getClientRect(offsets) {\n  return _extends({}, offsets, {\n    right: offsets.left + offsets.width,\n    bottom: offsets.top + offsets.height\n  });\n}\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\n\n\nfunction getBoundingClientRect(element) {\n  var rect = {}; // IE10 10 FIX: Please, don't ask, the element isn't\n  // considered in DOM in some circumstances...\n  // This isn't reproducible in IE10 compatibility mode of IE11\n\n  try {\n    if (isIE(10)) {\n      rect = element.getBoundingClientRect();\n      var scrollTop = getScroll(element, 'top');\n      var scrollLeft = getScroll(element, 'left');\n      rect.top += scrollTop;\n      rect.left += scrollLeft;\n      rect.bottom += scrollTop;\n      rect.right += scrollLeft;\n    } else {\n      rect = element.getBoundingClientRect();\n    }\n  } catch (e) {}\n\n  var result = {\n    left: rect.left,\n    top: rect.top,\n    width: rect.right - rect.left,\n    height: rect.bottom - rect.top\n  }; // subtract scrollbar size from sizes\n\n  var sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {};\n  var width = sizes.width || element.clientWidth || result.width;\n  var height = sizes.height || element.clientHeight || result.height;\n  var horizScrollbar = element.offsetWidth - width;\n  var vertScrollbar = element.offsetHeight - height; // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n  // we make this check conditional for performance reasons\n\n  if (horizScrollbar || vertScrollbar) {\n    var styles = getStyleComputedProperty(element);\n    horizScrollbar -= getBordersSize(styles, 'x');\n    vertScrollbar -= getBordersSize(styles, 'y');\n    result.width -= horizScrollbar;\n    result.height -= vertScrollbar;\n  }\n\n  return getClientRect(result);\n}\n\nfunction getOffsetRectRelativeToArbitraryNode(children, parent) {\n  var fixedPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n  var isIE10 = isIE(10);\n  var isHTML = parent.nodeName === 'HTML';\n  var childrenRect = getBoundingClientRect(children);\n  var parentRect = getBoundingClientRect(parent);\n  var scrollParent = getScrollParent(children);\n  var styles = getStyleComputedProperty(parent);\n  var borderTopWidth = parseFloat(styles.borderTopWidth);\n  var borderLeftWidth = parseFloat(styles.borderLeftWidth); // In cases where the parent is fixed, we must ignore negative scroll in offset calc\n\n  if (fixedPosition && isHTML) {\n    parentRect.top = Math.max(parentRect.top, 0);\n    parentRect.left = Math.max(parentRect.left, 0);\n  }\n\n  var offsets = getClientRect({\n    top: childrenRect.top - parentRect.top - borderTopWidth,\n    left: childrenRect.left - parentRect.left - borderLeftWidth,\n    width: childrenRect.width,\n    height: childrenRect.height\n  });\n  offsets.marginTop = 0;\n  offsets.marginLeft = 0; // Subtract margins of documentElement in case it's being used as parent\n  // we do this only on HTML because it's the only element that behaves\n  // differently when margins are applied to it. The margins are included in\n  // the box of the documentElement, in the other cases not.\n\n  if (!isIE10 && isHTML) {\n    var marginTop = parseFloat(styles.marginTop);\n    var marginLeft = parseFloat(styles.marginLeft);\n    offsets.top -= borderTopWidth - marginTop;\n    offsets.bottom -= borderTopWidth - marginTop;\n    offsets.left -= borderLeftWidth - marginLeft;\n    offsets.right -= borderLeftWidth - marginLeft; // Attach marginTop and marginLeft because in some circumstances we may need them\n\n    offsets.marginTop = marginTop;\n    offsets.marginLeft = marginLeft;\n  }\n\n  if (isIE10 && !fixedPosition ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== 'BODY') {\n    offsets = includeScroll(offsets, parent);\n  }\n\n  return offsets;\n}\n\nfunction getViewportOffsetRectRelativeToArtbitraryNode(element) {\n  var excludeScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n  var html = element.ownerDocument.documentElement;\n  var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n  var width = Math.max(html.clientWidth, window.innerWidth || 0);\n  var height = Math.max(html.clientHeight, window.innerHeight || 0);\n  var scrollTop = !excludeScroll ? getScroll(html) : 0;\n  var scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\n  var offset = {\n    top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n    left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n    width: width,\n    height: height\n  };\n  return getClientRect(offset);\n}\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\n\n\nfunction isFixed(element) {\n  var nodeName = element.nodeName;\n\n  if (nodeName === 'BODY' || nodeName === 'HTML') {\n    return false;\n  }\n\n  if (getStyleComputedProperty(element, 'position') === 'fixed') {\n    return true;\n  }\n\n  var parentNode = getParentNode(element);\n\n  if (!parentNode) {\n    return false;\n  }\n\n  return isFixed(parentNode);\n}\n/**\n * Finds the first parent of an element that has a transformed property defined\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} first transformed parent or documentElement\n */\n\n\nfunction getFixedPositionOffsetParent(element) {\n  // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n  if (!element || !element.parentElement || isIE()) {\n    return document.documentElement;\n  }\n\n  var el = element.parentElement;\n\n  while (el && getStyleComputedProperty(el, 'transform') === 'none') {\n    el = el.parentElement;\n  }\n\n  return el || document.documentElement;\n}\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @param {Boolean} fixedPosition - Is in fixed position mode\n * @returns {Object} Coordinates of the boundaries\n */\n\n\nfunction getBoundaries(popper, reference, padding, boundariesElement) {\n  var fixedPosition = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false; // NOTE: 1 DOM access here\n\n  var boundaries = {\n    top: 0,\n    left: 0\n  };\n  var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference)); // Handle viewport case\n\n  if (boundariesElement === 'viewport') {\n    boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\n  } else {\n    // Handle other cases based on DOM element used as boundaries\n    var boundariesNode = void 0;\n\n    if (boundariesElement === 'scrollParent') {\n      boundariesNode = getScrollParent(getParentNode(reference));\n\n      if (boundariesNode.nodeName === 'BODY') {\n        boundariesNode = popper.ownerDocument.documentElement;\n      }\n    } else if (boundariesElement === 'window') {\n      boundariesNode = popper.ownerDocument.documentElement;\n    } else {\n      boundariesNode = boundariesElement;\n    }\n\n    var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent, fixedPosition); // In case of HTML, we need a different computation\n\n    if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n      var _getWindowSizes = getWindowSizes(popper.ownerDocument),\n          height = _getWindowSizes.height,\n          width = _getWindowSizes.width;\n\n      boundaries.top += offsets.top - offsets.marginTop;\n      boundaries.bottom = height + offsets.top;\n      boundaries.left += offsets.left - offsets.marginLeft;\n      boundaries.right = width + offsets.left;\n    } else {\n      // for all the other DOM elements, this one is good\n      boundaries = offsets;\n    }\n  } // Add paddings\n\n\n  padding = padding || 0;\n  var isPaddingNumber = typeof padding === 'number';\n  boundaries.left += isPaddingNumber ? padding : padding.left || 0;\n  boundaries.top += isPaddingNumber ? padding : padding.top || 0;\n  boundaries.right -= isPaddingNumber ? padding : padding.right || 0;\n  boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0;\n  return boundaries;\n}\n\nfunction getArea(_ref) {\n  var width = _ref.width,\n      height = _ref.height;\n  return width * height;\n}\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\n\n\nfunction computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) {\n  var padding = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;\n\n  if (placement.indexOf('auto') === -1) {\n    return placement;\n  }\n\n  var boundaries = getBoundaries(popper, reference, padding, boundariesElement);\n  var rects = {\n    top: {\n      width: boundaries.width,\n      height: refRect.top - boundaries.top\n    },\n    right: {\n      width: boundaries.right - refRect.right,\n      height: boundaries.height\n    },\n    bottom: {\n      width: boundaries.width,\n      height: boundaries.bottom - refRect.bottom\n    },\n    left: {\n      width: refRect.left - boundaries.left,\n      height: boundaries.height\n    }\n  };\n  var sortedAreas = Object.keys(rects).map(function (key) {\n    return _extends({\n      key: key\n    }, rects[key], {\n      area: getArea(rects[key])\n    });\n  }).sort(function (a, b) {\n    return b.area - a.area;\n  });\n  var filteredAreas = sortedAreas.filter(function (_ref2) {\n    var width = _ref2.width,\n        height = _ref2.height;\n    return width >= popper.clientWidth && height >= popper.clientHeight;\n  });\n  var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key;\n  var variation = placement.split('-')[1];\n  return computedPlacement + (variation ? '-' + variation : '');\n}\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @param {Element} fixedPosition - is in fixed position mode\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\n\n\nfunction getReferenceOffsets(state, popper, reference) {\n  var fixedPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n  var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n  return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);\n}\n/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\n\n\nfunction getOuterSizes(element) {\n  var window = element.ownerDocument.defaultView;\n  var styles = window.getComputedStyle(element);\n  var x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0);\n  var y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0);\n  var result = {\n    width: element.offsetWidth + y,\n    height: element.offsetHeight + x\n  };\n  return result;\n}\n/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\n\n\nfunction getOppositePlacement(placement) {\n  var hash = {\n    left: 'right',\n    right: 'left',\n    bottom: 'top',\n    top: 'bottom'\n  };\n  return placement.replace(/left|right|bottom|top/g, function (matched) {\n    return hash[matched];\n  });\n}\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\n\n\nfunction getPopperOffsets(popper, referenceOffsets, placement) {\n  placement = placement.split('-')[0]; // Get popper node sizes\n\n  var popperRect = getOuterSizes(popper); // Add position, width and height to our offsets object\n\n  var popperOffsets = {\n    width: popperRect.width,\n    height: popperRect.height\n  }; // depending by the popper placement we have to compute its offsets slightly differently\n\n  var isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n  var mainSide = isHoriz ? 'top' : 'left';\n  var secondarySide = isHoriz ? 'left' : 'top';\n  var measurement = isHoriz ? 'height' : 'width';\n  var secondaryMeasurement = !isHoriz ? 'height' : 'width';\n  popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2;\n\n  if (placement === secondarySide) {\n    popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n  } else {\n    popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)];\n  }\n\n  return popperOffsets;\n}\n/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\n\n\nfunction find(arr, check) {\n  // use native find if supported\n  if (Array.prototype.find) {\n    return arr.find(check);\n  } // use `filter` to obtain the same behavior of `find`\n\n\n  return arr.filter(check)[0];\n}\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\n\n\nfunction findIndex(arr, prop, value) {\n  // use native findIndex if supported\n  if (Array.prototype.findIndex) {\n    return arr.findIndex(function (cur) {\n      return cur[prop] === value;\n    });\n  } // use `find` + `indexOf` if `findIndex` isn't supported\n\n\n  var match = find(arr, function (obj) {\n    return obj[prop] === value;\n  });\n  return arr.indexOf(match);\n}\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\n\n\nfunction runModifiers(modifiers, data, ends) {\n  var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n  modifiersToRun.forEach(function (modifier) {\n    if (modifier['function']) {\n      // eslint-disable-line dot-notation\n      console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n    }\n\n    var fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n\n    if (modifier.enabled && isFunction(fn)) {\n      // Add properties to offsets to make them a complete clientRect object\n      // we do this before each modifier to make sure the previous one doesn't\n      // mess with these values\n      data.offsets.popper = getClientRect(data.offsets.popper);\n      data.offsets.reference = getClientRect(data.offsets.reference);\n      data = fn(data, modifier);\n    }\n  });\n  return data;\n}\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.<br />\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\n\n\nfunction update() {\n  // if popper is destroyed, don't perform any further update\n  if (this.state.isDestroyed) {\n    return;\n  }\n\n  var data = {\n    instance: this,\n    styles: {},\n    arrowStyles: {},\n    attributes: {},\n    flipped: false,\n    offsets: {}\n  }; // compute reference element offsets\n\n  data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference, this.options.positionFixed); // compute auto placement, store placement inside the data object,\n  // modifiers will be able to edit `placement` if needed\n  // and refer to originalPlacement to know the original value\n\n  data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding); // store the computed placement inside `originalPlacement`\n\n  data.originalPlacement = data.placement;\n  data.positionFixed = this.options.positionFixed; // compute the popper offsets\n\n  data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement);\n  data.offsets.popper.position = this.options.positionFixed ? 'fixed' : 'absolute'; // run the modifiers\n\n  data = runModifiers(this.modifiers, data); // the first `update` will call `onCreate` callback\n  // the other ones will call `onUpdate` callback\n\n  if (!this.state.isCreated) {\n    this.state.isCreated = true;\n    this.options.onCreate(data);\n  } else {\n    this.options.onUpdate(data);\n  }\n}\n/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\n\n\nfunction isModifierEnabled(modifiers, modifierName) {\n  return modifiers.some(function (_ref) {\n    var name = _ref.name,\n        enabled = _ref.enabled;\n    return enabled && name === modifierName;\n  });\n}\n/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\n\n\nfunction getSupportedPropertyName(property) {\n  var prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n  var upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n  for (var i = 0; i < prefixes.length; i++) {\n    var prefix = prefixes[i];\n    var toCheck = prefix ? '' + prefix + upperProp : property;\n\n    if (typeof document.body.style[toCheck] !== 'undefined') {\n      return toCheck;\n    }\n  }\n\n  return null;\n}\n/**\n * Destroys the popper.\n * @method\n * @memberof Popper\n */\n\n\nfunction destroy() {\n  this.state.isDestroyed = true; // touch DOM only if `applyStyle` modifier is enabled\n\n  if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n    this.popper.removeAttribute('x-placement');\n    this.popper.style.position = '';\n    this.popper.style.top = '';\n    this.popper.style.left = '';\n    this.popper.style.right = '';\n    this.popper.style.bottom = '';\n    this.popper.style.willChange = '';\n    this.popper.style[getSupportedPropertyName('transform')] = '';\n  }\n\n  this.disableEventListeners(); // remove the popper if user explicitly asked for the deletion on destroy\n  // do not use `remove` because IE11 doesn't support it\n\n  if (this.options.removeOnDestroy) {\n    this.popper.parentNode.removeChild(this.popper);\n  }\n\n  return this;\n}\n/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\n\n\nfunction getWindow(element) {\n  var ownerDocument = element.ownerDocument;\n  return ownerDocument ? ownerDocument.defaultView : window;\n}\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n  var isBody = scrollParent.nodeName === 'BODY';\n  var target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n  target.addEventListener(event, callback, {\n    passive: true\n  });\n\n  if (!isBody) {\n    attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents);\n  }\n\n  scrollParents.push(target);\n}\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\n\n\nfunction setupEventListeners(reference, options, state, updateBound) {\n  // Resize event listener on window\n  state.updateBound = updateBound;\n  getWindow(reference).addEventListener('resize', state.updateBound, {\n    passive: true\n  }); // Scroll event listener on scroll parents\n\n  var scrollElement = getScrollParent(reference);\n  attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents);\n  state.scrollElement = scrollElement;\n  state.eventsEnabled = true;\n  return state;\n}\n/**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\n\n\nfunction enableEventListeners() {\n  if (!this.state.eventsEnabled) {\n    this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate);\n  }\n}\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\n\n\nfunction removeEventListeners(reference, state) {\n  // Remove resize event listener on window\n  getWindow(reference).removeEventListener('resize', state.updateBound); // Remove scroll event listener on scroll parents\n\n  state.scrollParents.forEach(function (target) {\n    target.removeEventListener('scroll', state.updateBound);\n  }); // Reset state\n\n  state.updateBound = null;\n  state.scrollParents = [];\n  state.scrollElement = null;\n  state.eventsEnabled = false;\n  return state;\n}\n/**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger `onUpdate` callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\n\n\nfunction disableEventListeners() {\n  if (this.state.eventsEnabled) {\n    cancelAnimationFrame(this.scheduleUpdate);\n    this.state = removeEventListeners(this.reference, this.state);\n  }\n}\n/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\n\n\nfunction isNumeric(n) {\n  return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\n\n\nfunction setStyles(element, styles) {\n  Object.keys(styles).forEach(function (prop) {\n    var unit = ''; // add unit if the value is numeric and is one of the following\n\n    if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) {\n      unit = 'px';\n    }\n\n    element.style[prop] = styles[prop] + unit;\n  });\n}\n/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\n\n\nfunction setAttributes(element, attributes) {\n  Object.keys(attributes).forEach(function (prop) {\n    var value = attributes[prop];\n\n    if (value !== false) {\n      element.setAttribute(prop, attributes[prop]);\n    } else {\n      element.removeAttribute(prop);\n    }\n  });\n}\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\n\n\nfunction applyStyle(data) {\n  // any property present in `data.styles` will be applied to the popper,\n  // in this way we can make the 3rd party modifiers add custom styles to it\n  // Be aware, modifiers could override the properties defined in the previous\n  // lines of this modifier!\n  setStyles(data.instance.popper, data.styles); // any property present in `data.attributes` will be applied to the popper,\n  // they will be set as HTML attributes of the element\n\n  setAttributes(data.instance.popper, data.attributes); // if arrowElement is defined and arrowStyles has some properties\n\n  if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n    setStyles(data.arrowElement, data.arrowStyles);\n  }\n\n  return data;\n}\n/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper\n * @param {Object} options - Popper.js options\n */\n\n\nfunction applyStyleOnLoad(reference, popper, options, modifierOptions, state) {\n  // compute reference element offsets\n  var referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed); // compute auto placement, store placement inside the data object,\n  // modifiers will be able to edit `placement` if needed\n  // and refer to originalPlacement to know the original value\n\n  var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding);\n  popper.setAttribute('x-placement', placement); // Apply `position` to popper before anything else because\n  // without the position applied we can't guarantee correct computations\n\n  setStyles(popper, {\n    position: options.positionFixed ? 'fixed' : 'absolute'\n  });\n  return options;\n}\n/**\n * @function\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Boolean} shouldRound - If the offsets should be rounded at all\n * @returns {Object} The popper's position offsets rounded\n *\n * The tale of pixel-perfect positioning. It's still not 100% perfect, but as\n * good as it can be within reason.\n * Discussion here: https://github.com/FezVrasta/popper.js/pull/715\n *\n * Low DPI screens cause a popper to be blurry if not using full pixels (Safari\n * as well on High DPI screens).\n *\n * Firefox prefers no rounding for positioning and does not have blurriness on\n * high DPI screens.\n *\n * Only horizontal placement and left/right values need to be considered.\n */\n\n\nfunction getRoundedOffsets(data, shouldRound) {\n  var _data$offsets = data.offsets,\n      popper = _data$offsets.popper,\n      reference = _data$offsets.reference;\n  var round = Math.round,\n      floor = Math.floor;\n\n  var noRound = function noRound(v) {\n    return v;\n  };\n\n  var referenceWidth = round(reference.width);\n  var popperWidth = round(popper.width);\n  var isVertical = ['left', 'right'].indexOf(data.placement) !== -1;\n  var isVariation = data.placement.indexOf('-') !== -1;\n  var sameWidthParity = referenceWidth % 2 === popperWidth % 2;\n  var bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1;\n  var horizontalToInteger = !shouldRound ? noRound : isVertical || isVariation || sameWidthParity ? round : floor;\n  var verticalToInteger = !shouldRound ? noRound : round;\n  return {\n    left: horizontalToInteger(bothOddWidth && !isVariation && shouldRound ? popper.left - 1 : popper.left),\n    top: verticalToInteger(popper.top),\n    bottom: verticalToInteger(popper.bottom),\n    right: horizontalToInteger(popper.right)\n  };\n}\n\nvar isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent);\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\n\nfunction computeStyle(data, options) {\n  var x = options.x,\n      y = options.y;\n  var popper = data.offsets.popper; // Remove this legacy support in Popper.js v2\n\n  var legacyGpuAccelerationOption = find(data.instance.modifiers, function (modifier) {\n    return modifier.name === 'applyStyle';\n  }).gpuAcceleration;\n\n  if (legacyGpuAccelerationOption !== undefined) {\n    console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!');\n  }\n\n  var gpuAcceleration = legacyGpuAccelerationOption !== undefined ? legacyGpuAccelerationOption : options.gpuAcceleration;\n  var offsetParent = getOffsetParent(data.instance.popper);\n  var offsetParentRect = getBoundingClientRect(offsetParent); // Styles\n\n  var styles = {\n    position: popper.position\n  };\n  var offsets = getRoundedOffsets(data, window.devicePixelRatio < 2 || !isFirefox);\n  var sideA = x === 'bottom' ? 'top' : 'bottom';\n  var sideB = y === 'right' ? 'left' : 'right'; // if gpuAcceleration is set to `true` and transform is supported,\n  //  we use `translate3d` to apply the position to the popper we\n  // automatically use the supported prefixed version if needed\n\n  var prefixedProperty = getSupportedPropertyName('transform'); // now, let's make a step back and look at this code closely (wtf?)\n  // If the content of the popper grows once it's been positioned, it\n  // may happen that the popper gets misplaced because of the new content\n  // overflowing its reference element\n  // To avoid this problem, we provide two options (x and y), which allow\n  // the consumer to define the offset origin.\n  // If we position a popper on top of a reference element, we can set\n  // `x` to `top` to make the popper grow towards its top instead of\n  // its bottom.\n\n  var left = void 0,\n      top = void 0;\n\n  if (sideA === 'bottom') {\n    // when offsetParent is <html> the positioning is relative to the bottom of the screen (excluding the scrollbar)\n    // and not the bottom of the html element\n    if (offsetParent.nodeName === 'HTML') {\n      top = -offsetParent.clientHeight + offsets.bottom;\n    } else {\n      top = -offsetParentRect.height + offsets.bottom;\n    }\n  } else {\n    top = offsets.top;\n  }\n\n  if (sideB === 'right') {\n    if (offsetParent.nodeName === 'HTML') {\n      left = -offsetParent.clientWidth + offsets.right;\n    } else {\n      left = -offsetParentRect.width + offsets.right;\n    }\n  } else {\n    left = offsets.left;\n  }\n\n  if (gpuAcceleration && prefixedProperty) {\n    styles[prefixedProperty] = 'translate3d(' + left + 'px, ' + top + 'px, 0)';\n    styles[sideA] = 0;\n    styles[sideB] = 0;\n    styles.willChange = 'transform';\n  } else {\n    // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n    var invertTop = sideA === 'bottom' ? -1 : 1;\n    var invertLeft = sideB === 'right' ? -1 : 1;\n    styles[sideA] = top * invertTop;\n    styles[sideB] = left * invertLeft;\n    styles.willChange = sideA + ', ' + sideB;\n  } // Attributes\n\n\n  var attributes = {\n    'x-placement': data.placement\n  }; // Update `data` attributes, styles and arrowStyles\n\n  data.attributes = _extends({}, attributes, data.attributes);\n  data.styles = _extends({}, styles, data.styles);\n  data.arrowStyles = _extends({}, data.offsets.arrow, data.arrowStyles);\n  return data;\n}\n/**\n * Helper used to know if the given modifier depends from another one.<br />\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\n\n\nfunction isModifierRequired(modifiers, requestingName, requestedName) {\n  var requesting = find(modifiers, function (_ref) {\n    var name = _ref.name;\n    return name === requestingName;\n  });\n  var isRequired = !!requesting && modifiers.some(function (modifier) {\n    return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order;\n  });\n\n  if (!isRequired) {\n    var _requesting = '`' + requestingName + '`';\n\n    var requested = '`' + requestedName + '`';\n    console.warn(requested + ' modifier is required by ' + _requesting + ' modifier in order to work, be sure to include it before ' + _requesting + '!');\n  }\n\n  return isRequired;\n}\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\n\n\nfunction arrow(data, options) {\n  var _data$offsets$arrow; // arrow depends on keepTogether in order to work\n\n\n  if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n    return data;\n  }\n\n  var arrowElement = options.element; // if arrowElement is a string, suppose it's a CSS selector\n\n  if (typeof arrowElement === 'string') {\n    arrowElement = data.instance.popper.querySelector(arrowElement); // if arrowElement is not found, don't run the modifier\n\n    if (!arrowElement) {\n      return data;\n    }\n  } else {\n    // if the arrowElement isn't a query selector we must check that the\n    // provided DOM node is child of its popper node\n    if (!data.instance.popper.contains(arrowElement)) {\n      console.warn('WARNING: `arrow.element` must be child of its popper element!');\n      return data;\n    }\n  }\n\n  var placement = data.placement.split('-')[0];\n  var _data$offsets = data.offsets,\n      popper = _data$offsets.popper,\n      reference = _data$offsets.reference;\n  var isVertical = ['left', 'right'].indexOf(placement) !== -1;\n  var len = isVertical ? 'height' : 'width';\n  var sideCapitalized = isVertical ? 'Top' : 'Left';\n  var side = sideCapitalized.toLowerCase();\n  var altSide = isVertical ? 'left' : 'top';\n  var opSide = isVertical ? 'bottom' : 'right';\n  var arrowElementSize = getOuterSizes(arrowElement)[len]; //\n  // extends keepTogether behavior making sure the popper and its\n  // reference have enough pixels in conjunction\n  //\n  // top/left side\n\n  if (reference[opSide] - arrowElementSize < popper[side]) {\n    data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize);\n  } // bottom/right side\n\n\n  if (reference[side] + arrowElementSize > popper[opSide]) {\n    data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide];\n  }\n\n  data.offsets.popper = getClientRect(data.offsets.popper); // compute center of the popper\n\n  var center = reference[side] + reference[len] / 2 - arrowElementSize / 2; // Compute the sideValue using the updated popper offsets\n  // take popper margin in account because we don't have this info available\n\n  var css = getStyleComputedProperty(data.instance.popper);\n  var popperMarginSide = parseFloat(css['margin' + sideCapitalized]);\n  var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width']);\n  var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide; // prevent arrowElement from being placed not contiguously to its popper\n\n  sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n  data.arrowElement = arrowElement;\n  data.offsets.arrow = (_data$offsets$arrow = {}, defineProperty(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty(_data$offsets$arrow, altSide, ''), _data$offsets$arrow);\n  return data;\n}\n/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\n\n\nfunction getOppositeVariation(variation) {\n  if (variation === 'end') {\n    return 'start';\n  } else if (variation === 'start') {\n    return 'end';\n  }\n\n  return variation;\n}\n/**\n * List of accepted placements to use as values of the `placement` option.<br />\n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.<br />\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-end` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\n\n\nvar placements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start']; // Get rid of `auto` `auto-start` and `auto-end`\n\nvar validPlacements = placements.slice(3);\n/**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n */\n\nfunction clockwise(placement) {\n  var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n  var index = validPlacements.indexOf(placement);\n  var arr = validPlacements.slice(index + 1).concat(validPlacements.slice(0, index));\n  return counter ? arr.reverse() : arr;\n}\n\nvar BEHAVIORS = {\n  FLIP: 'flip',\n  CLOCKWISE: 'clockwise',\n  COUNTERCLOCKWISE: 'counterclockwise'\n};\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\n\nfunction flip(data, options) {\n  // if `inner` modifier is enabled, we can't use the `flip` modifier\n  if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n    return data;\n  }\n\n  if (data.flipped && data.placement === data.originalPlacement) {\n    // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n    return data;\n  }\n\n  var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement, data.positionFixed);\n  var placement = data.placement.split('-')[0];\n  var placementOpposite = getOppositePlacement(placement);\n  var variation = data.placement.split('-')[1] || '';\n  var flipOrder = [];\n\n  switch (options.behavior) {\n    case BEHAVIORS.FLIP:\n      flipOrder = [placement, placementOpposite];\n      break;\n\n    case BEHAVIORS.CLOCKWISE:\n      flipOrder = clockwise(placement);\n      break;\n\n    case BEHAVIORS.COUNTERCLOCKWISE:\n      flipOrder = clockwise(placement, true);\n      break;\n\n    default:\n      flipOrder = options.behavior;\n  }\n\n  flipOrder.forEach(function (step, index) {\n    if (placement !== step || flipOrder.length === index + 1) {\n      return data;\n    }\n\n    placement = data.placement.split('-')[0];\n    placementOpposite = getOppositePlacement(placement);\n    var popperOffsets = data.offsets.popper;\n    var refOffsets = data.offsets.reference; // using floor because the reference offsets may contain decimals we are not going to consider here\n\n    var floor = Math.floor;\n    var overlapsRef = placement === 'left' && floor(popperOffsets.right) > floor(refOffsets.left) || placement === 'right' && floor(popperOffsets.left) < floor(refOffsets.right) || placement === 'top' && floor(popperOffsets.bottom) > floor(refOffsets.top) || placement === 'bottom' && floor(popperOffsets.top) < floor(refOffsets.bottom);\n    var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n    var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n    var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n    var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom);\n    var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom; // flip the variation if required\n\n    var isVertical = ['top', 'bottom'].indexOf(placement) !== -1; // flips variation if reference element overflows boundaries\n\n    var flippedVariationByRef = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom); // flips variation if popper content overflows boundaries\n\n    var flippedVariationByContent = !!options.flipVariationsByContent && (isVertical && variation === 'start' && overflowsRight || isVertical && variation === 'end' && overflowsLeft || !isVertical && variation === 'start' && overflowsBottom || !isVertical && variation === 'end' && overflowsTop);\n    var flippedVariation = flippedVariationByRef || flippedVariationByContent;\n\n    if (overlapsRef || overflowsBoundaries || flippedVariation) {\n      // this boolean to detect any flip loop\n      data.flipped = true;\n\n      if (overlapsRef || overflowsBoundaries) {\n        placement = flipOrder[index + 1];\n      }\n\n      if (flippedVariation) {\n        variation = getOppositeVariation(variation);\n      }\n\n      data.placement = placement + (variation ? '-' + variation : ''); // this object contains `position`, we want to preserve it along with\n      // any additional property we may add in the future\n\n      data.offsets.popper = _extends({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement));\n      data = runModifiers(data.instance.modifiers, data, 'flip');\n    }\n  });\n  return data;\n}\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\n\n\nfunction keepTogether(data) {\n  var _data$offsets = data.offsets,\n      popper = _data$offsets.popper,\n      reference = _data$offsets.reference;\n  var placement = data.placement.split('-')[0];\n  var floor = Math.floor;\n  var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n  var side = isVertical ? 'right' : 'bottom';\n  var opSide = isVertical ? 'left' : 'top';\n  var measurement = isVertical ? 'width' : 'height';\n\n  if (popper[side] < floor(reference[opSide])) {\n    data.offsets.popper[opSide] = floor(reference[opSide]) - popper[measurement];\n  }\n\n  if (popper[opSide] > floor(reference[side])) {\n    data.offsets.popper[opSide] = floor(reference[side]);\n  }\n\n  return data;\n}\n/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\n\n\nfunction toValue(str, measurement, popperOffsets, referenceOffsets) {\n  // separate value from unit\n  var split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n  var value = +split[1];\n  var unit = split[2]; // If it's not a number it's an operator, I guess\n\n  if (!value) {\n    return str;\n  }\n\n  if (unit.indexOf('%') === 0) {\n    var element = void 0;\n\n    switch (unit) {\n      case '%p':\n        element = popperOffsets;\n        break;\n\n      case '%':\n      case '%r':\n      default:\n        element = referenceOffsets;\n    }\n\n    var rect = getClientRect(element);\n    return rect[measurement] / 100 * value;\n  } else if (unit === 'vh' || unit === 'vw') {\n    // if is a vh or vw, we calculate the size based on the viewport\n    var size = void 0;\n\n    if (unit === 'vh') {\n      size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n    } else {\n      size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n    }\n\n    return size / 100 * value;\n  } else {\n    // if is an explicit pixel unit, we get rid of the unit and keep the value\n    // if is an implicit unit, it's px, and we return just the value\n    return value;\n  }\n}\n/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\n\n\nfunction parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) {\n  var offsets = [0, 0]; // Use height if placement is left or right and index is 0 otherwise use width\n  // in this way the first offset will use an axis and the second one\n  // will use the other one\n\n  var useHeight = ['right', 'left'].indexOf(basePlacement) !== -1; // Split the offset string to obtain a list of values and operands\n  // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n\n  var fragments = offset.split(/(\\+|\\-)/).map(function (frag) {\n    return frag.trim();\n  }); // Detect if the offset string contains a pair of values or a single one\n  // they could be separated by comma or space\n\n  var divider = fragments.indexOf(find(fragments, function (frag) {\n    return frag.search(/,|\\s/) !== -1;\n  }));\n\n  if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n    console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');\n  } // If divider is found, we divide the list of values and operands to divide\n  // them by ofset X and Y.\n\n\n  var splitRegex = /\\s*,\\s*|\\s+/;\n  var ops = divider !== -1 ? [fragments.slice(0, divider).concat([fragments[divider].split(splitRegex)[0]]), [fragments[divider].split(splitRegex)[1]].concat(fragments.slice(divider + 1))] : [fragments]; // Convert the values with units to absolute pixels to allow our computations\n\n  ops = ops.map(function (op, index) {\n    // Most of the units rely on the orientation of the popper\n    var measurement = (index === 1 ? !useHeight : useHeight) ? 'height' : 'width';\n    var mergeWithPrevious = false;\n    return op // This aggregates any `+` or `-` sign that aren't considered operators\n    // e.g.: 10 + +5 => [10, +, +5]\n    .reduce(function (a, b) {\n      if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n        a[a.length - 1] = b;\n        mergeWithPrevious = true;\n        return a;\n      } else if (mergeWithPrevious) {\n        a[a.length - 1] += b;\n        mergeWithPrevious = false;\n        return a;\n      } else {\n        return a.concat(b);\n      }\n    }, []) // Here we convert the string values into number values (in px)\n    .map(function (str) {\n      return toValue(str, measurement, popperOffsets, referenceOffsets);\n    });\n  }); // Loop trough the offsets arrays and execute the operations\n\n  ops.forEach(function (op, index) {\n    op.forEach(function (frag, index2) {\n      if (isNumeric(frag)) {\n        offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n      }\n    });\n  });\n  return offsets;\n}\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\n\n\nfunction offset(data, _ref) {\n  var offset = _ref.offset;\n  var placement = data.placement,\n      _data$offsets = data.offsets,\n      popper = _data$offsets.popper,\n      reference = _data$offsets.reference;\n  var basePlacement = placement.split('-')[0];\n  var offsets = void 0;\n\n  if (isNumeric(+offset)) {\n    offsets = [+offset, 0];\n  } else {\n    offsets = parseOffset(offset, popper, reference, basePlacement);\n  }\n\n  if (basePlacement === 'left') {\n    popper.top += offsets[0];\n    popper.left -= offsets[1];\n  } else if (basePlacement === 'right') {\n    popper.top += offsets[0];\n    popper.left += offsets[1];\n  } else if (basePlacement === 'top') {\n    popper.left += offsets[0];\n    popper.top -= offsets[1];\n  } else if (basePlacement === 'bottom') {\n    popper.left += offsets[0];\n    popper.top += offsets[1];\n  }\n\n  data.popper = popper;\n  return data;\n}\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\n\n\nfunction preventOverflow(data, options) {\n  var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper); // If offsetParent is the reference element, we really want to\n  // go one step up and use the next offsetParent as reference to\n  // avoid to make this modifier completely useless and look like broken\n\n  if (data.instance.reference === boundariesElement) {\n    boundariesElement = getOffsetParent(boundariesElement);\n  } // NOTE: DOM access here\n  // resets the popper's position so that the document size can be calculated excluding\n  // the size of the popper element itself\n\n\n  var transformProp = getSupportedPropertyName('transform');\n  var popperStyles = data.instance.popper.style; // assignment to help minification\n\n  var top = popperStyles.top,\n      left = popperStyles.left,\n      transform = popperStyles[transformProp];\n  popperStyles.top = '';\n  popperStyles.left = '';\n  popperStyles[transformProp] = '';\n  var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement, data.positionFixed); // NOTE: DOM access here\n  // restores the original style properties after the offsets have been computed\n\n  popperStyles.top = top;\n  popperStyles.left = left;\n  popperStyles[transformProp] = transform;\n  options.boundaries = boundaries;\n  var order = options.priority;\n  var popper = data.offsets.popper;\n  var check = {\n    primary: function primary(placement) {\n      var value = popper[placement];\n\n      if (popper[placement] < boundaries[placement] && !options.escapeWithReference) {\n        value = Math.max(popper[placement], boundaries[placement]);\n      }\n\n      return defineProperty({}, placement, value);\n    },\n    secondary: function secondary(placement) {\n      var mainSide = placement === 'right' ? 'left' : 'top';\n      var value = popper[mainSide];\n\n      if (popper[placement] > boundaries[placement] && !options.escapeWithReference) {\n        value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height));\n      }\n\n      return defineProperty({}, mainSide, value);\n    }\n  };\n  order.forEach(function (placement) {\n    var side = ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';\n    popper = _extends({}, popper, check[side](placement));\n  });\n  data.offsets.popper = popper;\n  return data;\n}\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\n\n\nfunction shift(data) {\n  var placement = data.placement;\n  var basePlacement = placement.split('-')[0];\n  var shiftvariation = placement.split('-')[1]; // if shift shiftvariation is specified, run the modifier\n\n  if (shiftvariation) {\n    var _data$offsets = data.offsets,\n        reference = _data$offsets.reference,\n        popper = _data$offsets.popper;\n    var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n    var side = isVertical ? 'left' : 'top';\n    var measurement = isVertical ? 'width' : 'height';\n    var shiftOffsets = {\n      start: defineProperty({}, side, reference[side]),\n      end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement])\n    };\n    data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]);\n  }\n\n  return data;\n}\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\n\n\nfunction hide(data) {\n  if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n    return data;\n  }\n\n  var refRect = data.offsets.reference;\n  var bound = find(data.instance.modifiers, function (modifier) {\n    return modifier.name === 'preventOverflow';\n  }).boundaries;\n\n  if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) {\n    // Avoid unnecessary DOM access if visibility hasn't changed\n    if (data.hide === true) {\n      return data;\n    }\n\n    data.hide = true;\n    data.attributes['x-out-of-boundaries'] = '';\n  } else {\n    // Avoid unnecessary DOM access if visibility hasn't changed\n    if (data.hide === false) {\n      return data;\n    }\n\n    data.hide = false;\n    data.attributes['x-out-of-boundaries'] = false;\n  }\n\n  return data;\n}\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\n\n\nfunction inner(data) {\n  var placement = data.placement;\n  var basePlacement = placement.split('-')[0];\n  var _data$offsets = data.offsets,\n      popper = _data$offsets.popper,\n      reference = _data$offsets.reference;\n  var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n  var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n  popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n  data.placement = getOppositePlacement(placement);\n  data.offsets.popper = getClientRect(popper);\n  return data;\n}\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.<br />\n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers.<br />\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\n\n\nvar modifiers = {\n  /**\n   * Modifier used to shift the popper on the start or end of its reference\n   * element.<br />\n   * It will read the variation of the `placement` property.<br />\n   * It can be one either `-end` or `-start`.\n   * @memberof modifiers\n   * @inner\n   */\n  shift: {\n    /** @prop {number} order=100 - Index used to define the order of execution */\n    order: 100,\n\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n\n    /** @prop {ModifierFn} */\n    fn: shift\n  },\n\n  /**\n   * The `offset` modifier can shift your popper on both its axis.\n   *\n   * It accepts the following units:\n   * - `px` or unit-less, interpreted as pixels\n   * - `%` or `%r`, percentage relative to the length of the reference element\n   * - `%p`, percentage relative to the length of the popper element\n   * - `vw`, CSS viewport width unit\n   * - `vh`, CSS viewport height unit\n   *\n   * For length is intended the main axis relative to the placement of the popper.<br />\n   * This means that if the placement is `top` or `bottom`, the length will be the\n   * `width`. In case of `left` or `right`, it will be the `height`.\n   *\n   * You can provide a single value (as `Number` or `String`), or a pair of values\n   * as `String` divided by a comma or one (or more) white spaces.<br />\n   * The latter is a deprecated method because it leads to confusion and will be\n   * removed in v2.<br />\n   * Additionally, it accepts additions and subtractions between different units.\n   * Note that multiplications and divisions aren't supported.\n   *\n   * Valid examples are:\n   * ```\n   * 10\n   * '10%'\n   * '10, 10'\n   * '10%, 10'\n   * '10 + 10%'\n   * '10 - 5vh + 3%'\n   * '-10px + 5vh, 5px - 6%'\n   * ```\n   * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n   * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n   * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373).\n   *\n   * @memberof modifiers\n   * @inner\n   */\n  offset: {\n    /** @prop {number} order=200 - Index used to define the order of execution */\n    order: 200,\n\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n\n    /** @prop {ModifierFn} */\n    fn: offset,\n\n    /** @prop {Number|String} offset=0\n     * The offset value as described in the modifier description\n     */\n    offset: 0\n  },\n\n  /**\n   * Modifier used to prevent the popper from being positioned outside the boundary.\n   *\n   * A scenario exists where the reference itself is not within the boundaries.<br />\n   * We can say it has \"escaped the boundaries\" — or just \"escaped\".<br />\n   * In this case we need to decide whether the popper should either:\n   *\n   * - detach from the reference and remain \"trapped\" in the boundaries, or\n   * - if it should ignore the boundary and \"escape with its reference\"\n   *\n   * When `escapeWithReference` is set to`true` and reference is completely\n   * outside its boundaries, the popper will overflow (or completely leave)\n   * the boundaries in order to remain attached to the edge of the reference.\n   *\n   * @memberof modifiers\n   * @inner\n   */\n  preventOverflow: {\n    /** @prop {number} order=300 - Index used to define the order of execution */\n    order: 300,\n\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n\n    /** @prop {ModifierFn} */\n    fn: preventOverflow,\n\n    /**\n     * @prop {Array} [priority=['left','right','top','bottom']]\n     * Popper will try to prevent overflow following these priorities by default,\n     * then, it could overflow on the left and on top of the `boundariesElement`\n     */\n    priority: ['left', 'right', 'top', 'bottom'],\n\n    /**\n     * @prop {number} padding=5\n     * Amount of pixel used to define a minimum distance between the boundaries\n     * and the popper. This makes sure the popper always has a little padding\n     * between the edges of its container\n     */\n    padding: 5,\n\n    /**\n     * @prop {String|HTMLElement} boundariesElement='scrollParent'\n     * Boundaries used by the modifier. Can be `scrollParent`, `window`,\n     * `viewport` or any DOM element.\n     */\n    boundariesElement: 'scrollParent'\n  },\n\n  /**\n   * Modifier used to make sure the reference and its popper stay near each other\n   * without leaving any gap between the two. Especially useful when the arrow is\n   * enabled and you want to ensure that it points to its reference element.\n   * It cares only about the first axis. You can still have poppers with margin\n   * between the popper and its reference element.\n   * @memberof modifiers\n   * @inner\n   */\n  keepTogether: {\n    /** @prop {number} order=400 - Index used to define the order of execution */\n    order: 400,\n\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n\n    /** @prop {ModifierFn} */\n    fn: keepTogether\n  },\n\n  /**\n   * This modifier is used to move the `arrowElement` of the popper to make\n   * sure it is positioned between the reference element and its popper element.\n   * It will read the outer size of the `arrowElement` node to detect how many\n   * pixels of conjunction are needed.\n   *\n   * It has no effect if no `arrowElement` is provided.\n   * @memberof modifiers\n   * @inner\n   */\n  arrow: {\n    /** @prop {number} order=500 - Index used to define the order of execution */\n    order: 500,\n\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n\n    /** @prop {ModifierFn} */\n    fn: arrow,\n\n    /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n    element: '[x-arrow]'\n  },\n\n  /**\n   * Modifier used to flip the popper's placement when it starts to overlap its\n   * reference element.\n   *\n   * Requires the `preventOverflow` modifier before it in order to work.\n   *\n   * **NOTE:** this modifier will interrupt the current update cycle and will\n   * restart it if it detects the need to flip the placement.\n   * @memberof modifiers\n   * @inner\n   */\n  flip: {\n    /** @prop {number} order=600 - Index used to define the order of execution */\n    order: 600,\n\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n\n    /** @prop {ModifierFn} */\n    fn: flip,\n\n    /**\n     * @prop {String|Array} behavior='flip'\n     * The behavior used to change the popper's placement. It can be one of\n     * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n     * placements (with optional variations)\n     */\n    behavior: 'flip',\n\n    /**\n     * @prop {number} padding=5\n     * The popper will flip if it hits the edges of the `boundariesElement`\n     */\n    padding: 5,\n\n    /**\n     * @prop {String|HTMLElement} boundariesElement='viewport'\n     * The element which will define the boundaries of the popper position.\n     * The popper will never be placed outside of the defined boundaries\n     * (except if `keepTogether` is enabled)\n     */\n    boundariesElement: 'viewport',\n\n    /**\n     * @prop {Boolean} flipVariations=false\n     * The popper will switch placement variation between `-start` and `-end` when\n     * the reference element overlaps its boundaries.\n     *\n     * The original placement should have a set variation.\n     */\n    flipVariations: false,\n\n    /**\n     * @prop {Boolean} flipVariationsByContent=false\n     * The popper will switch placement variation between `-start` and `-end` when\n     * the popper element overlaps its reference boundaries.\n     *\n     * The original placement should have a set variation.\n     */\n    flipVariationsByContent: false\n  },\n\n  /**\n   * Modifier used to make the popper flow toward the inner of the reference element.\n   * By default, when this modifier is disabled, the popper will be placed outside\n   * the reference element.\n   * @memberof modifiers\n   * @inner\n   */\n  inner: {\n    /** @prop {number} order=700 - Index used to define the order of execution */\n    order: 700,\n\n    /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n    enabled: false,\n\n    /** @prop {ModifierFn} */\n    fn: inner\n  },\n\n  /**\n   * Modifier used to hide the popper when its reference element is outside of the\n   * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n   * be used to hide with a CSS selector the popper when its reference is\n   * out of boundaries.\n   *\n   * Requires the `preventOverflow` modifier before it in order to work.\n   * @memberof modifiers\n   * @inner\n   */\n  hide: {\n    /** @prop {number} order=800 - Index used to define the order of execution */\n    order: 800,\n\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n\n    /** @prop {ModifierFn} */\n    fn: hide\n  },\n\n  /**\n   * Computes the style that will be applied to the popper element to gets\n   * properly positioned.\n   *\n   * Note that this modifier will not touch the DOM, it just prepares the styles\n   * so that `applyStyle` modifier can apply it. This separation is useful\n   * in case you need to replace `applyStyle` with a custom implementation.\n   *\n   * This modifier has `850` as `order` value to maintain backward compatibility\n   * with previous versions of Popper.js. Expect the modifiers ordering method\n   * to change in future major versions of the library.\n   *\n   * @memberof modifiers\n   * @inner\n   */\n  computeStyle: {\n    /** @prop {number} order=850 - Index used to define the order of execution */\n    order: 850,\n\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n\n    /** @prop {ModifierFn} */\n    fn: computeStyle,\n\n    /**\n     * @prop {Boolean} gpuAcceleration=true\n     * If true, it uses the CSS 3D transformation to position the popper.\n     * Otherwise, it will use the `top` and `left` properties\n     */\n    gpuAcceleration: true,\n\n    /**\n     * @prop {string} [x='bottom']\n     * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n     * Change this if your popper should grow in a direction different from `bottom`\n     */\n    x: 'bottom',\n\n    /**\n     * @prop {string} [x='left']\n     * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n     * Change this if your popper should grow in a direction different from `right`\n     */\n    y: 'right'\n  },\n\n  /**\n   * Applies the computed styles to the popper element.\n   *\n   * All the DOM manipulations are limited to this modifier. This is useful in case\n   * you want to integrate Popper.js inside a framework or view library and you\n   * want to delegate all the DOM manipulations to it.\n   *\n   * Note that if you disable this modifier, you must make sure the popper element\n   * has its position set to `absolute` before Popper.js can do its work!\n   *\n   * Just disable this modifier and define your own to achieve the desired effect.\n   *\n   * @memberof modifiers\n   * @inner\n   */\n  applyStyle: {\n    /** @prop {number} order=900 - Index used to define the order of execution */\n    order: 900,\n\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n\n    /** @prop {ModifierFn} */\n    fn: applyStyle,\n\n    /** @prop {Function} */\n    onLoad: applyStyleOnLoad,\n\n    /**\n     * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n     * @prop {Boolean} gpuAcceleration=true\n     * If true, it uses the CSS 3D transformation to position the popper.\n     * Otherwise, it will use the `top` and `left` properties\n     */\n    gpuAcceleration: undefined\n  }\n};\n/**\n * The `dataObject` is an object containing all the information used by Popper.js.\n * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n\n/**\n * Default options provided to Popper.js constructor.<br />\n * These can be overridden using the `options` argument of Popper.js.<br />\n * To override an option, simply pass an object with the same\n * structure of the `options` object, as the 3rd argument. For example:\n * ```\n * new Popper(ref, pop, {\n *   modifiers: {\n *     preventOverflow: { enabled: false }\n *   }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\n\nvar Defaults = {\n  /**\n   * Popper's placement.\n   * @prop {Popper.placements} placement='bottom'\n   */\n  placement: 'bottom',\n\n  /**\n   * Set this to true if you want popper to position it self in 'fixed' mode\n   * @prop {Boolean} positionFixed=false\n   */\n  positionFixed: false,\n\n  /**\n   * Whether events (resize, scroll) are initially enabled.\n   * @prop {Boolean} eventsEnabled=true\n   */\n  eventsEnabled: true,\n\n  /**\n   * Set to true if you want to automatically remove the popper when\n   * you call the `destroy` method.\n   * @prop {Boolean} removeOnDestroy=false\n   */\n  removeOnDestroy: false,\n\n  /**\n   * Callback called when the popper is created.<br />\n   * By default, it is set to no-op.<br />\n   * Access Popper.js instance with `data.instance`.\n   * @prop {onCreate}\n   */\n  onCreate: function onCreate() {},\n\n  /**\n   * Callback called when the popper is updated. This callback is not called\n   * on the initialization/creation of the popper, but only on subsequent\n   * updates.<br />\n   * By default, it is set to no-op.<br />\n   * Access Popper.js instance with `data.instance`.\n   * @prop {onUpdate}\n   */\n  onUpdate: function onUpdate() {},\n\n  /**\n   * List of modifiers used to modify the offsets before they are applied to the popper.\n   * They provide most of the functionalities of Popper.js.\n   * @prop {modifiers}\n   */\n  modifiers: modifiers\n};\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n// Utils\n// Methods\n\nvar Popper = function () {\n  /**\n   * Creates a new Popper.js instance.\n   * @class Popper\n   * @param {Element|referenceObject} reference - The reference element used to position the popper\n   * @param {Element} popper - The HTML / XML element used as the popper\n   * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n   * @return {Object} instance - The generated Popper.js instance\n   */\n  function Popper(reference, popper) {\n    var _this = this;\n\n    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    classCallCheck(this, Popper);\n\n    this.scheduleUpdate = function () {\n      return requestAnimationFrame(_this.update);\n    }; // make update() debounced, so that it only runs at most once-per-tick\n\n\n    this.update = debounce(this.update.bind(this)); // with {} we create a new object with the options inside it\n\n    this.options = _extends({}, Popper.Defaults, options); // init state\n\n    this.state = {\n      isDestroyed: false,\n      isCreated: false,\n      scrollParents: []\n    }; // get reference and popper elements (allow jQuery wrappers)\n\n    this.reference = reference && reference.jquery ? reference[0] : reference;\n    this.popper = popper && popper.jquery ? popper[0] : popper; // Deep merge modifiers options\n\n    this.options.modifiers = {};\n    Object.keys(_extends({}, Popper.Defaults.modifiers, options.modifiers)).forEach(function (name) {\n      _this.options.modifiers[name] = _extends({}, Popper.Defaults.modifiers[name] || {}, options.modifiers ? options.modifiers[name] : {});\n    }); // Refactoring modifiers' list (Object => Array)\n\n    this.modifiers = Object.keys(this.options.modifiers).map(function (name) {\n      return _extends({\n        name: name\n      }, _this.options.modifiers[name]);\n    }) // sort the modifiers by order\n    .sort(function (a, b) {\n      return a.order - b.order;\n    }); // modifiers have the ability to execute arbitrary code when Popper.js get inited\n    // such code is executed in the same order of its modifier\n    // they could add new properties to their options configuration\n    // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n\n    this.modifiers.forEach(function (modifierOptions) {\n      if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n        modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state);\n      }\n    }); // fire the first update to position the popper in the right place\n\n    this.update();\n    var eventsEnabled = this.options.eventsEnabled;\n\n    if (eventsEnabled) {\n      // setup event listeners, they will take care of update the position in specific situations\n      this.enableEventListeners();\n    }\n\n    this.state.eventsEnabled = eventsEnabled;\n  } // We can't use class properties because they don't get listed in the\n  // class prototype and break stuff like Sinon stubs\n\n\n  createClass(Popper, [{\n    key: 'update',\n    value: function update$$1() {\n      return update.call(this);\n    }\n  }, {\n    key: 'destroy',\n    value: function destroy$$1() {\n      return destroy.call(this);\n    }\n  }, {\n    key: 'enableEventListeners',\n    value: function enableEventListeners$$1() {\n      return enableEventListeners.call(this);\n    }\n  }, {\n    key: 'disableEventListeners',\n    value: function disableEventListeners$$1() {\n      return disableEventListeners.call(this);\n    }\n    /**\n     * Schedules an update. It will run on the next UI update available.\n     * @method scheduleUpdate\n     * @memberof Popper\n     */\n\n    /**\n     * Collection of utilities useful when writing custom modifiers.\n     * Starting from version 1.7, this method is available only if you\n     * include `popper-utils.js` before `popper.js`.\n     *\n     * **DEPRECATION**: This way to access PopperUtils is deprecated\n     * and will be removed in v2! Use the PopperUtils module directly instead.\n     * Due to the high instability of the methods contained in Utils, we can't\n     * guarantee them to follow semver. Use them at your own risk!\n     * @static\n     * @private\n     * @type {Object}\n     * @deprecated since version 1.8\n     * @member Utils\n     * @memberof Popper\n     */\n\n  }]);\n  return Popper;\n}();\n/**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node.<br />\n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10.\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\n\n\nPopper.Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\nPopper.placements = placements;\nPopper.Defaults = Defaults;\nexport default Popper;","class TestApi {\n  constructor(elementId) {\n    this.element = $(elementId);\n  }\n\n  setup() {\n    this.element.click(this.test.bind(this));\n    $(\"#user_api, #user_api_key, #user_api_user, #user_domain\").change(this.reset.bind(this));\n  }\n\n  test() {\n    this.processing();\n    const data = {\n      api: $(\"#user_api\").val(),\n      api_key: $(\"#user_api_key\").val(),\n      api_user: $(\"#user_api_user\").val(),\n      domain: $(\"#user_domain\").val(),\n    };\n    $.post(this.element.attr(\"href\"), data).done(this.success.bind(this)).fail(this.fail.bind(this));\n    return false;\n  }\n\n  processing() {\n    this.reset();\n    $(\".test-api-untested\").addClass(\"d-none\");\n    $(\".test-api-processing\").removeClass(\"d-none\");\n  }\n\n  success() {\n    this.reset();\n    $(\".test-api-btn\").removeClass(\"btn-outline-dark\").addClass(\"btn-outline-success\");\n    $(\".test-api-success\").removeClass(\"d-none\");\n    $(\".test-api-untested\").addClass(\"d-none\");\n  }\n\n  fail() {\n    this.reset();\n    $(\".test-api-btn\").removeClass(\"btn-outline-dark\").addClass(\"btn-outline-danger\");\n    $(\".test-api-failed\").removeClass(\"d-none\");\n    $(\".test-api-untested\").addClass(\"d-none\");\n  }\n\n  reset() {\n    $(\".test-api-btn\").addClass(\"btn-outline-dark\").removeClass(\"btn-outline-danger btn-outline-success\");\n    $(\".test-api-icon\").addClass(\"d-none\");\n    $(\".test-api-untested\").removeClass(\"d-none\");\n  }\n}\n\nif (typeof module !== \"undefined\") module.exports = TestApi;\n","/*!\n * clipboard.js v2.0.10\n * https://clipboardjs.com/\n *\n * Licensed MIT © Zeno Rocha\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n  if (typeof exports === 'object' && typeof module === 'object') module.exports = factory();else if (typeof define === 'function' && define.amd) define([], factory);else if (typeof exports === 'object') exports[\"ClipboardJS\"] = factory();else root[\"ClipboardJS\"] = factory();\n})(this, function () {\n  return (\n    /******/\n    function () {\n      // webpackBootstrap\n\n      /******/\n      var __webpack_modules__ = {\n        /***/\n        686:\n        /***/\n        function (__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n          \"use strict\"; // EXPORTS\n\n          __webpack_require__.d(__webpack_exports__, {\n            \"default\": function () {\n              return (\n                /* binding */\n                clipboard\n              );\n            }\n          }); // EXTERNAL MODULE: ./node_modules/tiny-emitter/index.js\n\n\n          var tiny_emitter = __webpack_require__(279);\n\n          var tiny_emitter_default = /*#__PURE__*/__webpack_require__.n(tiny_emitter); // EXTERNAL MODULE: ./node_modules/good-listener/src/listen.js\n\n\n          var listen = __webpack_require__(370);\n\n          var listen_default = /*#__PURE__*/__webpack_require__.n(listen); // EXTERNAL MODULE: ./node_modules/select/src/select.js\n\n\n          var src_select = __webpack_require__(817);\n\n          var select_default = /*#__PURE__*/__webpack_require__.n(src_select);\n\n          ; // CONCATENATED MODULE: ./src/common/command.js\n\n          /**\n           * Executes a given operation type.\n           * @param {String} type\n           * @return {Boolean}\n           */\n\n          function command(type) {\n            try {\n              return document.execCommand(type);\n            } catch (err) {\n              return false;\n            }\n          }\n\n          ; // CONCATENATED MODULE: ./src/actions/cut.js\n\n          /**\n           * Cut action wrapper.\n           * @param {String|HTMLElement} target\n           * @return {String}\n           */\n\n          var ClipboardActionCut = function ClipboardActionCut(target) {\n            var selectedText = select_default()(target);\n            command('cut');\n            return selectedText;\n          };\n          /* harmony default export */\n\n\n          var actions_cut = ClipboardActionCut;\n          ; // CONCATENATED MODULE: ./src/common/create-fake-element.js\n\n          /**\n           * Creates a fake textarea element with a value.\n           * @param {String} value\n           * @return {HTMLElement}\n           */\n\n          function createFakeElement(value) {\n            var isRTL = document.documentElement.getAttribute('dir') === 'rtl';\n            var fakeElement = document.createElement('textarea'); // Prevent zooming on iOS\n\n            fakeElement.style.fontSize = '12pt'; // Reset box model\n\n            fakeElement.style.border = '0';\n            fakeElement.style.padding = '0';\n            fakeElement.style.margin = '0'; // Move element out of screen horizontally\n\n            fakeElement.style.position = 'absolute';\n            fakeElement.style[isRTL ? 'right' : 'left'] = '-9999px'; // Move element to the same position vertically\n\n            var yPosition = window.pageYOffset || document.documentElement.scrollTop;\n            fakeElement.style.top = \"\".concat(yPosition, \"px\");\n            fakeElement.setAttribute('readonly', '');\n            fakeElement.value = value;\n            return fakeElement;\n          }\n\n          ; // CONCATENATED MODULE: ./src/actions/copy.js\n\n          /**\n           * Copy action wrapper.\n           * @param {String|HTMLElement} target\n           * @param {Object} options\n           * @return {String}\n           */\n\n          var ClipboardActionCopy = function ClipboardActionCopy(target) {\n            var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n              container: document.body\n            };\n            var selectedText = '';\n\n            if (typeof target === 'string') {\n              var fakeElement = createFakeElement(target);\n              options.container.appendChild(fakeElement);\n              selectedText = select_default()(fakeElement);\n              command('copy');\n              fakeElement.remove();\n            } else {\n              selectedText = select_default()(target);\n              command('copy');\n            }\n\n            return selectedText;\n          };\n          /* harmony default export */\n\n\n          var actions_copy = ClipboardActionCopy;\n          ; // CONCATENATED MODULE: ./src/actions/default.js\n\n          function _typeof(obj) {\n            \"@babel/helpers - typeof\";\n\n            if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n              _typeof = function _typeof(obj) {\n                return typeof obj;\n              };\n            } else {\n              _typeof = function _typeof(obj) {\n                return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n              };\n            }\n\n            return _typeof(obj);\n          }\n          /**\n           * Inner function which performs selection from either `text` or `target`\n           * properties and then executes copy or cut operations.\n           * @param {Object} options\n           */\n\n\n          var ClipboardActionDefault = function ClipboardActionDefault() {\n            var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; // Defines base properties passed from constructor.\n\n            var _options$action = options.action,\n                action = _options$action === void 0 ? 'copy' : _options$action,\n                container = options.container,\n                target = options.target,\n                text = options.text; // Sets the `action` to be performed which can be either 'copy' or 'cut'.\n\n            if (action !== 'copy' && action !== 'cut') {\n              throw new Error('Invalid \"action\" value, use either \"copy\" or \"cut\"');\n            } // Sets the `target` property using an element that will be have its content copied.\n\n\n            if (target !== undefined) {\n              if (target && _typeof(target) === 'object' && target.nodeType === 1) {\n                if (action === 'copy' && target.hasAttribute('disabled')) {\n                  throw new Error('Invalid \"target\" attribute. Please use \"readonly\" instead of \"disabled\" attribute');\n                }\n\n                if (action === 'cut' && (target.hasAttribute('readonly') || target.hasAttribute('disabled'))) {\n                  throw new Error('Invalid \"target\" attribute. You can\\'t cut text from elements with \"readonly\" or \"disabled\" attributes');\n                }\n              } else {\n                throw new Error('Invalid \"target\" value, use a valid Element');\n              }\n            } // Define selection strategy based on `text` property.\n\n\n            if (text) {\n              return actions_copy(text, {\n                container: container\n              });\n            } // Defines which selection strategy based on `target` property.\n\n\n            if (target) {\n              return action === 'cut' ? actions_cut(target) : actions_copy(target, {\n                container: container\n              });\n            }\n          };\n          /* harmony default export */\n\n\n          var actions_default = ClipboardActionDefault;\n          ; // CONCATENATED MODULE: ./src/clipboard.js\n\n          function clipboard_typeof(obj) {\n            \"@babel/helpers - typeof\";\n\n            if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n              clipboard_typeof = function _typeof(obj) {\n                return typeof obj;\n              };\n            } else {\n              clipboard_typeof = function _typeof(obj) {\n                return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n              };\n            }\n\n            return clipboard_typeof(obj);\n          }\n\n          function _classCallCheck(instance, Constructor) {\n            if (!(instance instanceof Constructor)) {\n              throw new TypeError(\"Cannot call a class as a function\");\n            }\n          }\n\n          function _defineProperties(target, props) {\n            for (var i = 0; i < props.length; i++) {\n              var descriptor = props[i];\n              descriptor.enumerable = descriptor.enumerable || false;\n              descriptor.configurable = true;\n              if (\"value\" in descriptor) descriptor.writable = true;\n              Object.defineProperty(target, descriptor.key, descriptor);\n            }\n          }\n\n          function _createClass(Constructor, protoProps, staticProps) {\n            if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n            if (staticProps) _defineProperties(Constructor, staticProps);\n            return Constructor;\n          }\n\n          function _inherits(subClass, superClass) {\n            if (typeof superClass !== \"function\" && superClass !== null) {\n              throw new TypeError(\"Super expression must either be null or a function\");\n            }\n\n            subClass.prototype = Object.create(superClass && superClass.prototype, {\n              constructor: {\n                value: subClass,\n                writable: true,\n                configurable: true\n              }\n            });\n            if (superClass) _setPrototypeOf(subClass, superClass);\n          }\n\n          function _setPrototypeOf(o, p) {\n            _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n              o.__proto__ = p;\n              return o;\n            };\n\n            return _setPrototypeOf(o, p);\n          }\n\n          function _createSuper(Derived) {\n            var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n            return function _createSuperInternal() {\n              var Super = _getPrototypeOf(Derived),\n                  result;\n\n              if (hasNativeReflectConstruct) {\n                var NewTarget = _getPrototypeOf(this).constructor;\n\n                result = Reflect.construct(Super, arguments, NewTarget);\n              } else {\n                result = Super.apply(this, arguments);\n              }\n\n              return _possibleConstructorReturn(this, result);\n            };\n          }\n\n          function _possibleConstructorReturn(self, call) {\n            if (call && (clipboard_typeof(call) === \"object\" || typeof call === \"function\")) {\n              return call;\n            }\n\n            return _assertThisInitialized(self);\n          }\n\n          function _assertThisInitialized(self) {\n            if (self === void 0) {\n              throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n            }\n\n            return self;\n          }\n\n          function _isNativeReflectConstruct() {\n            if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n            if (Reflect.construct.sham) return false;\n            if (typeof Proxy === \"function\") return true;\n\n            try {\n              Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n              return true;\n            } catch (e) {\n              return false;\n            }\n          }\n\n          function _getPrototypeOf(o) {\n            _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n              return o.__proto__ || Object.getPrototypeOf(o);\n            };\n            return _getPrototypeOf(o);\n          }\n          /**\n           * Helper function to retrieve attribute value.\n           * @param {String} suffix\n           * @param {Element} element\n           */\n\n\n          function getAttributeValue(suffix, element) {\n            var attribute = \"data-clipboard-\".concat(suffix);\n\n            if (!element.hasAttribute(attribute)) {\n              return;\n            }\n\n            return element.getAttribute(attribute);\n          }\n          /**\n           * Base class which takes one or more elements, adds event listeners to them,\n           * and instantiates a new `ClipboardAction` on each click.\n           */\n\n\n          var Clipboard = /*#__PURE__*/function (_Emitter) {\n            _inherits(Clipboard, _Emitter);\n\n            var _super = _createSuper(Clipboard);\n            /**\n             * @param {String|HTMLElement|HTMLCollection|NodeList} trigger\n             * @param {Object} options\n             */\n\n\n            function Clipboard(trigger, options) {\n              var _this;\n\n              _classCallCheck(this, Clipboard);\n\n              _this = _super.call(this);\n\n              _this.resolveOptions(options);\n\n              _this.listenClick(trigger);\n\n              return _this;\n            }\n            /**\n             * Defines if attributes would be resolved using internal setter functions\n             * or custom functions that were passed in the constructor.\n             * @param {Object} options\n             */\n\n\n            _createClass(Clipboard, [{\n              key: \"resolveOptions\",\n              value: function resolveOptions() {\n                var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n                this.action = typeof options.action === 'function' ? options.action : this.defaultAction;\n                this.target = typeof options.target === 'function' ? options.target : this.defaultTarget;\n                this.text = typeof options.text === 'function' ? options.text : this.defaultText;\n                this.container = clipboard_typeof(options.container) === 'object' ? options.container : document.body;\n              }\n              /**\n               * Adds a click event listener to the passed trigger.\n               * @param {String|HTMLElement|HTMLCollection|NodeList} trigger\n               */\n\n            }, {\n              key: \"listenClick\",\n              value: function listenClick(trigger) {\n                var _this2 = this;\n\n                this.listener = listen_default()(trigger, 'click', function (e) {\n                  return _this2.onClick(e);\n                });\n              }\n              /**\n               * Defines a new `ClipboardAction` on each click event.\n               * @param {Event} e\n               */\n\n            }, {\n              key: \"onClick\",\n              value: function onClick(e) {\n                var trigger = e.delegateTarget || e.currentTarget;\n                var action = this.action(trigger) || 'copy';\n                var text = actions_default({\n                  action: action,\n                  container: this.container,\n                  target: this.target(trigger),\n                  text: this.text(trigger)\n                }); // Fires an event based on the copy operation result.\n\n                this.emit(text ? 'success' : 'error', {\n                  action: action,\n                  text: text,\n                  trigger: trigger,\n                  clearSelection: function clearSelection() {\n                    if (trigger) {\n                      trigger.focus();\n                    }\n\n                    document.activeElement.blur();\n                    window.getSelection().removeAllRanges();\n                  }\n                });\n              }\n              /**\n               * Default `action` lookup function.\n               * @param {Element} trigger\n               */\n\n            }, {\n              key: \"defaultAction\",\n              value: function defaultAction(trigger) {\n                return getAttributeValue('action', trigger);\n              }\n              /**\n               * Default `target` lookup function.\n               * @param {Element} trigger\n               */\n\n            }, {\n              key: \"defaultTarget\",\n              value: function defaultTarget(trigger) {\n                var selector = getAttributeValue('target', trigger);\n\n                if (selector) {\n                  return document.querySelector(selector);\n                }\n              }\n              /**\n               * Allow fire programmatically a copy action\n               * @param {String|HTMLElement} target\n               * @param {Object} options\n               * @returns Text copied.\n               */\n\n            }, {\n              key: \"defaultText\",\n\n              /**\n               * Default `text` lookup function.\n               * @param {Element} trigger\n               */\n              value: function defaultText(trigger) {\n                return getAttributeValue('text', trigger);\n              }\n              /**\n               * Destroy lifecycle.\n               */\n\n            }, {\n              key: \"destroy\",\n              value: function destroy() {\n                this.listener.destroy();\n              }\n            }], [{\n              key: \"copy\",\n              value: function copy(target) {\n                var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n                  container: document.body\n                };\n                return actions_copy(target, options);\n              }\n              /**\n               * Allow fire programmatically a cut action\n               * @param {String|HTMLElement} target\n               * @returns Text cutted.\n               */\n\n            }, {\n              key: \"cut\",\n              value: function cut(target) {\n                return actions_cut(target);\n              }\n              /**\n               * Returns the support of the given action, or all actions if no action is\n               * given.\n               * @param {String} [action]\n               */\n\n            }, {\n              key: \"isSupported\",\n              value: function isSupported() {\n                var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['copy', 'cut'];\n                var actions = typeof action === 'string' ? [action] : action;\n                var support = !!document.queryCommandSupported;\n                actions.forEach(function (action) {\n                  support = support && !!document.queryCommandSupported(action);\n                });\n                return support;\n              }\n            }]);\n\n            return Clipboard;\n          }(tiny_emitter_default());\n          /* harmony default export */\n\n\n          var clipboard = Clipboard;\n          /***/\n        },\n\n        /***/\n        828:\n        /***/\n        function (module) {\n          var DOCUMENT_NODE_TYPE = 9;\n          /**\n           * A polyfill for Element.matches()\n           */\n\n          if (typeof Element !== 'undefined' && !Element.prototype.matches) {\n            var proto = Element.prototype;\n            proto.matches = proto.matchesSelector || proto.mozMatchesSelector || proto.msMatchesSelector || proto.oMatchesSelector || proto.webkitMatchesSelector;\n          }\n          /**\n           * Finds the closest parent that matches a selector.\n           *\n           * @param {Element} element\n           * @param {String} selector\n           * @return {Function}\n           */\n\n\n          function closest(element, selector) {\n            while (element && element.nodeType !== DOCUMENT_NODE_TYPE) {\n              if (typeof element.matches === 'function' && element.matches(selector)) {\n                return element;\n              }\n\n              element = element.parentNode;\n            }\n          }\n\n          module.exports = closest;\n          /***/\n        },\n\n        /***/\n        438:\n        /***/\n        function (module, __unused_webpack_exports, __webpack_require__) {\n          var closest = __webpack_require__(828);\n          /**\n           * Delegates event to a selector.\n           *\n           * @param {Element} element\n           * @param {String} selector\n           * @param {String} type\n           * @param {Function} callback\n           * @param {Boolean} useCapture\n           * @return {Object}\n           */\n\n\n          function _delegate(element, selector, type, callback, useCapture) {\n            var listenerFn = listener.apply(this, arguments);\n            element.addEventListener(type, listenerFn, useCapture);\n            return {\n              destroy: function () {\n                element.removeEventListener(type, listenerFn, useCapture);\n              }\n            };\n          }\n          /**\n           * Delegates event to a selector.\n           *\n           * @param {Element|String|Array} [elements]\n           * @param {String} selector\n           * @param {String} type\n           * @param {Function} callback\n           * @param {Boolean} useCapture\n           * @return {Object}\n           */\n\n\n          function delegate(elements, selector, type, callback, useCapture) {\n            // Handle the regular Element usage\n            if (typeof elements.addEventListener === 'function') {\n              return _delegate.apply(null, arguments);\n            } // Handle Element-less usage, it defaults to global delegation\n\n\n            if (typeof type === 'function') {\n              // Use `document` as the first parameter, then apply arguments\n              // This is a short way to .unshift `arguments` without running into deoptimizations\n              return _delegate.bind(null, document).apply(null, arguments);\n            } // Handle Selector-based usage\n\n\n            if (typeof elements === 'string') {\n              elements = document.querySelectorAll(elements);\n            } // Handle Array-like based usage\n\n\n            return Array.prototype.map.call(elements, function (element) {\n              return _delegate(element, selector, type, callback, useCapture);\n            });\n          }\n          /**\n           * Finds closest match and invokes callback.\n           *\n           * @param {Element} element\n           * @param {String} selector\n           * @param {String} type\n           * @param {Function} callback\n           * @return {Function}\n           */\n\n\n          function listener(element, selector, type, callback) {\n            return function (e) {\n              e.delegateTarget = closest(e.target, selector);\n\n              if (e.delegateTarget) {\n                callback.call(element, e);\n              }\n            };\n          }\n\n          module.exports = delegate;\n          /***/\n        },\n\n        /***/\n        879:\n        /***/\n        function (__unused_webpack_module, exports) {\n          /**\n           * Check if argument is a HTML element.\n           *\n           * @param {Object} value\n           * @return {Boolean}\n           */\n          exports.node = function (value) {\n            return value !== undefined && value instanceof HTMLElement && value.nodeType === 1;\n          };\n          /**\n           * Check if argument is a list of HTML elements.\n           *\n           * @param {Object} value\n           * @return {Boolean}\n           */\n\n\n          exports.nodeList = function (value) {\n            var type = Object.prototype.toString.call(value);\n            return value !== undefined && (type === '[object NodeList]' || type === '[object HTMLCollection]') && 'length' in value && (value.length === 0 || exports.node(value[0]));\n          };\n          /**\n           * Check if argument is a string.\n           *\n           * @param {Object} value\n           * @return {Boolean}\n           */\n\n\n          exports.string = function (value) {\n            return typeof value === 'string' || value instanceof String;\n          };\n          /**\n           * Check if argument is a function.\n           *\n           * @param {Object} value\n           * @return {Boolean}\n           */\n\n\n          exports.fn = function (value) {\n            var type = Object.prototype.toString.call(value);\n            return type === '[object Function]';\n          };\n          /***/\n\n        },\n\n        /***/\n        370:\n        /***/\n        function (module, __unused_webpack_exports, __webpack_require__) {\n          var is = __webpack_require__(879);\n\n          var delegate = __webpack_require__(438);\n          /**\n           * Validates all params and calls the right\n           * listener function based on its target type.\n           *\n           * @param {String|HTMLElement|HTMLCollection|NodeList} target\n           * @param {String} type\n           * @param {Function} callback\n           * @return {Object}\n           */\n\n\n          function listen(target, type, callback) {\n            if (!target && !type && !callback) {\n              throw new Error('Missing required arguments');\n            }\n\n            if (!is.string(type)) {\n              throw new TypeError('Second argument must be a String');\n            }\n\n            if (!is.fn(callback)) {\n              throw new TypeError('Third argument must be a Function');\n            }\n\n            if (is.node(target)) {\n              return listenNode(target, type, callback);\n            } else if (is.nodeList(target)) {\n              return listenNodeList(target, type, callback);\n            } else if (is.string(target)) {\n              return listenSelector(target, type, callback);\n            } else {\n              throw new TypeError('First argument must be a String, HTMLElement, HTMLCollection, or NodeList');\n            }\n          }\n          /**\n           * Adds an event listener to a HTML element\n           * and returns a remove listener function.\n           *\n           * @param {HTMLElement} node\n           * @param {String} type\n           * @param {Function} callback\n           * @return {Object}\n           */\n\n\n          function listenNode(node, type, callback) {\n            node.addEventListener(type, callback);\n            return {\n              destroy: function () {\n                node.removeEventListener(type, callback);\n              }\n            };\n          }\n          /**\n           * Add an event listener to a list of HTML elements\n           * and returns a remove listener function.\n           *\n           * @param {NodeList|HTMLCollection} nodeList\n           * @param {String} type\n           * @param {Function} callback\n           * @return {Object}\n           */\n\n\n          function listenNodeList(nodeList, type, callback) {\n            Array.prototype.forEach.call(nodeList, function (node) {\n              node.addEventListener(type, callback);\n            });\n            return {\n              destroy: function () {\n                Array.prototype.forEach.call(nodeList, function (node) {\n                  node.removeEventListener(type, callback);\n                });\n              }\n            };\n          }\n          /**\n           * Add an event listener to a selector\n           * and returns a remove listener function.\n           *\n           * @param {String} selector\n           * @param {String} type\n           * @param {Function} callback\n           * @return {Object}\n           */\n\n\n          function listenSelector(selector, type, callback) {\n            return delegate(document.body, selector, type, callback);\n          }\n\n          module.exports = listen;\n          /***/\n        },\n\n        /***/\n        817:\n        /***/\n        function (module) {\n          function select(element) {\n            var selectedText;\n\n            if (element.nodeName === 'SELECT') {\n              element.focus();\n              selectedText = element.value;\n            } else if (element.nodeName === 'INPUT' || element.nodeName === 'TEXTAREA') {\n              var isReadOnly = element.hasAttribute('readonly');\n\n              if (!isReadOnly) {\n                element.setAttribute('readonly', '');\n              }\n\n              element.select();\n              element.setSelectionRange(0, element.value.length);\n\n              if (!isReadOnly) {\n                element.removeAttribute('readonly');\n              }\n\n              selectedText = element.value;\n            } else {\n              if (element.hasAttribute('contenteditable')) {\n                element.focus();\n              }\n\n              var selection = window.getSelection();\n              var range = document.createRange();\n              range.selectNodeContents(element);\n              selection.removeAllRanges();\n              selection.addRange(range);\n              selectedText = selection.toString();\n            }\n\n            return selectedText;\n          }\n\n          module.exports = select;\n          /***/\n        },\n\n        /***/\n        279:\n        /***/\n        function (module) {\n          function E() {// Keep this empty so it's easier to inherit from\n            // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)\n          }\n\n          E.prototype = {\n            on: function (name, callback, ctx) {\n              var e = this.e || (this.e = {});\n              (e[name] || (e[name] = [])).push({\n                fn: callback,\n                ctx: ctx\n              });\n              return this;\n            },\n            once: function (name, callback, ctx) {\n              var self = this;\n\n              function listener() {\n                self.off(name, listener);\n                callback.apply(ctx, arguments);\n              }\n\n              ;\n              listener._ = callback;\n              return this.on(name, listener, ctx);\n            },\n            emit: function (name) {\n              var data = [].slice.call(arguments, 1);\n              var evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n              var i = 0;\n              var len = evtArr.length;\n\n              for (i; i < len; i++) {\n                evtArr[i].fn.apply(evtArr[i].ctx, data);\n              }\n\n              return this;\n            },\n            off: function (name, callback) {\n              var e = this.e || (this.e = {});\n              var evts = e[name];\n              var liveEvents = [];\n\n              if (evts && callback) {\n                for (var i = 0, len = evts.length; i < len; i++) {\n                  if (evts[i].fn !== callback && evts[i].fn._ !== callback) liveEvents.push(evts[i]);\n                }\n              } // Remove event from queue to prevent memory leak\n              // Suggested by https://github.com/lazd\n              // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910\n\n\n              liveEvents.length ? e[name] = liveEvents : delete e[name];\n              return this;\n            }\n          };\n          module.exports = E;\n          module.exports.TinyEmitter = E;\n          /***/\n        }\n        /******/\n\n      };\n      /************************************************************************/\n\n      /******/\n      // The module cache\n\n      /******/\n\n      var __webpack_module_cache__ = {};\n      /******/\n\n      /******/\n      // The require function\n\n      /******/\n\n      function __webpack_require__(moduleId) {\n        /******/\n        // Check if module is in cache\n\n        /******/\n        if (__webpack_module_cache__[moduleId]) {\n          /******/\n          return __webpack_module_cache__[moduleId].exports;\n          /******/\n        }\n        /******/\n        // Create a new module (and put it into the cache)\n\n        /******/\n\n\n        var module = __webpack_module_cache__[moduleId] = {\n          /******/\n          // no module.id needed\n\n          /******/\n          // no module.loaded needed\n\n          /******/\n          exports: {}\n          /******/\n\n        };\n        /******/\n\n        /******/\n        // Execute the module function\n\n        /******/\n\n        __webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n        /******/\n\n        /******/\n        // Return the exports of the module\n\n        /******/\n\n\n        return module.exports;\n        /******/\n      }\n      /******/\n\n      /************************************************************************/\n\n      /******/\n\n      /* webpack/runtime/compat get default export */\n\n      /******/\n\n\n      !function () {\n        /******/\n        // getDefaultExport function for compatibility with non-harmony modules\n\n        /******/\n        __webpack_require__.n = function (module) {\n          /******/\n          var getter = module && module.__esModule ?\n          /******/\n          function () {\n            return module['default'];\n          } :\n          /******/\n          function () {\n            return module;\n          };\n          /******/\n\n          __webpack_require__.d(getter, {\n            a: getter\n          });\n          /******/\n\n\n          return getter;\n          /******/\n        };\n        /******/\n\n      }();\n      /******/\n\n      /******/\n\n      /* webpack/runtime/define property getters */\n\n      /******/\n\n      !function () {\n        /******/\n        // define getter functions for harmony exports\n\n        /******/\n        __webpack_require__.d = function (exports, definition) {\n          /******/\n          for (var key in definition) {\n            /******/\n            if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n              /******/\n              Object.defineProperty(exports, key, {\n                enumerable: true,\n                get: definition[key]\n              });\n              /******/\n            }\n            /******/\n\n          }\n          /******/\n\n        };\n        /******/\n\n      }();\n      /******/\n\n      /******/\n\n      /* webpack/runtime/hasOwnProperty shorthand */\n\n      /******/\n\n      !function () {\n        /******/\n        __webpack_require__.o = function (obj, prop) {\n          return Object.prototype.hasOwnProperty.call(obj, prop);\n        };\n        /******/\n\n      }();\n      /******/\n\n      /************************************************************************/\n\n      /******/\n      // module exports must be returned from runtime so entry inlining is disabled\n\n      /******/\n      // startup\n\n      /******/\n      // Load entry module and return exports\n\n      /******/\n\n      return __webpack_require__(686);\n      /******/\n    }().default\n  );\n});","/*\nUnobtrusive JavaScript\nhttps://github.com/rails/rails/blob/main/actionview/app/javascript\nReleased under the MIT license\n */\nconst linkClickSelector = \"a[data-confirm], a[data-method], a[data-remote]:not([disabled]), a[data-disable-with], a[data-disable]\";\nconst buttonClickSelector = {\n  selector: \"button[data-remote]:not([form]), button[data-confirm]:not([form])\",\n  exclude: \"form button\"\n};\nconst inputChangeSelector = \"select[data-remote], input[data-remote], textarea[data-remote]\";\nconst formSubmitSelector = \"form:not([data-turbo=true])\";\nconst formInputClickSelector = \"form:not([data-turbo=true]) input[type=submit], form:not([data-turbo=true]) input[type=image], form:not([data-turbo=true]) button[type=submit], form:not([data-turbo=true]) button:not([type]), input[type=submit][form], input[type=image][form], button[type=submit][form], button[form]:not([type])\";\nconst formDisableSelector = \"input[data-disable-with]:enabled, button[data-disable-with]:enabled, textarea[data-disable-with]:enabled, input[data-disable]:enabled, button[data-disable]:enabled, textarea[data-disable]:enabled\";\nconst formEnableSelector = \"input[data-disable-with]:disabled, button[data-disable-with]:disabled, textarea[data-disable-with]:disabled, input[data-disable]:disabled, button[data-disable]:disabled, textarea[data-disable]:disabled\";\nconst fileInputSelector = \"input[name][type=file]:not([disabled])\";\nconst linkDisableSelector = \"a[data-disable-with], a[data-disable]\";\nconst buttonDisableSelector = \"button[data-remote][data-disable-with], button[data-remote][data-disable]\";\nlet nonce = null;\n\nconst loadCSPNonce = () => {\n  const metaTag = document.querySelector(\"meta[name=csp-nonce]\");\n  return nonce = metaTag && metaTag.content;\n};\n\nconst cspNonce = () => nonce || loadCSPNonce();\n\nconst m = Element.prototype.matches || Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector;\n\nconst matches = function (element, selector) {\n  if (selector.exclude) {\n    return m.call(element, selector.selector) && !m.call(element, selector.exclude);\n  } else {\n    return m.call(element, selector);\n  }\n};\n\nconst EXPANDO = \"_ujsData\";\n\nconst getData = (element, key) => element[EXPANDO] ? element[EXPANDO][key] : undefined;\n\nconst setData = function (element, key, value) {\n  if (!element[EXPANDO]) {\n    element[EXPANDO] = {};\n  }\n\n  return element[EXPANDO][key] = value;\n};\n\nconst $ = selector => Array.prototype.slice.call(document.querySelectorAll(selector));\n\nconst isContentEditable = function (element) {\n  var isEditable = false;\n\n  do {\n    if (element.isContentEditable) {\n      isEditable = true;\n      break;\n    }\n\n    element = element.parentElement;\n  } while (element);\n\n  return isEditable;\n};\n\nconst csrfToken = () => {\n  const meta = document.querySelector(\"meta[name=csrf-token]\");\n  return meta && meta.content;\n};\n\nconst csrfParam = () => {\n  const meta = document.querySelector(\"meta[name=csrf-param]\");\n  return meta && meta.content;\n};\n\nconst CSRFProtection = xhr => {\n  const token = csrfToken();\n\n  if (token) {\n    return xhr.setRequestHeader(\"X-CSRF-Token\", token);\n  }\n};\n\nconst refreshCSRFTokens = () => {\n  const token = csrfToken();\n  const param = csrfParam();\n\n  if (token && param) {\n    return $('form input[name=\"' + param + '\"]').forEach(input => input.value = token);\n  }\n};\n\nconst AcceptHeaders = {\n  \"*\": \"*/*\",\n  text: \"text/plain\",\n  html: \"text/html\",\n  xml: \"application/xml, text/xml\",\n  json: \"application/json, text/javascript\",\n  script: \"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"\n};\n\nconst ajax = options => {\n  options = prepareOptions(options);\n  var xhr = createXHR(options, function () {\n    const response = processResponse(xhr.response != null ? xhr.response : xhr.responseText, xhr.getResponseHeader(\"Content-Type\"));\n\n    if (Math.floor(xhr.status / 100) === 2) {\n      if (typeof options.success === \"function\") {\n        options.success(response, xhr.statusText, xhr);\n      }\n    } else {\n      if (typeof options.error === \"function\") {\n        options.error(response, xhr.statusText, xhr);\n      }\n    }\n\n    return typeof options.complete === \"function\" ? options.complete(xhr, xhr.statusText) : undefined;\n  });\n\n  if (options.beforeSend && !options.beforeSend(xhr, options)) {\n    return false;\n  }\n\n  if (xhr.readyState === XMLHttpRequest.OPENED) {\n    return xhr.send(options.data);\n  }\n};\n\nvar prepareOptions = function (options) {\n  options.url = options.url || location.href;\n  options.type = options.type.toUpperCase();\n\n  if (options.type === \"GET\" && options.data) {\n    if (options.url.indexOf(\"?\") < 0) {\n      options.url += \"?\" + options.data;\n    } else {\n      options.url += \"&\" + options.data;\n    }\n  }\n\n  if (!(options.dataType in AcceptHeaders)) {\n    options.dataType = \"*\";\n  }\n\n  options.accept = AcceptHeaders[options.dataType];\n\n  if (options.dataType !== \"*\") {\n    options.accept += \", */*; q=0.01\";\n  }\n\n  return options;\n};\n\nvar createXHR = function (options, done) {\n  const xhr = new XMLHttpRequest();\n  xhr.open(options.type, options.url, true);\n  xhr.setRequestHeader(\"Accept\", options.accept);\n\n  if (typeof options.data === \"string\") {\n    xhr.setRequestHeader(\"Content-Type\", \"application/x-www-form-urlencoded; charset=UTF-8\");\n  }\n\n  if (!options.crossDomain) {\n    xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n    CSRFProtection(xhr);\n  }\n\n  xhr.withCredentials = !!options.withCredentials;\n\n  xhr.onreadystatechange = function () {\n    if (xhr.readyState === XMLHttpRequest.DONE) {\n      return done(xhr);\n    }\n  };\n\n  return xhr;\n};\n\nvar processResponse = function (response, type) {\n  if (typeof response === \"string\" && typeof type === \"string\") {\n    if (type.match(/\\bjson\\b/)) {\n      try {\n        response = JSON.parse(response);\n      } catch (error) {}\n    } else if (type.match(/\\b(?:java|ecma)script\\b/)) {\n      const script = document.createElement(\"script\");\n      script.setAttribute(\"nonce\", cspNonce());\n      script.text = response;\n      document.head.appendChild(script).parentNode.removeChild(script);\n    } else if (type.match(/\\b(xml|html|svg)\\b/)) {\n      const parser = new DOMParser();\n      type = type.replace(/;.+/, \"\");\n\n      try {\n        response = parser.parseFromString(response, type);\n      } catch (error1) {}\n    }\n  }\n\n  return response;\n};\n\nconst href = element => element.href;\n\nconst isCrossDomain = function (url) {\n  const originAnchor = document.createElement(\"a\");\n  originAnchor.href = location.href;\n  const urlAnchor = document.createElement(\"a\");\n\n  try {\n    urlAnchor.href = url;\n    return !((!urlAnchor.protocol || urlAnchor.protocol === \":\") && !urlAnchor.host || originAnchor.protocol + \"//\" + originAnchor.host === urlAnchor.protocol + \"//\" + urlAnchor.host);\n  } catch (e) {\n    return true;\n  }\n};\n\nlet preventDefault;\nlet _window = window,\n    CustomEvent = _window.CustomEvent;\n\nif (typeof CustomEvent !== \"function\") {\n  CustomEvent = function (event, params) {\n    const evt = document.createEvent(\"CustomEvent\");\n    evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n    return evt;\n  };\n\n  CustomEvent.prototype = window.Event.prototype;\n  preventDefault = CustomEvent.prototype.preventDefault;\n\n  CustomEvent.prototype.preventDefault = function () {\n    const result = preventDefault.call(this);\n\n    if (this.cancelable && !this.defaultPrevented) {\n      Object.defineProperty(this, \"defaultPrevented\", {\n        get() {\n          return true;\n        }\n\n      });\n    }\n\n    return result;\n  };\n}\n\nconst fire = (obj, name, data) => {\n  const event = new CustomEvent(name, {\n    bubbles: true,\n    cancelable: true,\n    detail: data\n  });\n  obj.dispatchEvent(event);\n  return !event.defaultPrevented;\n};\n\nconst stopEverything = e => {\n  fire(e.target, \"ujs:everythingStopped\");\n  e.preventDefault();\n  e.stopPropagation();\n  e.stopImmediatePropagation();\n};\n\nconst delegate = (element, selector, eventType, handler) => element.addEventListener(eventType, function (e) {\n  let target = e.target;\n\n  while (!!(target instanceof Element) && !matches(target, selector)) {\n    target = target.parentNode;\n  }\n\n  if (target instanceof Element && handler.call(target, e) === false) {\n    e.preventDefault();\n    e.stopPropagation();\n  }\n});\n\nconst toArray = e => Array.prototype.slice.call(e);\n\nconst serializeElement = (element, additionalParam) => {\n  let inputs = [element];\n\n  if (matches(element, \"form\")) {\n    inputs = toArray(element.elements);\n  }\n\n  const params = [];\n  inputs.forEach(function (input) {\n    if (!input.name || input.disabled) {\n      return;\n    }\n\n    if (matches(input, \"fieldset[disabled] *\")) {\n      return;\n    }\n\n    if (matches(input, \"select\")) {\n      toArray(input.options).forEach(function (option) {\n        if (option.selected) {\n          params.push({\n            name: input.name,\n            value: option.value\n          });\n        }\n      });\n    } else if (input.checked || [\"radio\", \"checkbox\", \"submit\"].indexOf(input.type) === -1) {\n      params.push({\n        name: input.name,\n        value: input.value\n      });\n    }\n  });\n\n  if (additionalParam) {\n    params.push(additionalParam);\n  }\n\n  return params.map(function (param) {\n    if (param.name) {\n      return `${encodeURIComponent(param.name)}=${encodeURIComponent(param.value)}`;\n    } else {\n      return param;\n    }\n  }).join(\"&\");\n};\n\nconst formElements = (form, selector) => {\n  if (matches(form, \"form\")) {\n    return toArray(form.elements).filter(el => matches(el, selector));\n  } else {\n    return toArray(form.querySelectorAll(selector));\n  }\n};\n\nconst handleConfirmWithRails = rails => function (e) {\n  if (!allowAction(this, rails)) {\n    stopEverything(e);\n  }\n};\n\nconst confirm = (message, element) => window.confirm(message);\n\nvar allowAction = function (element, rails) {\n  let callback;\n  const message = element.getAttribute(\"data-confirm\");\n\n  if (!message) {\n    return true;\n  }\n\n  let answer = false;\n\n  if (fire(element, \"confirm\")) {\n    try {\n      answer = rails.confirm(message, element);\n    } catch (error) {}\n\n    callback = fire(element, \"confirm:complete\", [answer]);\n  }\n\n  return answer && callback;\n};\n\nconst handleDisabledElement = function (e) {\n  const element = this;\n\n  if (element.disabled) {\n    stopEverything(e);\n  }\n};\n\nconst enableElement = e => {\n  let element;\n\n  if (e instanceof Event) {\n    if (isXhrRedirect(e)) {\n      return;\n    }\n\n    element = e.target;\n  } else {\n    element = e;\n  }\n\n  if (isContentEditable(element)) {\n    return;\n  }\n\n  if (matches(element, linkDisableSelector)) {\n    return enableLinkElement(element);\n  } else if (matches(element, buttonDisableSelector) || matches(element, formEnableSelector)) {\n    return enableFormElement(element);\n  } else if (matches(element, formSubmitSelector)) {\n    return enableFormElements(element);\n  }\n};\n\nconst disableElement = e => {\n  const element = e instanceof Event ? e.target : e;\n\n  if (isContentEditable(element)) {\n    return;\n  }\n\n  if (matches(element, linkDisableSelector)) {\n    return disableLinkElement(element);\n  } else if (matches(element, buttonDisableSelector) || matches(element, formDisableSelector)) {\n    return disableFormElement(element);\n  } else if (matches(element, formSubmitSelector)) {\n    return disableFormElements(element);\n  }\n};\n\nvar disableLinkElement = function (element) {\n  if (getData(element, \"ujs:disabled\")) {\n    return;\n  }\n\n  const replacement = element.getAttribute(\"data-disable-with\");\n\n  if (replacement != null) {\n    setData(element, \"ujs:enable-with\", element.innerHTML);\n    element.innerHTML = replacement;\n  }\n\n  element.addEventListener(\"click\", stopEverything);\n  return setData(element, \"ujs:disabled\", true);\n};\n\nvar enableLinkElement = function (element) {\n  const originalText = getData(element, \"ujs:enable-with\");\n\n  if (originalText != null) {\n    element.innerHTML = originalText;\n    setData(element, \"ujs:enable-with\", null);\n  }\n\n  element.removeEventListener(\"click\", stopEverything);\n  return setData(element, \"ujs:disabled\", null);\n};\n\nvar disableFormElements = form => formElements(form, formDisableSelector).forEach(disableFormElement);\n\nvar disableFormElement = function (element) {\n  if (getData(element, \"ujs:disabled\")) {\n    return;\n  }\n\n  const replacement = element.getAttribute(\"data-disable-with\");\n\n  if (replacement != null) {\n    if (matches(element, \"button\")) {\n      setData(element, \"ujs:enable-with\", element.innerHTML);\n      element.innerHTML = replacement;\n    } else {\n      setData(element, \"ujs:enable-with\", element.value);\n      element.value = replacement;\n    }\n  }\n\n  element.disabled = true;\n  return setData(element, \"ujs:disabled\", true);\n};\n\nvar enableFormElements = form => formElements(form, formEnableSelector).forEach(element => enableFormElement(element));\n\nvar enableFormElement = function (element) {\n  const originalText = getData(element, \"ujs:enable-with\");\n\n  if (originalText != null) {\n    if (matches(element, \"button\")) {\n      element.innerHTML = originalText;\n    } else {\n      element.value = originalText;\n    }\n\n    setData(element, \"ujs:enable-with\", null);\n  }\n\n  element.disabled = false;\n  return setData(element, \"ujs:disabled\", null);\n};\n\nvar isXhrRedirect = function (event) {\n  const xhr = event.detail ? event.detail[0] : undefined;\n  return xhr && xhr.getResponseHeader(\"X-Xhr-Redirect\");\n};\n\nconst handleMethodWithRails = rails => function (e) {\n  const link = this;\n  const method = link.getAttribute(\"data-method\");\n\n  if (!method) {\n    return;\n  }\n\n  if (isContentEditable(this)) {\n    return;\n  }\n\n  const href = rails.href(link);\n  const csrfToken$1 = csrfToken();\n  const csrfParam$1 = csrfParam();\n  const form = document.createElement(\"form\");\n  let formContent = `<input name='_method' value='${method}' type='hidden' />`;\n\n  if (csrfParam$1 && csrfToken$1 && !isCrossDomain(href)) {\n    formContent += `<input name='${csrfParam$1}' value='${csrfToken$1}' type='hidden' />`;\n  }\n\n  formContent += '<input type=\"submit\" />';\n  form.method = \"post\";\n  form.action = href;\n  form.target = link.target;\n  form.innerHTML = formContent;\n  form.style.display = \"none\";\n  document.body.appendChild(form);\n  form.querySelector('[type=\"submit\"]').click();\n  stopEverything(e);\n};\n\nconst isRemote = function (element) {\n  const value = element.getAttribute(\"data-remote\");\n  return value != null && value !== \"false\";\n};\n\nconst handleRemoteWithRails = rails => function (e) {\n  let data, method, url;\n  const element = this;\n\n  if (!isRemote(element)) {\n    return true;\n  }\n\n  if (!fire(element, \"ajax:before\")) {\n    fire(element, \"ajax:stopped\");\n    return false;\n  }\n\n  if (isContentEditable(element)) {\n    fire(element, \"ajax:stopped\");\n    return false;\n  }\n\n  const withCredentials = element.getAttribute(\"data-with-credentials\");\n  const dataType = element.getAttribute(\"data-type\") || \"script\";\n\n  if (matches(element, formSubmitSelector)) {\n    const button = getData(element, \"ujs:submit-button\");\n    method = getData(element, \"ujs:submit-button-formmethod\") || element.getAttribute(\"method\") || \"get\";\n    url = getData(element, \"ujs:submit-button-formaction\") || element.getAttribute(\"action\") || location.href;\n\n    if (method.toUpperCase() === \"GET\") {\n      url = url.replace(/\\?.*$/, \"\");\n    }\n\n    if (element.enctype === \"multipart/form-data\") {\n      data = new FormData(element);\n\n      if (button != null) {\n        data.append(button.name, button.value);\n      }\n    } else {\n      data = serializeElement(element, button);\n    }\n\n    setData(element, \"ujs:submit-button\", null);\n    setData(element, \"ujs:submit-button-formmethod\", null);\n    setData(element, \"ujs:submit-button-formaction\", null);\n  } else if (matches(element, buttonClickSelector) || matches(element, inputChangeSelector)) {\n    method = element.getAttribute(\"data-method\");\n    url = element.getAttribute(\"data-url\");\n    data = serializeElement(element, element.getAttribute(\"data-params\"));\n  } else {\n    method = element.getAttribute(\"data-method\");\n    url = rails.href(element);\n    data = element.getAttribute(\"data-params\");\n  }\n\n  ajax({\n    type: method || \"GET\",\n    url: url,\n    data: data,\n    dataType: dataType,\n\n    beforeSend(xhr, options) {\n      if (fire(element, \"ajax:beforeSend\", [xhr, options])) {\n        return fire(element, \"ajax:send\", [xhr]);\n      } else {\n        fire(element, \"ajax:stopped\");\n        return false;\n      }\n    },\n\n    success() {\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n\n      return fire(element, \"ajax:success\", args);\n    },\n\n    error() {\n      for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        args[_key2] = arguments[_key2];\n      }\n\n      return fire(element, \"ajax:error\", args);\n    },\n\n    complete() {\n      for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n        args[_key3] = arguments[_key3];\n      }\n\n      return fire(element, \"ajax:complete\", args);\n    },\n\n    crossDomain: isCrossDomain(url),\n    withCredentials: withCredentials != null && withCredentials !== \"false\"\n  });\n  stopEverything(e);\n};\n\nconst formSubmitButtonClick = function (e) {\n  const button = this;\n  const form = button.form;\n\n  if (!form) {\n    return;\n  }\n\n  if (button.name) {\n    setData(form, \"ujs:submit-button\", {\n      name: button.name,\n      value: button.value\n    });\n  }\n\n  setData(form, \"ujs:formnovalidate-button\", button.formNoValidate);\n  setData(form, \"ujs:submit-button-formaction\", button.getAttribute(\"formaction\"));\n  return setData(form, \"ujs:submit-button-formmethod\", button.getAttribute(\"formmethod\"));\n};\n\nconst preventInsignificantClick = function (e) {\n  const link = this;\n  const method = (link.getAttribute(\"data-method\") || \"GET\").toUpperCase();\n  const data = link.getAttribute(\"data-params\");\n  const metaClick = e.metaKey || e.ctrlKey;\n  const insignificantMetaClick = metaClick && method === \"GET\" && !data;\n  const nonPrimaryMouseClick = e.button != null && e.button !== 0;\n\n  if (nonPrimaryMouseClick || insignificantMetaClick) {\n    e.stopImmediatePropagation();\n  }\n};\n\nconst Rails = {\n  $: $,\n  ajax: ajax,\n  buttonClickSelector: buttonClickSelector,\n  buttonDisableSelector: buttonDisableSelector,\n  confirm: confirm,\n  cspNonce: cspNonce,\n  csrfToken: csrfToken,\n  csrfParam: csrfParam,\n  CSRFProtection: CSRFProtection,\n  delegate: delegate,\n  disableElement: disableElement,\n  enableElement: enableElement,\n  fileInputSelector: fileInputSelector,\n  fire: fire,\n  formElements: formElements,\n  formEnableSelector: formEnableSelector,\n  formDisableSelector: formDisableSelector,\n  formInputClickSelector: formInputClickSelector,\n  formSubmitButtonClick: formSubmitButtonClick,\n  formSubmitSelector: formSubmitSelector,\n  getData: getData,\n  handleDisabledElement: handleDisabledElement,\n  href: href,\n  inputChangeSelector: inputChangeSelector,\n  isCrossDomain: isCrossDomain,\n  linkClickSelector: linkClickSelector,\n  linkDisableSelector: linkDisableSelector,\n  loadCSPNonce: loadCSPNonce,\n  matches: matches,\n  preventInsignificantClick: preventInsignificantClick,\n  refreshCSRFTokens: refreshCSRFTokens,\n  serializeElement: serializeElement,\n  setData: setData,\n  stopEverything: stopEverything\n};\nconst handleConfirm = handleConfirmWithRails(Rails);\nRails.handleConfirm = handleConfirm;\nconst handleMethod = handleMethodWithRails(Rails);\nRails.handleMethod = handleMethod;\nconst handleRemote = handleRemoteWithRails(Rails);\nRails.handleRemote = handleRemote;\n\nconst start = function () {\n  if (window._rails_loaded) {\n    throw new Error(\"rails-ujs has already been loaded!\");\n  }\n\n  window.addEventListener(\"pageshow\", function () {\n    $(formEnableSelector).forEach(function (el) {\n      if (getData(el, \"ujs:disabled\")) {\n        enableElement(el);\n      }\n    });\n    $(linkDisableSelector).forEach(function (el) {\n      if (getData(el, \"ujs:disabled\")) {\n        enableElement(el);\n      }\n    });\n  });\n  delegate(document, linkDisableSelector, \"ajax:complete\", enableElement);\n  delegate(document, linkDisableSelector, \"ajax:stopped\", enableElement);\n  delegate(document, buttonDisableSelector, \"ajax:complete\", enableElement);\n  delegate(document, buttonDisableSelector, \"ajax:stopped\", enableElement);\n  delegate(document, linkClickSelector, \"click\", preventInsignificantClick);\n  delegate(document, linkClickSelector, \"click\", handleDisabledElement);\n  delegate(document, linkClickSelector, \"click\", handleConfirm);\n  delegate(document, linkClickSelector, \"click\", disableElement);\n  delegate(document, linkClickSelector, \"click\", handleRemote);\n  delegate(document, linkClickSelector, \"click\", handleMethod);\n  delegate(document, buttonClickSelector, \"click\", preventInsignificantClick);\n  delegate(document, buttonClickSelector, \"click\", handleDisabledElement);\n  delegate(document, buttonClickSelector, \"click\", handleConfirm);\n  delegate(document, buttonClickSelector, \"click\", disableElement);\n  delegate(document, buttonClickSelector, \"click\", handleRemote);\n  delegate(document, inputChangeSelector, \"change\", handleDisabledElement);\n  delegate(document, inputChangeSelector, \"change\", handleConfirm);\n  delegate(document, inputChangeSelector, \"change\", handleRemote);\n  delegate(document, formSubmitSelector, \"submit\", handleDisabledElement);\n  delegate(document, formSubmitSelector, \"submit\", handleConfirm);\n  delegate(document, formSubmitSelector, \"submit\", handleRemote);\n  delegate(document, formSubmitSelector, \"submit\", e => setTimeout(() => disableElement(e), 13));\n  delegate(document, formSubmitSelector, \"ajax:send\", disableElement);\n  delegate(document, formSubmitSelector, \"ajax:complete\", enableElement);\n  delegate(document, formInputClickSelector, \"click\", preventInsignificantClick);\n  delegate(document, formInputClickSelector, \"click\", handleDisabledElement);\n  delegate(document, formInputClickSelector, \"click\", handleConfirm);\n  delegate(document, formInputClickSelector, \"click\", formSubmitButtonClick);\n  document.addEventListener(\"DOMContentLoaded\", refreshCSRFTokens);\n  document.addEventListener(\"DOMContentLoaded\", loadCSPNonce);\n  return window._rails_loaded = true;\n};\n\nRails.start = start;\n\nif (typeof jQuery !== \"undefined\" && jQuery && jQuery.ajax) {\n  if (jQuery.rails) {\n    throw new Error(\"If you load both jquery_ujs and rails-ujs, use rails-ujs only.\");\n  }\n\n  jQuery.rails = Rails;\n  jQuery.ajaxPrefilter(function (options, originalOptions, xhr) {\n    if (!options.crossDomain) {\n      return CSRFProtection(xhr);\n    }\n  });\n}\n\nexport { Rails as default };","/* eslint no-console:0 */\n// This file is automatically compiled by Webpack, along with any other files\n// present in this directory. You're encouraged to place your actual application logic in\n// a relevant structure within app/javascript and only use these pack files to reference\n// that code so it'll be compiled.\n//\n// To reference this file, add <%= javascript_pack_tag 'application' %> to the appropriate\n// layout file, like app/views/layouts/application.html.erb\n\n\n// Uncomment to copy all static images under ../images to the output folder and reference\n// them with the image_pack_tag helper in views (e.g <%= image_pack_tag 'rails.png' %>)\n// or the `imagePath` JavaScript helper below.\n\nconst images = require.context(\"../images\", true)\nconst imagePath = (name) => images(name, true)\n\nimport \"core-js/stable\"\nimport \"regenerator-runtime/runtime\"\nimport \"stylesheets/application\"\nimport \"popper.js\"\nimport \"bootstrap\"\nimport \"src/setup\"\nimport \"src/bootstrap-setup\"\n\nimport Rails from \"@rails/ujs\";\nRails.start();\n","'use strict';\nvar global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toOffset = require('../internals/to-offset');\nvar toIndexedObject = require('../internals/to-object');\nvar fails = require('../internals/fails');\n\nvar RangeError = global.RangeError;\nvar Int8Array = global.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar $set = Int8ArrayPrototype && Int8ArrayPrototype.set;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\nvar WORKS_WITH_OBJECTS_AND_GEERIC_ON_TYPED_ARRAYS = !fails(function () {\n  // eslint-disable-next-line es/no-typed-arrays -- required for testing\n  var array = new Uint8ClampedArray(2);\n  call($set, array, { length: 1, 0: 3 }, 1);\n  return array[1] !== 3;\n});\n\n// https://bugs.chromium.org/p/v8/issues/detail?id=11294 and other\nvar TO_OBJECT_BUG = WORKS_WITH_OBJECTS_AND_GEERIC_ON_TYPED_ARRAYS && ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS && fails(function () {\n  var array = new Int8Array(2);\n  array.set(1);\n  array.set('2', 1);\n  return array[0] !== 0 || array[1] !== 2;\n});\n\n// `%TypedArray%.prototype.set` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.set\nexportTypedArrayMethod('set', function set(arrayLike /* , offset */) {\n  aTypedArray(this);\n  var offset = toOffset(arguments.length > 1 ? arguments[1] : undefined, 1);\n  var src = toIndexedObject(arrayLike);\n  if (WORKS_WITH_OBJECTS_AND_GEERIC_ON_TYPED_ARRAYS) return call($set, this, src, offset);\n  var length = this.length;\n  var len = lengthOfArrayLike(src);\n  var index = 0;\n  if (len + offset > length) throw RangeError('Wrong length');\n  while (index < len) this[offset + index] = src[index++];\n}, !WORKS_WITH_OBJECTS_AND_GEERIC_ON_TYPED_ARRAYS || TO_OBJECT_BUG);\n","'use strict';\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-native');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar hasOwn = require('../internals/has-own-property');\nvar classof = require('../internals/classof');\nvar tryToString = require('../internals/try-to-string');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar defineProperty = require('../internals/object-define-property').f;\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar uid = require('../internals/uid');\n\nvar Int8Array = global.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar Uint8ClampedArray = global.Uint8ClampedArray;\nvar Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype;\nvar TypedArray = Int8Array && getPrototypeOf(Int8Array);\nvar TypedArrayPrototype = Int8ArrayPrototype && getPrototypeOf(Int8ArrayPrototype);\nvar ObjectPrototype = Object.prototype;\nvar TypeError = global.TypeError;\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG');\nvar TYPED_ARRAY_CONSTRUCTOR = uid('TYPED_ARRAY_CONSTRUCTOR');\n// Fixing native typed arrays in Opera Presto crashes the browser, see #595\nvar NATIVE_ARRAY_BUFFER_VIEWS = NATIVE_ARRAY_BUFFER && !!setPrototypeOf && classof(global.opera) !== 'Opera';\nvar TYPED_ARRAY_TAG_REQUIRED = false;\nvar NAME, Constructor, Prototype;\n\nvar TypedArrayConstructorsList = {\n  Int8Array: 1,\n  Uint8Array: 1,\n  Uint8ClampedArray: 1,\n  Int16Array: 2,\n  Uint16Array: 2,\n  Int32Array: 4,\n  Uint32Array: 4,\n  Float32Array: 4,\n  Float64Array: 8\n};\n\nvar BigIntArrayConstructorsList = {\n  BigInt64Array: 8,\n  BigUint64Array: 8\n};\n\nvar isView = function isView(it) {\n  if (!isObject(it)) return false;\n  var klass = classof(it);\n  return klass === 'DataView'\n    || hasOwn(TypedArrayConstructorsList, klass)\n    || hasOwn(BigIntArrayConstructorsList, klass);\n};\n\nvar isTypedArray = function (it) {\n  if (!isObject(it)) return false;\n  var klass = classof(it);\n  return hasOwn(TypedArrayConstructorsList, klass)\n    || hasOwn(BigIntArrayConstructorsList, klass);\n};\n\nvar aTypedArray = function (it) {\n  if (isTypedArray(it)) return it;\n  throw TypeError('Target is not a typed array');\n};\n\nvar aTypedArrayConstructor = function (C) {\n  if (isCallable(C) && (!setPrototypeOf || isPrototypeOf(TypedArray, C))) return C;\n  throw TypeError(tryToString(C) + ' is not a typed array constructor');\n};\n\nvar exportTypedArrayMethod = function (KEY, property, forced, options) {\n  if (!DESCRIPTORS) return;\n  if (forced) for (var ARRAY in TypedArrayConstructorsList) {\n    var TypedArrayConstructor = global[ARRAY];\n    if (TypedArrayConstructor && hasOwn(TypedArrayConstructor.prototype, KEY)) try {\n      delete TypedArrayConstructor.prototype[KEY];\n    } catch (error) {\n      // old WebKit bug - some methods are non-configurable\n      try {\n        TypedArrayConstructor.prototype[KEY] = property;\n      } catch (error2) { /* empty */ }\n    }\n  }\n  if (!TypedArrayPrototype[KEY] || forced) {\n    redefine(TypedArrayPrototype, KEY, forced ? property\n      : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property, options);\n  }\n};\n\nvar exportTypedArrayStaticMethod = function (KEY, property, forced) {\n  var ARRAY, TypedArrayConstructor;\n  if (!DESCRIPTORS) return;\n  if (setPrototypeOf) {\n    if (forced) for (ARRAY in TypedArrayConstructorsList) {\n      TypedArrayConstructor = global[ARRAY];\n      if (TypedArrayConstructor && hasOwn(TypedArrayConstructor, KEY)) try {\n        delete TypedArrayConstructor[KEY];\n      } catch (error) { /* empty */ }\n    }\n    if (!TypedArray[KEY] || forced) {\n      // V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable\n      try {\n        return redefine(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && TypedArray[KEY] || property);\n      } catch (error) { /* empty */ }\n    } else return;\n  }\n  for (ARRAY in TypedArrayConstructorsList) {\n    TypedArrayConstructor = global[ARRAY];\n    if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) {\n      redefine(TypedArrayConstructor, KEY, property);\n    }\n  }\n};\n\nfor (NAME in TypedArrayConstructorsList) {\n  Constructor = global[NAME];\n  Prototype = Constructor && Constructor.prototype;\n  if (Prototype) createNonEnumerableProperty(Prototype, TYPED_ARRAY_CONSTRUCTOR, Constructor);\n  else NATIVE_ARRAY_BUFFER_VIEWS = false;\n}\n\nfor (NAME in BigIntArrayConstructorsList) {\n  Constructor = global[NAME];\n  Prototype = Constructor && Constructor.prototype;\n  if (Prototype) createNonEnumerableProperty(Prototype, TYPED_ARRAY_CONSTRUCTOR, Constructor);\n}\n\n// WebKit bug - typed arrays constructors prototype is Object.prototype\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !isCallable(TypedArray) || TypedArray === Function.prototype) {\n  // eslint-disable-next-line no-shadow -- safe\n  TypedArray = function TypedArray() {\n    throw TypeError('Incorrect invocation');\n  };\n  if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n    if (global[NAME]) setPrototypeOf(global[NAME], TypedArray);\n  }\n}\n\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype) {\n  TypedArrayPrototype = TypedArray.prototype;\n  if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n    if (global[NAME]) setPrototypeOf(global[NAME].prototype, TypedArrayPrototype);\n  }\n}\n\n// WebKit bug - one more object in Uint8ClampedArray prototype chain\nif (NATIVE_ARRAY_BUFFER_VIEWS && getPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) {\n  setPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype);\n}\n\nif (DESCRIPTORS && !hasOwn(TypedArrayPrototype, TO_STRING_TAG)) {\n  TYPED_ARRAY_TAG_REQUIRED = true;\n  defineProperty(TypedArrayPrototype, TO_STRING_TAG, { get: function () {\n    return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined;\n  } });\n  for (NAME in TypedArrayConstructorsList) if (global[NAME]) {\n    createNonEnumerableProperty(global[NAME], TYPED_ARRAY_TAG, NAME);\n  }\n}\n\nmodule.exports = {\n  NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS,\n  TYPED_ARRAY_CONSTRUCTOR: TYPED_ARRAY_CONSTRUCTOR,\n  TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQUIRED && TYPED_ARRAY_TAG,\n  aTypedArray: aTypedArray,\n  aTypedArrayConstructor: aTypedArrayConstructor,\n  exportTypedArrayMethod: exportTypedArrayMethod,\n  exportTypedArrayStaticMethod: exportTypedArrayStaticMethod,\n  isView: isView,\n  isTypedArray: isTypedArray,\n  TypedArray: TypedArray,\n  TypedArrayPrototype: TypedArrayPrototype\n};\n","// eslint-disable-next-line es/no-typed-arrays -- safe\nmodule.exports = typeof ArrayBuffer != 'undefined' && typeof DataView != 'undefined';\n","var global = require('../internals/global');\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar isCallable = require('../internals/is-callable');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar Object = global.Object;\n\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n  try {\n    return it[key];\n  } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n  var O, tag, result;\n  return it === undefined ? 'Undefined' : it === null ? 'Null'\n    // @@toStringTag case\n    : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n    // builtinTag case\n    : CORRECT_ARGUMENTS ? classofRaw(O)\n    // ES3 arguments fallback\n    : (result = classofRaw(O)) == 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","module.exports = false;\n","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n  match = v8.split('.');\n  // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n  // but their correct versions are not interesting for us\n  version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n  match = userAgent.match(/Edge\\/(\\d+)/);\n  if (!match || match[1] >= 74) {\n    match = userAgent.match(/Chrome\\/(\\d+)/);\n    if (match) version = +match[1];\n  }\n}\n\nmodule.exports = version;\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n  // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n  return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n    value: 42,\n    writable: false\n  }).prototype != 42;\n});\n","var global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TypeError = global.TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n  if (!isObject(input) || isSymbol(input)) return input;\n  var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n  var result;\n  if (exoticToPrim) {\n    if (pref === undefined) pref = 'default';\n    result = call(exoticToPrim, input, pref);\n    if (!isObject(result) || isSymbol(result)) return result;\n    throw TypeError(\"Can't convert object to primitive value\");\n  }\n  if (pref === undefined) pref = 'number';\n  return ordinaryToPrimitive(input, pref);\n};\n","var aCallable = require('../internals/a-callable');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n  var func = V[P];\n  return func == null ? undefined : aCallable(func);\n};\n","var global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar TypeError = global.TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n  var fn, val;\n  if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n  if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n  if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n  throw TypeError(\"Can't convert object to primitive value\");\n};\n","var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = global.TypeError;\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n  return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n  return function (it) {\n    var state;\n    if (!isObject(it) || (state = get(it)).type !== TYPE) {\n      throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n    } return state;\n  };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n  var store = shared.state || (shared.state = new WeakMap());\n  var wmget = uncurryThis(store.get);\n  var wmhas = uncurryThis(store.has);\n  var wmset = uncurryThis(store.set);\n  set = function (it, metadata) {\n    if (wmhas(store, it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n    metadata.facade = it;\n    wmset(store, it, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return wmget(store, it) || {};\n  };\n  has = function (it) {\n    return wmhas(store, it);\n  };\n} else {\n  var STATE = sharedKey('state');\n  hiddenKeys[STATE] = true;\n  set = function (it, metadata) {\n    if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n    metadata.facade = it;\n    createNonEnumerableProperty(it, STATE, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return hasOwn(it, STATE) ? it[STATE] : {};\n  };\n  has = function (it) {\n    return hasOwn(it, STATE);\n  };\n}\n\nmodule.exports = {\n  set: set,\n  get: get,\n  has: has,\n  enforce: enforce,\n  getterFor: getterFor\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar inspectSource = require('../internals/inspect-source');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(inspectSource(WeakMap));\n","var DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n  EXISTS: EXISTS,\n  PROPER: PROPER,\n  CONFIGURABLE: CONFIGURABLE\n};\n","var global = require('../internals/global');\nvar hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar Object = global.Object;\nvar ObjectPrototype = Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n  var object = toObject(O);\n  if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\n  var constructor = object.constructor;\n  if (isCallable(constructor) && object instanceof constructor) {\n    return constructor.prototype;\n  } return object instanceof Object ? ObjectPrototype : null;\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n  function F() { /* empty */ }\n  F.prototype.constructor = null;\n  // eslint-disable-next-line es/no-object-getprototypeof -- required for testing\n  return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","/* eslint-disable no-proto -- safe */\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n  var CORRECT_SETTER = false;\n  var test = {};\n  var setter;\n  try {\n    // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n    setter = uncurryThis(Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set);\n    setter(test, []);\n    CORRECT_SETTER = test instanceof Array;\n  } catch (error) { /* empty */ }\n  return function setPrototypeOf(O, proto) {\n    anObject(O);\n    aPossiblePrototype(proto);\n    if (CORRECT_SETTER) setter(O, proto);\n    else O.__proto__ = proto;\n    return O;\n  };\n}() : undefined);\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar String = global.String;\nvar TypeError = global.TypeError;\n\nmodule.exports = function (argument) {\n  if (typeof argument == 'object' || isCallable(argument)) return argument;\n  throw TypeError(\"Can't set \" + String(argument) + ' as a prototype');\n};\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n  return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","var global = require('../internals/global');\nvar toPositiveInteger = require('../internals/to-positive-integer');\n\nvar RangeError = global.RangeError;\n\nmodule.exports = function (it, BYTES) {\n  var offset = toPositiveInteger(it);\n  if (offset % BYTES) throw RangeError('Wrong offset');\n  return offset;\n};\n","var global = require('../internals/global');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar RangeError = global.RangeError;\n\nmodule.exports = function (it) {\n  var result = toIntegerOrInfinity(it);\n  if (result < 0) throw RangeError(\"The argument can't be less than 0\");\n  return result;\n};\n","var $ = require('../internals/export');\nvar global = require('../internals/global');\nvar task = require('../internals/task');\n\nvar FORCED = !global.setImmediate || !global.clearImmediate;\n\n// http://w3c.github.io/setImmediate/\n$({ global: true, bind: true, enumerable: true, forced: FORCED }, {\n  // `setImmediate` method\n  // http://w3c.github.io/setImmediate/#si-setImmediate\n  setImmediate: task.set,\n  // `clearImmediate` method\n  // http://w3c.github.io/setImmediate/#si-clearImmediate\n  clearImmediate: task.clear\n});\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar setGlobal = require('../internals/set-global');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n  options.target      - name of the target object\n  options.global      - target is the global object\n  options.stat        - export as static methods of target\n  options.proto       - export as prototype methods of target\n  options.real        - real prototype method for the `pure` version\n  options.forced      - export even if the native feature is available\n  options.bind        - bind methods to the target, required for the `pure` version\n  options.wrap        - wrap constructors to preventing global pollution, required for the `pure` version\n  options.unsafe      - use the simple assignment of property instead of delete + defineProperty\n  options.sham        - add a flag to not completely full polyfills\n  options.enumerable  - export as enumerable property\n  options.noTargetGet - prevent calling a getter on target\n  options.name        - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n  var TARGET = options.target;\n  var GLOBAL = options.global;\n  var STATIC = options.stat;\n  var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n  if (GLOBAL) {\n    target = global;\n  } else if (STATIC) {\n    target = global[TARGET] || setGlobal(TARGET, {});\n  } else {\n    target = (global[TARGET] || {}).prototype;\n  }\n  if (target) for (key in source) {\n    sourceProperty = source[key];\n    if (options.noTargetGet) {\n      descriptor = getOwnPropertyDescriptor(target, key);\n      targetProperty = descriptor && descriptor.value;\n    } else targetProperty = target[key];\n    FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n    // contained in target\n    if (!FORCED && targetProperty !== undefined) {\n      if (typeof sourceProperty == typeof targetProperty) continue;\n      copyConstructorProperties(sourceProperty, targetProperty);\n    }\n    // add a flag to not completely full polyfills\n    if (options.sham || (targetProperty && targetProperty.sham)) {\n      createNonEnumerableProperty(sourceProperty, 'sham', true);\n    }\n    // extend global\n    redefine(target, key, sourceProperty, options);\n  }\n};\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n  var descriptor = getOwnPropertyDescriptor(this, V);\n  return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","var global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar Object = global.Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n  // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n  // eslint-disable-next-line no-prototype-builtins -- safe\n  return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n  return classof(it) == 'String' ? split(it, '') : Object(it);\n} : Object;\n","var hasOwn = require('../internals/has-own-property');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source, exceptions) {\n  var keys = ownKeys(source);\n  var defineProperty = definePropertyModule.f;\n  var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n  for (var i = 0; i < keys.length; i++) {\n    var key = keys[i];\n    if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n      defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n    }\n  }\n};\n","var getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\nvar concat = uncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n  var keys = getOwnPropertyNamesModule.f(anObject(it));\n  var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n  return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n  return internalObjectKeys(O, hiddenKeys);\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n  var O = toIndexedObject(object);\n  var i = 0;\n  var result = [];\n  var key;\n  for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n  // Don't enum bug & hidden keys\n  while (names.length > i) if (hasOwn(O, key = names[i++])) {\n    ~indexOf(result, key) || push(result, key);\n  }\n  return result;\n};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n  return function ($this, el, fromIndex) {\n    var O = toIndexedObject($this);\n    var length = lengthOfArrayLike(O);\n    var index = toAbsoluteIndex(fromIndex, length);\n    var value;\n    // Array#includes uses SameValueZero equality algorithm\n    // eslint-disable-next-line no-self-compare -- NaN check\n    if (IS_INCLUDES && el != el) while (length > index) {\n      value = O[index++];\n      // eslint-disable-next-line no-self-compare -- NaN check\n      if (value != value) return true;\n    // Array#indexOf ignores holes, Array#includes - not\n    } else for (;length > index; index++) {\n      if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n    } return !IS_INCLUDES && -1;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.includes` method\n  // https://tc39.es/ecma262/#sec-array.prototype.includes\n  includes: createMethod(true),\n  // `Array.prototype.indexOf` method\n  // https://tc39.es/ecma262/#sec-array.prototype.indexof\n  indexOf: createMethod(false)\n};\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n  var integer = toIntegerOrInfinity(index);\n  return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","// IE8- don't enum bug keys\nmodule.exports = [\n  'constructor',\n  'hasOwnProperty',\n  'isPrototypeOf',\n  'propertyIsEnumerable',\n  'toLocaleString',\n  'toString',\n  'valueOf'\n];\n","// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","var fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n  var value = data[normalize(feature)];\n  return value == POLYFILL ? true\n    : value == NATIVE ? false\n    : isCallable(detection) ? fails(detection)\n    : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n  return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","var global = require('../internals/global');\nvar apply = require('../internals/function-apply');\nvar bind = require('../internals/function-bind-context');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar fails = require('../internals/fails');\nvar html = require('../internals/html');\nvar arraySlice = require('../internals/array-slice');\nvar createElement = require('../internals/document-create-element');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar set = global.setImmediate;\nvar clear = global.clearImmediate;\nvar process = global.process;\nvar Dispatch = global.Dispatch;\nvar Function = global.Function;\nvar MessageChannel = global.MessageChannel;\nvar String = global.String;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar location, defer, channel, port;\n\ntry {\n  // Deno throws a ReferenceError on `location` access without `--location` flag\n  location = global.location;\n} catch (error) { /* empty */ }\n\nvar run = function (id) {\n  if (hasOwn(queue, id)) {\n    var fn = queue[id];\n    delete queue[id];\n    fn();\n  }\n};\n\nvar runner = function (id) {\n  return function () {\n    run(id);\n  };\n};\n\nvar listener = function (event) {\n  run(event.data);\n};\n\nvar post = function (id) {\n  // old engines have not location.origin\n  global.postMessage(String(id), location.protocol + '//' + location.host);\n};\n\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!set || !clear) {\n  set = function setImmediate(handler) {\n    validateArgumentsLength(arguments.length, 1);\n    var fn = isCallable(handler) ? handler : Function(handler);\n    var args = arraySlice(arguments, 1);\n    queue[++counter] = function () {\n      apply(fn, undefined, args);\n    };\n    defer(counter);\n    return counter;\n  };\n  clear = function clearImmediate(id) {\n    delete queue[id];\n  };\n  // Node.js 0.8-\n  if (IS_NODE) {\n    defer = function (id) {\n      process.nextTick(runner(id));\n    };\n  // Sphere (JS game engine) Dispatch API\n  } else if (Dispatch && Dispatch.now) {\n    defer = function (id) {\n      Dispatch.now(runner(id));\n    };\n  // Browsers with MessageChannel, includes WebWorkers\n  // except iOS - https://github.com/zloirock/core-js/issues/624\n  } else if (MessageChannel && !IS_IOS) {\n    channel = new MessageChannel();\n    port = channel.port2;\n    channel.port1.onmessage = listener;\n    defer = bind(port.postMessage, port);\n  // Browsers with postMessage, skip WebWorkers\n  // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n  } else if (\n    global.addEventListener &&\n    isCallable(global.postMessage) &&\n    !global.importScripts &&\n    location && location.protocol !== 'file:' &&\n    !fails(post)\n  ) {\n    defer = post;\n    global.addEventListener('message', listener, false);\n  // IE8-\n  } else if (ONREADYSTATECHANGE in createElement('script')) {\n    defer = function (id) {\n      html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\n        html.removeChild(this);\n        run(id);\n      };\n    };\n  // Rest old browsers\n  } else {\n    defer = function (id) {\n      setTimeout(runner(id), 0);\n    };\n  }\n}\n\nmodule.exports = {\n  set: set,\n  clear: clear\n};\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar apply = FunctionPrototype.apply;\nvar call = FunctionPrototype.call;\n\n// eslint-disable-next-line es/no-reflect -- safe\nmodule.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () {\n  return call.apply(apply, arguments);\n});\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar bind = uncurryThis(uncurryThis.bind);\n\n// optional / simple context binding\nmodule.exports = function (fn, that) {\n  aCallable(fn);\n  return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) {\n    return fn.apply(that, arguments);\n  };\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis([].slice);\n","var global = require('../internals/global');\n\nvar TypeError = global.TypeError;\n\nmodule.exports = function (passed, required) {\n  if (passed < required) throw TypeError('Not enough arguments');\n  return passed;\n};\n","var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /(?:ipad|iphone|ipod).*applewebkit/i.test(userAgent);\n","var classof = require('../internals/classof-raw');\nvar global = require('../internals/global');\n\nmodule.exports = classof(global.process) == 'process';\n","var map = {\n\t\"./apple-touch-icon-114x114-precomposed\": 42,\n\t\"./apple-touch-icon-114x114-precomposed.png\": 42,\n\t\"./apple-touch-icon-144x144-precomposed\": 43,\n\t\"./apple-touch-icon-144x144-precomposed.png\": 43,\n\t\"./apple-touch-icon-72x72-precomposed\": 44,\n\t\"./apple-touch-icon-72x72-precomposed.png\": 44,\n\t\"./apple-touch-icon-precomposed\": 45,\n\t\"./apple-touch-icon-precomposed.png\": 45,\n\t\"./favicon\": 46,\n\t\"./favicon.ico\": 95,\n\t\"./favicon.png\": 46\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 94;","module.exports = __webpack_public_path__ + \"media/images/favicon-6ffe1d75f1b889242fdf7b5af60690ab.ico\";","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n  \"use strict\";\n\n  var Op = Object.prototype;\n  var hasOwn = Op.hasOwnProperty;\n  var undefined; // More compressible than void 0.\n  var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n  var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n  var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n  var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n  function define(obj, key, value) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n    return obj[key];\n  }\n  try {\n    // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n    define({}, \"\");\n  } catch (err) {\n    define = function(obj, key, value) {\n      return obj[key] = value;\n    };\n  }\n\n  function wrap(innerFn, outerFn, self, tryLocsList) {\n    // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n    var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n    var generator = Object.create(protoGenerator.prototype);\n    var context = new Context(tryLocsList || []);\n\n    // The ._invoke method unifies the implementations of the .next,\n    // .throw, and .return methods.\n    generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n    return generator;\n  }\n  exports.wrap = wrap;\n\n  // Try/catch helper to minimize deoptimizations. Returns a completion\n  // record like context.tryEntries[i].completion. This interface could\n  // have been (and was previously) designed to take a closure to be\n  // invoked without arguments, but in all the cases we care about we\n  // already have an existing method we want to call, so there's no need\n  // to create a new function object. We can even get away with assuming\n  // the method takes exactly one argument, since that happens to be true\n  // in every case, so we don't have to touch the arguments object. The\n  // only additional allocation required is the completion record, which\n  // has a stable shape and so hopefully should be cheap to allocate.\n  function tryCatch(fn, obj, arg) {\n    try {\n      return { type: \"normal\", arg: fn.call(obj, arg) };\n    } catch (err) {\n      return { type: \"throw\", arg: err };\n    }\n  }\n\n  var GenStateSuspendedStart = \"suspendedStart\";\n  var GenStateSuspendedYield = \"suspendedYield\";\n  var GenStateExecuting = \"executing\";\n  var GenStateCompleted = \"completed\";\n\n  // Returning this object from the innerFn has the same effect as\n  // breaking out of the dispatch switch statement.\n  var ContinueSentinel = {};\n\n  // Dummy constructor functions that we use as the .constructor and\n  // .constructor.prototype properties for functions that return Generator\n  // objects. For full spec compliance, you may wish to configure your\n  // minifier not to mangle the names of these two functions.\n  function Generator() {}\n  function GeneratorFunction() {}\n  function GeneratorFunctionPrototype() {}\n\n  // This is a polyfill for %IteratorPrototype% for environments that\n  // don't natively support it.\n  var IteratorPrototype = {};\n  define(IteratorPrototype, iteratorSymbol, function () {\n    return this;\n  });\n\n  var getProto = Object.getPrototypeOf;\n  var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n  if (NativeIteratorPrototype &&\n      NativeIteratorPrototype !== Op &&\n      hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n    // This environment has a native %IteratorPrototype%; use it instead\n    // of the polyfill.\n    IteratorPrototype = NativeIteratorPrototype;\n  }\n\n  var Gp = GeneratorFunctionPrototype.prototype =\n    Generator.prototype = Object.create(IteratorPrototype);\n  GeneratorFunction.prototype = GeneratorFunctionPrototype;\n  define(Gp, \"constructor\", GeneratorFunctionPrototype);\n  define(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction);\n  GeneratorFunction.displayName = define(\n    GeneratorFunctionPrototype,\n    toStringTagSymbol,\n    \"GeneratorFunction\"\n  );\n\n  // Helper for defining the .next, .throw, and .return methods of the\n  // Iterator interface in terms of a single ._invoke method.\n  function defineIteratorMethods(prototype) {\n    [\"next\", \"throw\", \"return\"].forEach(function(method) {\n      define(prototype, method, function(arg) {\n        return this._invoke(method, arg);\n      });\n    });\n  }\n\n  exports.isGeneratorFunction = function(genFun) {\n    var ctor = typeof genFun === \"function\" && genFun.constructor;\n    return ctor\n      ? ctor === GeneratorFunction ||\n        // For the native GeneratorFunction constructor, the best we can\n        // do is to check its .name property.\n        (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n      : false;\n  };\n\n  exports.mark = function(genFun) {\n    if (Object.setPrototypeOf) {\n      Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n    } else {\n      genFun.__proto__ = GeneratorFunctionPrototype;\n      define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n    }\n    genFun.prototype = Object.create(Gp);\n    return genFun;\n  };\n\n  // Within the body of any async function, `await x` is transformed to\n  // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n  // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n  // meant to be awaited.\n  exports.awrap = function(arg) {\n    return { __await: arg };\n  };\n\n  function AsyncIterator(generator, PromiseImpl) {\n    function invoke(method, arg, resolve, reject) {\n      var record = tryCatch(generator[method], generator, arg);\n      if (record.type === \"throw\") {\n        reject(record.arg);\n      } else {\n        var result = record.arg;\n        var value = result.value;\n        if (value &&\n            typeof value === \"object\" &&\n            hasOwn.call(value, \"__await\")) {\n          return PromiseImpl.resolve(value.__await).then(function(value) {\n            invoke(\"next\", value, resolve, reject);\n          }, function(err) {\n            invoke(\"throw\", err, resolve, reject);\n          });\n        }\n\n        return PromiseImpl.resolve(value).then(function(unwrapped) {\n          // When a yielded Promise is resolved, its final value becomes\n          // the .value of the Promise<{value,done}> result for the\n          // current iteration.\n          result.value = unwrapped;\n          resolve(result);\n        }, function(error) {\n          // If a rejected Promise was yielded, throw the rejection back\n          // into the async generator function so it can be handled there.\n          return invoke(\"throw\", error, resolve, reject);\n        });\n      }\n    }\n\n    var previousPromise;\n\n    function enqueue(method, arg) {\n      function callInvokeWithMethodAndArg() {\n        return new PromiseImpl(function(resolve, reject) {\n          invoke(method, arg, resolve, reject);\n        });\n      }\n\n      return previousPromise =\n        // If enqueue has been called before, then we want to wait until\n        // all previous Promises have been resolved before calling invoke,\n        // so that results are always delivered in the correct order. If\n        // enqueue has not been called before, then it is important to\n        // call invoke immediately, without waiting on a callback to fire,\n        // so that the async generator function has the opportunity to do\n        // any necessary setup in a predictable way. This predictability\n        // is why the Promise constructor synchronously invokes its\n        // executor callback, and why async functions synchronously\n        // execute code before the first await. Since we implement simple\n        // async functions in terms of async generators, it is especially\n        // important to get this right, even though it requires care.\n        previousPromise ? previousPromise.then(\n          callInvokeWithMethodAndArg,\n          // Avoid propagating failures to Promises returned by later\n          // invocations of the iterator.\n          callInvokeWithMethodAndArg\n        ) : callInvokeWithMethodAndArg();\n    }\n\n    // Define the unified helper method that is used to implement .next,\n    // .throw, and .return (see defineIteratorMethods).\n    this._invoke = enqueue;\n  }\n\n  defineIteratorMethods(AsyncIterator.prototype);\n  define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n    return this;\n  });\n  exports.AsyncIterator = AsyncIterator;\n\n  // Note that simple async functions are implemented on top of\n  // AsyncIterator objects; they just return a Promise for the value of\n  // the final result produced by the iterator.\n  exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n    if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n    var iter = new AsyncIterator(\n      wrap(innerFn, outerFn, self, tryLocsList),\n      PromiseImpl\n    );\n\n    return exports.isGeneratorFunction(outerFn)\n      ? iter // If outerFn is a generator, return the full iterator.\n      : iter.next().then(function(result) {\n          return result.done ? result.value : iter.next();\n        });\n  };\n\n  function makeInvokeMethod(innerFn, self, context) {\n    var state = GenStateSuspendedStart;\n\n    return function invoke(method, arg) {\n      if (state === GenStateExecuting) {\n        throw new Error(\"Generator is already running\");\n      }\n\n      if (state === GenStateCompleted) {\n        if (method === \"throw\") {\n          throw arg;\n        }\n\n        // Be forgiving, per 25.3.3.3.3 of the spec:\n        // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n        return doneResult();\n      }\n\n      context.method = method;\n      context.arg = arg;\n\n      while (true) {\n        var delegate = context.delegate;\n        if (delegate) {\n          var delegateResult = maybeInvokeDelegate(delegate, context);\n          if (delegateResult) {\n            if (delegateResult === ContinueSentinel) continue;\n            return delegateResult;\n          }\n        }\n\n        if (context.method === \"next\") {\n          // Setting context._sent for legacy support of Babel's\n          // function.sent implementation.\n          context.sent = context._sent = context.arg;\n\n        } else if (context.method === \"throw\") {\n          if (state === GenStateSuspendedStart) {\n            state = GenStateCompleted;\n            throw context.arg;\n          }\n\n          context.dispatchException(context.arg);\n\n        } else if (context.method === \"return\") {\n          context.abrupt(\"return\", context.arg);\n        }\n\n        state = GenStateExecuting;\n\n        var record = tryCatch(innerFn, self, context);\n        if (record.type === \"normal\") {\n          // If an exception is thrown from innerFn, we leave state ===\n          // GenStateExecuting and loop back for another invocation.\n          state = context.done\n            ? GenStateCompleted\n            : GenStateSuspendedYield;\n\n          if (record.arg === ContinueSentinel) {\n            continue;\n          }\n\n          return {\n            value: record.arg,\n            done: context.done\n          };\n\n        } else if (record.type === \"throw\") {\n          state = GenStateCompleted;\n          // Dispatch the exception by looping back around to the\n          // context.dispatchException(context.arg) call above.\n          context.method = \"throw\";\n          context.arg = record.arg;\n        }\n      }\n    };\n  }\n\n  // Call delegate.iterator[context.method](context.arg) and handle the\n  // result, either by returning a { value, done } result from the\n  // delegate iterator, or by modifying context.method and context.arg,\n  // setting context.delegate to null, and returning the ContinueSentinel.\n  function maybeInvokeDelegate(delegate, context) {\n    var method = delegate.iterator[context.method];\n    if (method === undefined) {\n      // A .throw or .return when the delegate iterator has no .throw\n      // method always terminates the yield* loop.\n      context.delegate = null;\n\n      if (context.method === \"throw\") {\n        // Note: [\"return\"] must be used for ES3 parsing compatibility.\n        if (delegate.iterator[\"return\"]) {\n          // If the delegate iterator has a return method, give it a\n          // chance to clean up.\n          context.method = \"return\";\n          context.arg = undefined;\n          maybeInvokeDelegate(delegate, context);\n\n          if (context.method === \"throw\") {\n            // If maybeInvokeDelegate(context) changed context.method from\n            // \"return\" to \"throw\", let that override the TypeError below.\n            return ContinueSentinel;\n          }\n        }\n\n        context.method = \"throw\";\n        context.arg = new TypeError(\n          \"The iterator does not provide a 'throw' method\");\n      }\n\n      return ContinueSentinel;\n    }\n\n    var record = tryCatch(method, delegate.iterator, context.arg);\n\n    if (record.type === \"throw\") {\n      context.method = \"throw\";\n      context.arg = record.arg;\n      context.delegate = null;\n      return ContinueSentinel;\n    }\n\n    var info = record.arg;\n\n    if (! info) {\n      context.method = \"throw\";\n      context.arg = new TypeError(\"iterator result is not an object\");\n      context.delegate = null;\n      return ContinueSentinel;\n    }\n\n    if (info.done) {\n      // Assign the result of the finished delegate to the temporary\n      // variable specified by delegate.resultName (see delegateYield).\n      context[delegate.resultName] = info.value;\n\n      // Resume execution at the desired location (see delegateYield).\n      context.next = delegate.nextLoc;\n\n      // If context.method was \"throw\" but the delegate handled the\n      // exception, let the outer generator proceed normally. If\n      // context.method was \"next\", forget context.arg since it has been\n      // \"consumed\" by the delegate iterator. If context.method was\n      // \"return\", allow the original .return call to continue in the\n      // outer generator.\n      if (context.method !== \"return\") {\n        context.method = \"next\";\n        context.arg = undefined;\n      }\n\n    } else {\n      // Re-yield the result returned by the delegate method.\n      return info;\n    }\n\n    // The delegate iterator is finished, so forget it and continue with\n    // the outer generator.\n    context.delegate = null;\n    return ContinueSentinel;\n  }\n\n  // Define Generator.prototype.{next,throw,return} in terms of the\n  // unified ._invoke helper method.\n  defineIteratorMethods(Gp);\n\n  define(Gp, toStringTagSymbol, \"Generator\");\n\n  // A Generator should always return itself as the iterator object when the\n  // @@iterator function is called on it. Some browsers' implementations of the\n  // iterator prototype chain incorrectly implement this, causing the Generator\n  // object to not be returned from this call. This ensures that doesn't happen.\n  // See https://github.com/facebook/regenerator/issues/274 for more details.\n  define(Gp, iteratorSymbol, function() {\n    return this;\n  });\n\n  define(Gp, \"toString\", function() {\n    return \"[object Generator]\";\n  });\n\n  function pushTryEntry(locs) {\n    var entry = { tryLoc: locs[0] };\n\n    if (1 in locs) {\n      entry.catchLoc = locs[1];\n    }\n\n    if (2 in locs) {\n      entry.finallyLoc = locs[2];\n      entry.afterLoc = locs[3];\n    }\n\n    this.tryEntries.push(entry);\n  }\n\n  function resetTryEntry(entry) {\n    var record = entry.completion || {};\n    record.type = \"normal\";\n    delete record.arg;\n    entry.completion = record;\n  }\n\n  function Context(tryLocsList) {\n    // The root entry object (effectively a try statement without a catch\n    // or a finally block) gives us a place to store values thrown from\n    // locations where there is no enclosing try statement.\n    this.tryEntries = [{ tryLoc: \"root\" }];\n    tryLocsList.forEach(pushTryEntry, this);\n    this.reset(true);\n  }\n\n  exports.keys = function(object) {\n    var keys = [];\n    for (var key in object) {\n      keys.push(key);\n    }\n    keys.reverse();\n\n    // Rather than returning an object with a next method, we keep\n    // things simple and return the next function itself.\n    return function next() {\n      while (keys.length) {\n        var key = keys.pop();\n        if (key in object) {\n          next.value = key;\n          next.done = false;\n          return next;\n        }\n      }\n\n      // To avoid creating an additional object, we just hang the .value\n      // and .done properties off the next function object itself. This\n      // also ensures that the minifier will not anonymize the function.\n      next.done = true;\n      return next;\n    };\n  };\n\n  function values(iterable) {\n    if (iterable) {\n      var iteratorMethod = iterable[iteratorSymbol];\n      if (iteratorMethod) {\n        return iteratorMethod.call(iterable);\n      }\n\n      if (typeof iterable.next === \"function\") {\n        return iterable;\n      }\n\n      if (!isNaN(iterable.length)) {\n        var i = -1, next = function next() {\n          while (++i < iterable.length) {\n            if (hasOwn.call(iterable, i)) {\n              next.value = iterable[i];\n              next.done = false;\n              return next;\n            }\n          }\n\n          next.value = undefined;\n          next.done = true;\n\n          return next;\n        };\n\n        return next.next = next;\n      }\n    }\n\n    // Return an iterator with no values.\n    return { next: doneResult };\n  }\n  exports.values = values;\n\n  function doneResult() {\n    return { value: undefined, done: true };\n  }\n\n  Context.prototype = {\n    constructor: Context,\n\n    reset: function(skipTempReset) {\n      this.prev = 0;\n      this.next = 0;\n      // Resetting context._sent for legacy support of Babel's\n      // function.sent implementation.\n      this.sent = this._sent = undefined;\n      this.done = false;\n      this.delegate = null;\n\n      this.method = \"next\";\n      this.arg = undefined;\n\n      this.tryEntries.forEach(resetTryEntry);\n\n      if (!skipTempReset) {\n        for (var name in this) {\n          // Not sure about the optimal order of these conditions:\n          if (name.charAt(0) === \"t\" &&\n              hasOwn.call(this, name) &&\n              !isNaN(+name.slice(1))) {\n            this[name] = undefined;\n          }\n        }\n      }\n    },\n\n    stop: function() {\n      this.done = true;\n\n      var rootEntry = this.tryEntries[0];\n      var rootRecord = rootEntry.completion;\n      if (rootRecord.type === \"throw\") {\n        throw rootRecord.arg;\n      }\n\n      return this.rval;\n    },\n\n    dispatchException: function(exception) {\n      if (this.done) {\n        throw exception;\n      }\n\n      var context = this;\n      function handle(loc, caught) {\n        record.type = \"throw\";\n        record.arg = exception;\n        context.next = loc;\n\n        if (caught) {\n          // If the dispatched exception was caught by a catch block,\n          // then let that catch block handle the exception normally.\n          context.method = \"next\";\n          context.arg = undefined;\n        }\n\n        return !! caught;\n      }\n\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        var record = entry.completion;\n\n        if (entry.tryLoc === \"root\") {\n          // Exception thrown outside of any try block that could handle\n          // it, so set the completion value of the entire function to\n          // throw the exception.\n          return handle(\"end\");\n        }\n\n        if (entry.tryLoc <= this.prev) {\n          var hasCatch = hasOwn.call(entry, \"catchLoc\");\n          var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n          if (hasCatch && hasFinally) {\n            if (this.prev < entry.catchLoc) {\n              return handle(entry.catchLoc, true);\n            } else if (this.prev < entry.finallyLoc) {\n              return handle(entry.finallyLoc);\n            }\n\n          } else if (hasCatch) {\n            if (this.prev < entry.catchLoc) {\n              return handle(entry.catchLoc, true);\n            }\n\n          } else if (hasFinally) {\n            if (this.prev < entry.finallyLoc) {\n              return handle(entry.finallyLoc);\n            }\n\n          } else {\n            throw new Error(\"try statement without catch or finally\");\n          }\n        }\n      }\n    },\n\n    abrupt: function(type, arg) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.tryLoc <= this.prev &&\n            hasOwn.call(entry, \"finallyLoc\") &&\n            this.prev < entry.finallyLoc) {\n          var finallyEntry = entry;\n          break;\n        }\n      }\n\n      if (finallyEntry &&\n          (type === \"break\" ||\n           type === \"continue\") &&\n          finallyEntry.tryLoc <= arg &&\n          arg <= finallyEntry.finallyLoc) {\n        // Ignore the finally entry if control is not jumping to a\n        // location outside the try/catch block.\n        finallyEntry = null;\n      }\n\n      var record = finallyEntry ? finallyEntry.completion : {};\n      record.type = type;\n      record.arg = arg;\n\n      if (finallyEntry) {\n        this.method = \"next\";\n        this.next = finallyEntry.finallyLoc;\n        return ContinueSentinel;\n      }\n\n      return this.complete(record);\n    },\n\n    complete: function(record, afterLoc) {\n      if (record.type === \"throw\") {\n        throw record.arg;\n      }\n\n      if (record.type === \"break\" ||\n          record.type === \"continue\") {\n        this.next = record.arg;\n      } else if (record.type === \"return\") {\n        this.rval = this.arg = record.arg;\n        this.method = \"return\";\n        this.next = \"end\";\n      } else if (record.type === \"normal\" && afterLoc) {\n        this.next = afterLoc;\n      }\n\n      return ContinueSentinel;\n    },\n\n    finish: function(finallyLoc) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.finallyLoc === finallyLoc) {\n          this.complete(entry.completion, entry.afterLoc);\n          resetTryEntry(entry);\n          return ContinueSentinel;\n        }\n      }\n    },\n\n    \"catch\": function(tryLoc) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.tryLoc === tryLoc) {\n          var record = entry.completion;\n          if (record.type === \"throw\") {\n            var thrown = record.arg;\n            resetTryEntry(entry);\n          }\n          return thrown;\n        }\n      }\n\n      // The context.catch method must only be called with a location\n      // argument that corresponds to a known catch block.\n      throw new Error(\"illegal catch attempt\");\n    },\n\n    delegateYield: function(iterable, resultName, nextLoc) {\n      this.delegate = {\n        iterator: values(iterable),\n        resultName: resultName,\n        nextLoc: nextLoc\n      };\n\n      if (this.method === \"next\") {\n        // Deliberately forget the last sent value so that we don't\n        // accidentally pass it on to the delegate.\n        this.arg = undefined;\n      }\n\n      return ContinueSentinel;\n    }\n  };\n\n  // Regardless of whether this script is executing as a CommonJS module\n  // or not, return the runtime object so that we can declare the variable\n  // regeneratorRuntime in the outer scope, which allows this module to be\n  // injected easily by `bin/regenerator --include-runtime script.js`.\n  return exports;\n\n}(\n  // If this script is executing as a CommonJS module, use module.exports\n  // as the regeneratorRuntime namespace. Otherwise create a new empty\n  // object. Either way, the resulting object will be used to initialize\n  // the regeneratorRuntime variable at the top of this file.\n  typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n  regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n  // This module should not be running in strict mode, so the above\n  // assignment should always work unless something is misconfigured. Just\n  // in case runtime.js accidentally runs in strict mode, in modern engines\n  // we can explicitly access globalThis. In older engines we can escape\n  // strict mode using a global Function call. This could conceivably fail\n  // if a Content Security Policy forbids using Function, but in that case\n  // the proper solution is to fix the accidental strict mode problem. If\n  // you've misconfigured your bundler to force strict mode and applied a\n  // CSP to forbid Function, and you're not willing to fix either of those\n  // problems, please detail your unique predicament in a GitHub issue.\n  if (typeof globalThis === \"object\") {\n    globalThis.regeneratorRuntime = runtime;\n  } else {\n    Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n  }\n}\n","/*!\n  * Bootstrap v4.6.2 (https://getbootstrap.com/)\n  * Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n  */\n(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('jquery'), require('popper.js')) : typeof define === 'function' && define.amd ? define(['exports', 'jquery', 'popper.js'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.bootstrap = {}, global.jQuery, global.Popper));\n})(this, function (exports, $, Popper) {\n  'use strict';\n\n  function _interopDefaultLegacy(e) {\n    return e && typeof e === 'object' && 'default' in e ? e : {\n      'default': e\n    };\n  }\n\n  var $__default = /*#__PURE__*/_interopDefaultLegacy($);\n\n  var Popper__default = /*#__PURE__*/_interopDefaultLegacy(Popper);\n\n  function _defineProperties(target, props) {\n    for (var i = 0; i < props.length; i++) {\n      var descriptor = props[i];\n      descriptor.enumerable = descriptor.enumerable || false;\n      descriptor.configurable = true;\n      if (\"value\" in descriptor) descriptor.writable = true;\n      Object.defineProperty(target, descriptor.key, descriptor);\n    }\n  }\n\n  function _createClass(Constructor, protoProps, staticProps) {\n    if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n    if (staticProps) _defineProperties(Constructor, staticProps);\n    Object.defineProperty(Constructor, \"prototype\", {\n      writable: false\n    });\n    return Constructor;\n  }\n\n  function _extends() {\n    _extends = Object.assign ? Object.assign.bind() : function (target) {\n      for (var i = 1; i < arguments.length; i++) {\n        var source = arguments[i];\n\n        for (var key in source) {\n          if (Object.prototype.hasOwnProperty.call(source, key)) {\n            target[key] = source[key];\n          }\n        }\n      }\n\n      return target;\n    };\n    return _extends.apply(this, arguments);\n  }\n\n  function _inheritsLoose(subClass, superClass) {\n    subClass.prototype = Object.create(superClass.prototype);\n    subClass.prototype.constructor = subClass;\n\n    _setPrototypeOf(subClass, superClass);\n  }\n\n  function _setPrototypeOf(o, p) {\n    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n      o.__proto__ = p;\n      return o;\n    };\n    return _setPrototypeOf(o, p);\n  }\n  /**\n   * --------------------------------------------------------------------------\n   * Bootstrap (v4.6.2): util.js\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n   * --------------------------------------------------------------------------\n   */\n\n  /**\n   * Private TransitionEnd Helpers\n   */\n\n\n  var TRANSITION_END = 'transitionend';\n  var MAX_UID = 1000000;\n  var MILLISECONDS_MULTIPLIER = 1000; // Shoutout AngusCroll (https://goo.gl/pxwQGp)\n\n  function toType(obj) {\n    if (obj === null || typeof obj === 'undefined') {\n      return \"\" + obj;\n    }\n\n    return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase();\n  }\n\n  function getSpecialTransitionEndEvent() {\n    return {\n      bindType: TRANSITION_END,\n      delegateType: TRANSITION_END,\n      handle: function handle(event) {\n        if ($__default[\"default\"](event.target).is(this)) {\n          return event.handleObj.handler.apply(this, arguments); // eslint-disable-line prefer-rest-params\n        }\n\n        return undefined;\n      }\n    };\n  }\n\n  function transitionEndEmulator(duration) {\n    var _this = this;\n\n    var called = false;\n    $__default[\"default\"](this).one(Util.TRANSITION_END, function () {\n      called = true;\n    });\n    setTimeout(function () {\n      if (!called) {\n        Util.triggerTransitionEnd(_this);\n      }\n    }, duration);\n    return this;\n  }\n\n  function setTransitionEndSupport() {\n    $__default[\"default\"].fn.emulateTransitionEnd = transitionEndEmulator;\n    $__default[\"default\"].event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent();\n  }\n  /**\n   * Public Util API\n   */\n\n\n  var Util = {\n    TRANSITION_END: 'bsTransitionEnd',\n    getUID: function getUID(prefix) {\n      do {\n        // eslint-disable-next-line no-bitwise\n        prefix += ~~(Math.random() * MAX_UID); // \"~~\" acts like a faster Math.floor() here\n      } while (document.getElementById(prefix));\n\n      return prefix;\n    },\n    getSelectorFromElement: function getSelectorFromElement(element) {\n      var selector = element.getAttribute('data-target');\n\n      if (!selector || selector === '#') {\n        var hrefAttr = element.getAttribute('href');\n        selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : '';\n      }\n\n      try {\n        return document.querySelector(selector) ? selector : null;\n      } catch (_) {\n        return null;\n      }\n    },\n    getTransitionDurationFromElement: function getTransitionDurationFromElement(element) {\n      if (!element) {\n        return 0;\n      } // Get transition-duration of the element\n\n\n      var transitionDuration = $__default[\"default\"](element).css('transition-duration');\n      var transitionDelay = $__default[\"default\"](element).css('transition-delay');\n      var floatTransitionDuration = parseFloat(transitionDuration);\n      var floatTransitionDelay = parseFloat(transitionDelay); // Return 0 if element or transition duration is not found\n\n      if (!floatTransitionDuration && !floatTransitionDelay) {\n        return 0;\n      } // If multiple durations are defined, take the first\n\n\n      transitionDuration = transitionDuration.split(',')[0];\n      transitionDelay = transitionDelay.split(',')[0];\n      return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;\n    },\n    reflow: function reflow(element) {\n      return element.offsetHeight;\n    },\n    triggerTransitionEnd: function triggerTransitionEnd(element) {\n      $__default[\"default\"](element).trigger(TRANSITION_END);\n    },\n    supportsTransitionEnd: function supportsTransitionEnd() {\n      return Boolean(TRANSITION_END);\n    },\n    isElement: function isElement(obj) {\n      return (obj[0] || obj).nodeType;\n    },\n    typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) {\n      for (var property in configTypes) {\n        if (Object.prototype.hasOwnProperty.call(configTypes, property)) {\n          var expectedTypes = configTypes[property];\n          var value = config[property];\n          var valueType = value && Util.isElement(value) ? 'element' : toType(value);\n\n          if (!new RegExp(expectedTypes).test(valueType)) {\n            throw new Error(componentName.toUpperCase() + \": \" + (\"Option \\\"\" + property + \"\\\" provided type \\\"\" + valueType + \"\\\" \") + (\"but expected type \\\"\" + expectedTypes + \"\\\".\"));\n          }\n        }\n      }\n    },\n    findShadowRoot: function findShadowRoot(element) {\n      if (!document.documentElement.attachShadow) {\n        return null;\n      } // Can find the shadow root otherwise it'll return the document\n\n\n      if (typeof element.getRootNode === 'function') {\n        var root = element.getRootNode();\n        return root instanceof ShadowRoot ? root : null;\n      }\n\n      if (element instanceof ShadowRoot) {\n        return element;\n      } // when we don't find a shadow root\n\n\n      if (!element.parentNode) {\n        return null;\n      }\n\n      return Util.findShadowRoot(element.parentNode);\n    },\n    jQueryDetection: function jQueryDetection() {\n      if (typeof $__default[\"default\"] === 'undefined') {\n        throw new TypeError('Bootstrap\\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\\'s JavaScript.');\n      }\n\n      var version = $__default[\"default\"].fn.jquery.split(' ')[0].split('.');\n      var minMajor = 1;\n      var ltMajor = 2;\n      var minMinor = 9;\n      var minPatch = 1;\n      var maxMajor = 4;\n\n      if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) {\n        throw new Error('Bootstrap\\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0');\n      }\n    }\n  };\n  Util.jQueryDetection();\n  setTransitionEndSupport();\n  /**\n   * Constants\n   */\n\n  var NAME$a = 'alert';\n  var VERSION$a = '4.6.2';\n  var DATA_KEY$a = 'bs.alert';\n  var EVENT_KEY$a = \".\" + DATA_KEY$a;\n  var DATA_API_KEY$7 = '.data-api';\n  var JQUERY_NO_CONFLICT$a = $__default[\"default\"].fn[NAME$a];\n  var CLASS_NAME_ALERT = 'alert';\n  var CLASS_NAME_FADE$5 = 'fade';\n  var CLASS_NAME_SHOW$7 = 'show';\n  var EVENT_CLOSE = \"close\" + EVENT_KEY$a;\n  var EVENT_CLOSED = \"closed\" + EVENT_KEY$a;\n  var EVENT_CLICK_DATA_API$6 = \"click\" + EVENT_KEY$a + DATA_API_KEY$7;\n  var SELECTOR_DISMISS = '[data-dismiss=\"alert\"]';\n  /**\n   * Class definition\n   */\n\n  var Alert = /*#__PURE__*/function () {\n    function Alert(element) {\n      this._element = element;\n    } // Getters\n\n\n    var _proto = Alert.prototype; // Public\n\n    _proto.close = function close(element) {\n      var rootElement = this._element;\n\n      if (element) {\n        rootElement = this._getRootElement(element);\n      }\n\n      var customEvent = this._triggerCloseEvent(rootElement);\n\n      if (customEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      this._removeElement(rootElement);\n    };\n\n    _proto.dispose = function dispose() {\n      $__default[\"default\"].removeData(this._element, DATA_KEY$a);\n      this._element = null;\n    } // Private\n    ;\n\n    _proto._getRootElement = function _getRootElement(element) {\n      var selector = Util.getSelectorFromElement(element);\n      var parent = false;\n\n      if (selector) {\n        parent = document.querySelector(selector);\n      }\n\n      if (!parent) {\n        parent = $__default[\"default\"](element).closest(\".\" + CLASS_NAME_ALERT)[0];\n      }\n\n      return parent;\n    };\n\n    _proto._triggerCloseEvent = function _triggerCloseEvent(element) {\n      var closeEvent = $__default[\"default\"].Event(EVENT_CLOSE);\n      $__default[\"default\"](element).trigger(closeEvent);\n      return closeEvent;\n    };\n\n    _proto._removeElement = function _removeElement(element) {\n      var _this = this;\n\n      $__default[\"default\"](element).removeClass(CLASS_NAME_SHOW$7);\n\n      if (!$__default[\"default\"](element).hasClass(CLASS_NAME_FADE$5)) {\n        this._destroyElement(element);\n\n        return;\n      }\n\n      var transitionDuration = Util.getTransitionDurationFromElement(element);\n      $__default[\"default\"](element).one(Util.TRANSITION_END, function (event) {\n        return _this._destroyElement(element, event);\n      }).emulateTransitionEnd(transitionDuration);\n    };\n\n    _proto._destroyElement = function _destroyElement(element) {\n      $__default[\"default\"](element).detach().trigger(EVENT_CLOSED).remove();\n    } // Static\n    ;\n\n    Alert._jQueryInterface = function _jQueryInterface(config) {\n      return this.each(function () {\n        var $element = $__default[\"default\"](this);\n        var data = $element.data(DATA_KEY$a);\n\n        if (!data) {\n          data = new Alert(this);\n          $element.data(DATA_KEY$a, data);\n        }\n\n        if (config === 'close') {\n          data[config](this);\n        }\n      });\n    };\n\n    Alert._handleDismiss = function _handleDismiss(alertInstance) {\n      return function (event) {\n        if (event) {\n          event.preventDefault();\n        }\n\n        alertInstance.close(this);\n      };\n    };\n\n    _createClass(Alert, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION$a;\n      }\n    }]);\n\n    return Alert;\n  }();\n  /**\n   * Data API implementation\n   */\n\n\n  $__default[\"default\"](document).on(EVENT_CLICK_DATA_API$6, SELECTOR_DISMISS, Alert._handleDismiss(new Alert()));\n  /**\n   * jQuery\n   */\n\n  $__default[\"default\"].fn[NAME$a] = Alert._jQueryInterface;\n  $__default[\"default\"].fn[NAME$a].Constructor = Alert;\n\n  $__default[\"default\"].fn[NAME$a].noConflict = function () {\n    $__default[\"default\"].fn[NAME$a] = JQUERY_NO_CONFLICT$a;\n    return Alert._jQueryInterface;\n  };\n  /**\n   * Constants\n   */\n\n\n  var NAME$9 = 'button';\n  var VERSION$9 = '4.6.2';\n  var DATA_KEY$9 = 'bs.button';\n  var EVENT_KEY$9 = \".\" + DATA_KEY$9;\n  var DATA_API_KEY$6 = '.data-api';\n  var JQUERY_NO_CONFLICT$9 = $__default[\"default\"].fn[NAME$9];\n  var CLASS_NAME_ACTIVE$3 = 'active';\n  var CLASS_NAME_BUTTON = 'btn';\n  var CLASS_NAME_FOCUS = 'focus';\n  var EVENT_CLICK_DATA_API$5 = \"click\" + EVENT_KEY$9 + DATA_API_KEY$6;\n  var EVENT_FOCUS_BLUR_DATA_API = \"focus\" + EVENT_KEY$9 + DATA_API_KEY$6 + \" \" + (\"blur\" + EVENT_KEY$9 + DATA_API_KEY$6);\n  var EVENT_LOAD_DATA_API$2 = \"load\" + EVENT_KEY$9 + DATA_API_KEY$6;\n  var SELECTOR_DATA_TOGGLE_CARROT = '[data-toggle^=\"button\"]';\n  var SELECTOR_DATA_TOGGLES = '[data-toggle=\"buttons\"]';\n  var SELECTOR_DATA_TOGGLE$4 = '[data-toggle=\"button\"]';\n  var SELECTOR_DATA_TOGGLES_BUTTONS = '[data-toggle=\"buttons\"] .btn';\n  var SELECTOR_INPUT = 'input:not([type=\"hidden\"])';\n  var SELECTOR_ACTIVE$2 = '.active';\n  var SELECTOR_BUTTON = '.btn';\n  /**\n   * Class definition\n   */\n\n  var Button = /*#__PURE__*/function () {\n    function Button(element) {\n      this._element = element;\n      this.shouldAvoidTriggerChange = false;\n    } // Getters\n\n\n    var _proto = Button.prototype; // Public\n\n    _proto.toggle = function toggle() {\n      var triggerChangeEvent = true;\n      var addAriaPressed = true;\n      var rootElement = $__default[\"default\"](this._element).closest(SELECTOR_DATA_TOGGLES)[0];\n\n      if (rootElement) {\n        var input = this._element.querySelector(SELECTOR_INPUT);\n\n        if (input) {\n          if (input.type === 'radio') {\n            if (input.checked && this._element.classList.contains(CLASS_NAME_ACTIVE$3)) {\n              triggerChangeEvent = false;\n            } else {\n              var activeElement = rootElement.querySelector(SELECTOR_ACTIVE$2);\n\n              if (activeElement) {\n                $__default[\"default\"](activeElement).removeClass(CLASS_NAME_ACTIVE$3);\n              }\n            }\n          }\n\n          if (triggerChangeEvent) {\n            // if it's not a radio button or checkbox don't add a pointless/invalid checked property to the input\n            if (input.type === 'checkbox' || input.type === 'radio') {\n              input.checked = !this._element.classList.contains(CLASS_NAME_ACTIVE$3);\n            }\n\n            if (!this.shouldAvoidTriggerChange) {\n              $__default[\"default\"](input).trigger('change');\n            }\n          }\n\n          input.focus();\n          addAriaPressed = false;\n        }\n      }\n\n      if (!(this._element.hasAttribute('disabled') || this._element.classList.contains('disabled'))) {\n        if (addAriaPressed) {\n          this._element.setAttribute('aria-pressed', !this._element.classList.contains(CLASS_NAME_ACTIVE$3));\n        }\n\n        if (triggerChangeEvent) {\n          $__default[\"default\"](this._element).toggleClass(CLASS_NAME_ACTIVE$3);\n        }\n      }\n    };\n\n    _proto.dispose = function dispose() {\n      $__default[\"default\"].removeData(this._element, DATA_KEY$9);\n      this._element = null;\n    } // Static\n    ;\n\n    Button._jQueryInterface = function _jQueryInterface(config, avoidTriggerChange) {\n      return this.each(function () {\n        var $element = $__default[\"default\"](this);\n        var data = $element.data(DATA_KEY$9);\n\n        if (!data) {\n          data = new Button(this);\n          $element.data(DATA_KEY$9, data);\n        }\n\n        data.shouldAvoidTriggerChange = avoidTriggerChange;\n\n        if (config === 'toggle') {\n          data[config]();\n        }\n      });\n    };\n\n    _createClass(Button, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION$9;\n      }\n    }]);\n\n    return Button;\n  }();\n  /**\n   * Data API implementation\n   */\n\n\n  $__default[\"default\"](document).on(EVENT_CLICK_DATA_API$5, SELECTOR_DATA_TOGGLE_CARROT, function (event) {\n    var button = event.target;\n    var initialButton = button;\n\n    if (!$__default[\"default\"](button).hasClass(CLASS_NAME_BUTTON)) {\n      button = $__default[\"default\"](button).closest(SELECTOR_BUTTON)[0];\n    }\n\n    if (!button || button.hasAttribute('disabled') || button.classList.contains('disabled')) {\n      event.preventDefault(); // work around Firefox bug #1540995\n    } else {\n      var inputBtn = button.querySelector(SELECTOR_INPUT);\n\n      if (inputBtn && (inputBtn.hasAttribute('disabled') || inputBtn.classList.contains('disabled'))) {\n        event.preventDefault(); // work around Firefox bug #1540995\n\n        return;\n      }\n\n      if (initialButton.tagName === 'INPUT' || button.tagName !== 'LABEL') {\n        Button._jQueryInterface.call($__default[\"default\"](button), 'toggle', initialButton.tagName === 'INPUT');\n      }\n    }\n  }).on(EVENT_FOCUS_BLUR_DATA_API, SELECTOR_DATA_TOGGLE_CARROT, function (event) {\n    var button = $__default[\"default\"](event.target).closest(SELECTOR_BUTTON)[0];\n    $__default[\"default\"](button).toggleClass(CLASS_NAME_FOCUS, /^focus(in)?$/.test(event.type));\n  });\n  $__default[\"default\"](window).on(EVENT_LOAD_DATA_API$2, function () {\n    // ensure correct active class is set to match the controls' actual values/states\n    // find all checkboxes/readio buttons inside data-toggle groups\n    var buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLES_BUTTONS));\n\n    for (var i = 0, len = buttons.length; i < len; i++) {\n      var button = buttons[i];\n      var input = button.querySelector(SELECTOR_INPUT);\n\n      if (input.checked || input.hasAttribute('checked')) {\n        button.classList.add(CLASS_NAME_ACTIVE$3);\n      } else {\n        button.classList.remove(CLASS_NAME_ACTIVE$3);\n      }\n    } // find all button toggles\n\n\n    buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE$4));\n\n    for (var _i = 0, _len = buttons.length; _i < _len; _i++) {\n      var _button = buttons[_i];\n\n      if (_button.getAttribute('aria-pressed') === 'true') {\n        _button.classList.add(CLASS_NAME_ACTIVE$3);\n      } else {\n        _button.classList.remove(CLASS_NAME_ACTIVE$3);\n      }\n    }\n  });\n  /**\n   * jQuery\n   */\n\n  $__default[\"default\"].fn[NAME$9] = Button._jQueryInterface;\n  $__default[\"default\"].fn[NAME$9].Constructor = Button;\n\n  $__default[\"default\"].fn[NAME$9].noConflict = function () {\n    $__default[\"default\"].fn[NAME$9] = JQUERY_NO_CONFLICT$9;\n    return Button._jQueryInterface;\n  };\n  /**\n   * Constants\n   */\n\n\n  var NAME$8 = 'carousel';\n  var VERSION$8 = '4.6.2';\n  var DATA_KEY$8 = 'bs.carousel';\n  var EVENT_KEY$8 = \".\" + DATA_KEY$8;\n  var DATA_API_KEY$5 = '.data-api';\n  var JQUERY_NO_CONFLICT$8 = $__default[\"default\"].fn[NAME$8];\n  var ARROW_LEFT_KEYCODE = 37; // KeyboardEvent.which value for left arrow key\n\n  var ARROW_RIGHT_KEYCODE = 39; // KeyboardEvent.which value for right arrow key\n\n  var TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch\n\n  var SWIPE_THRESHOLD = 40;\n  var CLASS_NAME_CAROUSEL = 'carousel';\n  var CLASS_NAME_ACTIVE$2 = 'active';\n  var CLASS_NAME_SLIDE = 'slide';\n  var CLASS_NAME_RIGHT = 'carousel-item-right';\n  var CLASS_NAME_LEFT = 'carousel-item-left';\n  var CLASS_NAME_NEXT = 'carousel-item-next';\n  var CLASS_NAME_PREV = 'carousel-item-prev';\n  var CLASS_NAME_POINTER_EVENT = 'pointer-event';\n  var DIRECTION_NEXT = 'next';\n  var DIRECTION_PREV = 'prev';\n  var DIRECTION_LEFT = 'left';\n  var DIRECTION_RIGHT = 'right';\n  var EVENT_SLIDE = \"slide\" + EVENT_KEY$8;\n  var EVENT_SLID = \"slid\" + EVENT_KEY$8;\n  var EVENT_KEYDOWN = \"keydown\" + EVENT_KEY$8;\n  var EVENT_MOUSEENTER = \"mouseenter\" + EVENT_KEY$8;\n  var EVENT_MOUSELEAVE = \"mouseleave\" + EVENT_KEY$8;\n  var EVENT_TOUCHSTART = \"touchstart\" + EVENT_KEY$8;\n  var EVENT_TOUCHMOVE = \"touchmove\" + EVENT_KEY$8;\n  var EVENT_TOUCHEND = \"touchend\" + EVENT_KEY$8;\n  var EVENT_POINTERDOWN = \"pointerdown\" + EVENT_KEY$8;\n  var EVENT_POINTERUP = \"pointerup\" + EVENT_KEY$8;\n  var EVENT_DRAG_START = \"dragstart\" + EVENT_KEY$8;\n  var EVENT_LOAD_DATA_API$1 = \"load\" + EVENT_KEY$8 + DATA_API_KEY$5;\n  var EVENT_CLICK_DATA_API$4 = \"click\" + EVENT_KEY$8 + DATA_API_KEY$5;\n  var SELECTOR_ACTIVE$1 = '.active';\n  var SELECTOR_ACTIVE_ITEM = '.active.carousel-item';\n  var SELECTOR_ITEM = '.carousel-item';\n  var SELECTOR_ITEM_IMG = '.carousel-item img';\n  var SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev';\n  var SELECTOR_INDICATORS = '.carousel-indicators';\n  var SELECTOR_DATA_SLIDE = '[data-slide], [data-slide-to]';\n  var SELECTOR_DATA_RIDE = '[data-ride=\"carousel\"]';\n  var Default$7 = {\n    interval: 5000,\n    keyboard: true,\n    slide: false,\n    pause: 'hover',\n    wrap: true,\n    touch: true\n  };\n  var DefaultType$7 = {\n    interval: '(number|boolean)',\n    keyboard: 'boolean',\n    slide: '(boolean|string)',\n    pause: '(string|boolean)',\n    wrap: 'boolean',\n    touch: 'boolean'\n  };\n  var PointerType = {\n    TOUCH: 'touch',\n    PEN: 'pen'\n  };\n  /**\n   * Class definition\n   */\n\n  var Carousel = /*#__PURE__*/function () {\n    function Carousel(element, config) {\n      this._items = null;\n      this._interval = null;\n      this._activeElement = null;\n      this._isPaused = false;\n      this._isSliding = false;\n      this.touchTimeout = null;\n      this.touchStartX = 0;\n      this.touchDeltaX = 0;\n      this._config = this._getConfig(config);\n      this._element = element;\n      this._indicatorsElement = this._element.querySelector(SELECTOR_INDICATORS);\n      this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;\n      this._pointerEvent = Boolean(window.PointerEvent || window.MSPointerEvent);\n\n      this._addEventListeners();\n    } // Getters\n\n\n    var _proto = Carousel.prototype; // Public\n\n    _proto.next = function next() {\n      if (!this._isSliding) {\n        this._slide(DIRECTION_NEXT);\n      }\n    };\n\n    _proto.nextWhenVisible = function nextWhenVisible() {\n      var $element = $__default[\"default\"](this._element); // Don't call next when the page isn't visible\n      // or the carousel or its parent isn't visible\n\n      if (!document.hidden && $element.is(':visible') && $element.css('visibility') !== 'hidden') {\n        this.next();\n      }\n    };\n\n    _proto.prev = function prev() {\n      if (!this._isSliding) {\n        this._slide(DIRECTION_PREV);\n      }\n    };\n\n    _proto.pause = function pause(event) {\n      if (!event) {\n        this._isPaused = true;\n      }\n\n      if (this._element.querySelector(SELECTOR_NEXT_PREV)) {\n        Util.triggerTransitionEnd(this._element);\n        this.cycle(true);\n      }\n\n      clearInterval(this._interval);\n      this._interval = null;\n    };\n\n    _proto.cycle = function cycle(event) {\n      if (!event) {\n        this._isPaused = false;\n      }\n\n      if (this._interval) {\n        clearInterval(this._interval);\n        this._interval = null;\n      }\n\n      if (this._config.interval && !this._isPaused) {\n        this._updateInterval();\n\n        this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval);\n      }\n    };\n\n    _proto.to = function to(index) {\n      var _this = this;\n\n      this._activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM);\n\n      var activeIndex = this._getItemIndex(this._activeElement);\n\n      if (index > this._items.length - 1 || index < 0) {\n        return;\n      }\n\n      if (this._isSliding) {\n        $__default[\"default\"](this._element).one(EVENT_SLID, function () {\n          return _this.to(index);\n        });\n        return;\n      }\n\n      if (activeIndex === index) {\n        this.pause();\n        this.cycle();\n        return;\n      }\n\n      var direction = index > activeIndex ? DIRECTION_NEXT : DIRECTION_PREV;\n\n      this._slide(direction, this._items[index]);\n    };\n\n    _proto.dispose = function dispose() {\n      $__default[\"default\"](this._element).off(EVENT_KEY$8);\n      $__default[\"default\"].removeData(this._element, DATA_KEY$8);\n      this._items = null;\n      this._config = null;\n      this._element = null;\n      this._interval = null;\n      this._isPaused = null;\n      this._isSliding = null;\n      this._activeElement = null;\n      this._indicatorsElement = null;\n    } // Private\n    ;\n\n    _proto._getConfig = function _getConfig(config) {\n      config = _extends({}, Default$7, config);\n      Util.typeCheckConfig(NAME$8, config, DefaultType$7);\n      return config;\n    };\n\n    _proto._handleSwipe = function _handleSwipe() {\n      var absDeltax = Math.abs(this.touchDeltaX);\n\n      if (absDeltax <= SWIPE_THRESHOLD) {\n        return;\n      }\n\n      var direction = absDeltax / this.touchDeltaX;\n      this.touchDeltaX = 0; // swipe left\n\n      if (direction > 0) {\n        this.prev();\n      } // swipe right\n\n\n      if (direction < 0) {\n        this.next();\n      }\n    };\n\n    _proto._addEventListeners = function _addEventListeners() {\n      var _this2 = this;\n\n      if (this._config.keyboard) {\n        $__default[\"default\"](this._element).on(EVENT_KEYDOWN, function (event) {\n          return _this2._keydown(event);\n        });\n      }\n\n      if (this._config.pause === 'hover') {\n        $__default[\"default\"](this._element).on(EVENT_MOUSEENTER, function (event) {\n          return _this2.pause(event);\n        }).on(EVENT_MOUSELEAVE, function (event) {\n          return _this2.cycle(event);\n        });\n      }\n\n      if (this._config.touch) {\n        this._addTouchEventListeners();\n      }\n    };\n\n    _proto._addTouchEventListeners = function _addTouchEventListeners() {\n      var _this3 = this;\n\n      if (!this._touchSupported) {\n        return;\n      }\n\n      var start = function start(event) {\n        if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n          _this3.touchStartX = event.originalEvent.clientX;\n        } else if (!_this3._pointerEvent) {\n          _this3.touchStartX = event.originalEvent.touches[0].clientX;\n        }\n      };\n\n      var move = function move(event) {\n        // ensure swiping with one touch and not pinching\n        _this3.touchDeltaX = event.originalEvent.touches && event.originalEvent.touches.length > 1 ? 0 : event.originalEvent.touches[0].clientX - _this3.touchStartX;\n      };\n\n      var end = function end(event) {\n        if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n          _this3.touchDeltaX = event.originalEvent.clientX - _this3.touchStartX;\n        }\n\n        _this3._handleSwipe();\n\n        if (_this3._config.pause === 'hover') {\n          // If it's a touch-enabled device, mouseenter/leave are fired as\n          // part of the mouse compatibility events on first tap - the carousel\n          // would stop cycling until user tapped out of it;\n          // here, we listen for touchend, explicitly pause the carousel\n          // (as if it's the second time we tap on it, mouseenter compat event\n          // is NOT fired) and after a timeout (to allow for mouse compatibility\n          // events to fire) we explicitly restart cycling\n          _this3.pause();\n\n          if (_this3.touchTimeout) {\n            clearTimeout(_this3.touchTimeout);\n          }\n\n          _this3.touchTimeout = setTimeout(function (event) {\n            return _this3.cycle(event);\n          }, TOUCHEVENT_COMPAT_WAIT + _this3._config.interval);\n        }\n      };\n\n      $__default[\"default\"](this._element.querySelectorAll(SELECTOR_ITEM_IMG)).on(EVENT_DRAG_START, function (e) {\n        return e.preventDefault();\n      });\n\n      if (this._pointerEvent) {\n        $__default[\"default\"](this._element).on(EVENT_POINTERDOWN, function (event) {\n          return start(event);\n        });\n        $__default[\"default\"](this._element).on(EVENT_POINTERUP, function (event) {\n          return end(event);\n        });\n\n        this._element.classList.add(CLASS_NAME_POINTER_EVENT);\n      } else {\n        $__default[\"default\"](this._element).on(EVENT_TOUCHSTART, function (event) {\n          return start(event);\n        });\n        $__default[\"default\"](this._element).on(EVENT_TOUCHMOVE, function (event) {\n          return move(event);\n        });\n        $__default[\"default\"](this._element).on(EVENT_TOUCHEND, function (event) {\n          return end(event);\n        });\n      }\n    };\n\n    _proto._keydown = function _keydown(event) {\n      if (/input|textarea/i.test(event.target.tagName)) {\n        return;\n      }\n\n      switch (event.which) {\n        case ARROW_LEFT_KEYCODE:\n          event.preventDefault();\n          this.prev();\n          break;\n\n        case ARROW_RIGHT_KEYCODE:\n          event.preventDefault();\n          this.next();\n          break;\n      }\n    };\n\n    _proto._getItemIndex = function _getItemIndex(element) {\n      this._items = element && element.parentNode ? [].slice.call(element.parentNode.querySelectorAll(SELECTOR_ITEM)) : [];\n      return this._items.indexOf(element);\n    };\n\n    _proto._getItemByDirection = function _getItemByDirection(direction, activeElement) {\n      var isNextDirection = direction === DIRECTION_NEXT;\n      var isPrevDirection = direction === DIRECTION_PREV;\n\n      var activeIndex = this._getItemIndex(activeElement);\n\n      var lastItemIndex = this._items.length - 1;\n      var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex === lastItemIndex;\n\n      if (isGoingToWrap && !this._config.wrap) {\n        return activeElement;\n      }\n\n      var delta = direction === DIRECTION_PREV ? -1 : 1;\n      var itemIndex = (activeIndex + delta) % this._items.length;\n      return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex];\n    };\n\n    _proto._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) {\n      var targetIndex = this._getItemIndex(relatedTarget);\n\n      var fromIndex = this._getItemIndex(this._element.querySelector(SELECTOR_ACTIVE_ITEM));\n\n      var slideEvent = $__default[\"default\"].Event(EVENT_SLIDE, {\n        relatedTarget: relatedTarget,\n        direction: eventDirectionName,\n        from: fromIndex,\n        to: targetIndex\n      });\n      $__default[\"default\"](this._element).trigger(slideEvent);\n      return slideEvent;\n    };\n\n    _proto._setActiveIndicatorElement = function _setActiveIndicatorElement(element) {\n      if (this._indicatorsElement) {\n        var indicators = [].slice.call(this._indicatorsElement.querySelectorAll(SELECTOR_ACTIVE$1));\n        $__default[\"default\"](indicators).removeClass(CLASS_NAME_ACTIVE$2);\n\n        var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)];\n\n        if (nextIndicator) {\n          $__default[\"default\"](nextIndicator).addClass(CLASS_NAME_ACTIVE$2);\n        }\n      }\n    };\n\n    _proto._updateInterval = function _updateInterval() {\n      var element = this._activeElement || this._element.querySelector(SELECTOR_ACTIVE_ITEM);\n\n      if (!element) {\n        return;\n      }\n\n      var elementInterval = parseInt(element.getAttribute('data-interval'), 10);\n\n      if (elementInterval) {\n        this._config.defaultInterval = this._config.defaultInterval || this._config.interval;\n        this._config.interval = elementInterval;\n      } else {\n        this._config.interval = this._config.defaultInterval || this._config.interval;\n      }\n    };\n\n    _proto._slide = function _slide(direction, element) {\n      var _this4 = this;\n\n      var activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM);\n\n      var activeElementIndex = this._getItemIndex(activeElement);\n\n      var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement);\n\n      var nextElementIndex = this._getItemIndex(nextElement);\n\n      var isCycling = Boolean(this._interval);\n      var directionalClassName;\n      var orderClassName;\n      var eventDirectionName;\n\n      if (direction === DIRECTION_NEXT) {\n        directionalClassName = CLASS_NAME_LEFT;\n        orderClassName = CLASS_NAME_NEXT;\n        eventDirectionName = DIRECTION_LEFT;\n      } else {\n        directionalClassName = CLASS_NAME_RIGHT;\n        orderClassName = CLASS_NAME_PREV;\n        eventDirectionName = DIRECTION_RIGHT;\n      }\n\n      if (nextElement && $__default[\"default\"](nextElement).hasClass(CLASS_NAME_ACTIVE$2)) {\n        this._isSliding = false;\n        return;\n      }\n\n      var slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName);\n\n      if (slideEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      if (!activeElement || !nextElement) {\n        // Some weirdness is happening, so we bail\n        return;\n      }\n\n      this._isSliding = true;\n\n      if (isCycling) {\n        this.pause();\n      }\n\n      this._setActiveIndicatorElement(nextElement);\n\n      this._activeElement = nextElement;\n      var slidEvent = $__default[\"default\"].Event(EVENT_SLID, {\n        relatedTarget: nextElement,\n        direction: eventDirectionName,\n        from: activeElementIndex,\n        to: nextElementIndex\n      });\n\n      if ($__default[\"default\"](this._element).hasClass(CLASS_NAME_SLIDE)) {\n        $__default[\"default\"](nextElement).addClass(orderClassName);\n        Util.reflow(nextElement);\n        $__default[\"default\"](activeElement).addClass(directionalClassName);\n        $__default[\"default\"](nextElement).addClass(directionalClassName);\n        var transitionDuration = Util.getTransitionDurationFromElement(activeElement);\n        $__default[\"default\"](activeElement).one(Util.TRANSITION_END, function () {\n          $__default[\"default\"](nextElement).removeClass(directionalClassName + \" \" + orderClassName).addClass(CLASS_NAME_ACTIVE$2);\n          $__default[\"default\"](activeElement).removeClass(CLASS_NAME_ACTIVE$2 + \" \" + orderClassName + \" \" + directionalClassName);\n          _this4._isSliding = false;\n          setTimeout(function () {\n            return $__default[\"default\"](_this4._element).trigger(slidEvent);\n          }, 0);\n        }).emulateTransitionEnd(transitionDuration);\n      } else {\n        $__default[\"default\"](activeElement).removeClass(CLASS_NAME_ACTIVE$2);\n        $__default[\"default\"](nextElement).addClass(CLASS_NAME_ACTIVE$2);\n        this._isSliding = false;\n        $__default[\"default\"](this._element).trigger(slidEvent);\n      }\n\n      if (isCycling) {\n        this.cycle();\n      }\n    } // Static\n    ;\n\n    Carousel._jQueryInterface = function _jQueryInterface(config) {\n      return this.each(function () {\n        var data = $__default[\"default\"](this).data(DATA_KEY$8);\n\n        var _config = _extends({}, Default$7, $__default[\"default\"](this).data());\n\n        if (typeof config === 'object') {\n          _config = _extends({}, _config, config);\n        }\n\n        var action = typeof config === 'string' ? config : _config.slide;\n\n        if (!data) {\n          data = new Carousel(this, _config);\n          $__default[\"default\"](this).data(DATA_KEY$8, data);\n        }\n\n        if (typeof config === 'number') {\n          data.to(config);\n        } else if (typeof action === 'string') {\n          if (typeof data[action] === 'undefined') {\n            throw new TypeError(\"No method named \\\"\" + action + \"\\\"\");\n          }\n\n          data[action]();\n        } else if (_config.interval && _config.ride) {\n          data.pause();\n          data.cycle();\n        }\n      });\n    };\n\n    Carousel._dataApiClickHandler = function _dataApiClickHandler(event) {\n      var selector = Util.getSelectorFromElement(this);\n\n      if (!selector) {\n        return;\n      }\n\n      var target = $__default[\"default\"](selector)[0];\n\n      if (!target || !$__default[\"default\"](target).hasClass(CLASS_NAME_CAROUSEL)) {\n        return;\n      }\n\n      var config = _extends({}, $__default[\"default\"](target).data(), $__default[\"default\"](this).data());\n\n      var slideIndex = this.getAttribute('data-slide-to');\n\n      if (slideIndex) {\n        config.interval = false;\n      }\n\n      Carousel._jQueryInterface.call($__default[\"default\"](target), config);\n\n      if (slideIndex) {\n        $__default[\"default\"](target).data(DATA_KEY$8).to(slideIndex);\n      }\n\n      event.preventDefault();\n    };\n\n    _createClass(Carousel, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION$8;\n      }\n    }, {\n      key: \"Default\",\n      get: function get() {\n        return Default$7;\n      }\n    }]);\n\n    return Carousel;\n  }();\n  /**\n   * Data API implementation\n   */\n\n\n  $__default[\"default\"](document).on(EVENT_CLICK_DATA_API$4, SELECTOR_DATA_SLIDE, Carousel._dataApiClickHandler);\n  $__default[\"default\"](window).on(EVENT_LOAD_DATA_API$1, function () {\n    var carousels = [].slice.call(document.querySelectorAll(SELECTOR_DATA_RIDE));\n\n    for (var i = 0, len = carousels.length; i < len; i++) {\n      var $carousel = $__default[\"default\"](carousels[i]);\n\n      Carousel._jQueryInterface.call($carousel, $carousel.data());\n    }\n  });\n  /**\n   * jQuery\n   */\n\n  $__default[\"default\"].fn[NAME$8] = Carousel._jQueryInterface;\n  $__default[\"default\"].fn[NAME$8].Constructor = Carousel;\n\n  $__default[\"default\"].fn[NAME$8].noConflict = function () {\n    $__default[\"default\"].fn[NAME$8] = JQUERY_NO_CONFLICT$8;\n    return Carousel._jQueryInterface;\n  };\n  /**\n   * Constants\n   */\n\n\n  var NAME$7 = 'collapse';\n  var VERSION$7 = '4.6.2';\n  var DATA_KEY$7 = 'bs.collapse';\n  var EVENT_KEY$7 = \".\" + DATA_KEY$7;\n  var DATA_API_KEY$4 = '.data-api';\n  var JQUERY_NO_CONFLICT$7 = $__default[\"default\"].fn[NAME$7];\n  var CLASS_NAME_SHOW$6 = 'show';\n  var CLASS_NAME_COLLAPSE = 'collapse';\n  var CLASS_NAME_COLLAPSING = 'collapsing';\n  var CLASS_NAME_COLLAPSED = 'collapsed';\n  var DIMENSION_WIDTH = 'width';\n  var DIMENSION_HEIGHT = 'height';\n  var EVENT_SHOW$4 = \"show\" + EVENT_KEY$7;\n  var EVENT_SHOWN$4 = \"shown\" + EVENT_KEY$7;\n  var EVENT_HIDE$4 = \"hide\" + EVENT_KEY$7;\n  var EVENT_HIDDEN$4 = \"hidden\" + EVENT_KEY$7;\n  var EVENT_CLICK_DATA_API$3 = \"click\" + EVENT_KEY$7 + DATA_API_KEY$4;\n  var SELECTOR_ACTIVES = '.show, .collapsing';\n  var SELECTOR_DATA_TOGGLE$3 = '[data-toggle=\"collapse\"]';\n  var Default$6 = {\n    toggle: true,\n    parent: ''\n  };\n  var DefaultType$6 = {\n    toggle: 'boolean',\n    parent: '(string|element)'\n  };\n  /**\n   * Class definition\n   */\n\n  var Collapse = /*#__PURE__*/function () {\n    function Collapse(element, config) {\n      this._isTransitioning = false;\n      this._element = element;\n      this._config = this._getConfig(config);\n      this._triggerArray = [].slice.call(document.querySelectorAll(\"[data-toggle=\\\"collapse\\\"][href=\\\"#\" + element.id + \"\\\"],\" + (\"[data-toggle=\\\"collapse\\\"][data-target=\\\"#\" + element.id + \"\\\"]\")));\n      var toggleList = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE$3));\n\n      for (var i = 0, len = toggleList.length; i < len; i++) {\n        var elem = toggleList[i];\n        var selector = Util.getSelectorFromElement(elem);\n        var filterElement = [].slice.call(document.querySelectorAll(selector)).filter(function (foundElem) {\n          return foundElem === element;\n        });\n\n        if (selector !== null && filterElement.length > 0) {\n          this._selector = selector;\n\n          this._triggerArray.push(elem);\n        }\n      }\n\n      this._parent = this._config.parent ? this._getParent() : null;\n\n      if (!this._config.parent) {\n        this._addAriaAndCollapsedClass(this._element, this._triggerArray);\n      }\n\n      if (this._config.toggle) {\n        this.toggle();\n      }\n    } // Getters\n\n\n    var _proto = Collapse.prototype; // Public\n\n    _proto.toggle = function toggle() {\n      if ($__default[\"default\"](this._element).hasClass(CLASS_NAME_SHOW$6)) {\n        this.hide();\n      } else {\n        this.show();\n      }\n    };\n\n    _proto.show = function show() {\n      var _this = this;\n\n      if (this._isTransitioning || $__default[\"default\"](this._element).hasClass(CLASS_NAME_SHOW$6)) {\n        return;\n      }\n\n      var actives;\n      var activesData;\n\n      if (this._parent) {\n        actives = [].slice.call(this._parent.querySelectorAll(SELECTOR_ACTIVES)).filter(function (elem) {\n          if (typeof _this._config.parent === 'string') {\n            return elem.getAttribute('data-parent') === _this._config.parent;\n          }\n\n          return elem.classList.contains(CLASS_NAME_COLLAPSE);\n        });\n\n        if (actives.length === 0) {\n          actives = null;\n        }\n      }\n\n      if (actives) {\n        activesData = $__default[\"default\"](actives).not(this._selector).data(DATA_KEY$7);\n\n        if (activesData && activesData._isTransitioning) {\n          return;\n        }\n      }\n\n      var startEvent = $__default[\"default\"].Event(EVENT_SHOW$4);\n      $__default[\"default\"](this._element).trigger(startEvent);\n\n      if (startEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      if (actives) {\n        Collapse._jQueryInterface.call($__default[\"default\"](actives).not(this._selector), 'hide');\n\n        if (!activesData) {\n          $__default[\"default\"](actives).data(DATA_KEY$7, null);\n        }\n      }\n\n      var dimension = this._getDimension();\n\n      $__default[\"default\"](this._element).removeClass(CLASS_NAME_COLLAPSE).addClass(CLASS_NAME_COLLAPSING);\n      this._element.style[dimension] = 0;\n\n      if (this._triggerArray.length) {\n        $__default[\"default\"](this._triggerArray).removeClass(CLASS_NAME_COLLAPSED).attr('aria-expanded', true);\n      }\n\n      this.setTransitioning(true);\n\n      var complete = function complete() {\n        $__default[\"default\"](_this._element).removeClass(CLASS_NAME_COLLAPSING).addClass(CLASS_NAME_COLLAPSE + \" \" + CLASS_NAME_SHOW$6);\n        _this._element.style[dimension] = '';\n\n        _this.setTransitioning(false);\n\n        $__default[\"default\"](_this._element).trigger(EVENT_SHOWN$4);\n      };\n\n      var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);\n      var scrollSize = \"scroll\" + capitalizedDimension;\n      var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n      $__default[\"default\"](this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n      this._element.style[dimension] = this._element[scrollSize] + \"px\";\n    };\n\n    _proto.hide = function hide() {\n      var _this2 = this;\n\n      if (this._isTransitioning || !$__default[\"default\"](this._element).hasClass(CLASS_NAME_SHOW$6)) {\n        return;\n      }\n\n      var startEvent = $__default[\"default\"].Event(EVENT_HIDE$4);\n      $__default[\"default\"](this._element).trigger(startEvent);\n\n      if (startEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      var dimension = this._getDimension();\n\n      this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + \"px\";\n      Util.reflow(this._element);\n      $__default[\"default\"](this._element).addClass(CLASS_NAME_COLLAPSING).removeClass(CLASS_NAME_COLLAPSE + \" \" + CLASS_NAME_SHOW$6);\n      var triggerArrayLength = this._triggerArray.length;\n\n      if (triggerArrayLength > 0) {\n        for (var i = 0; i < triggerArrayLength; i++) {\n          var trigger = this._triggerArray[i];\n          var selector = Util.getSelectorFromElement(trigger);\n\n          if (selector !== null) {\n            var $elem = $__default[\"default\"]([].slice.call(document.querySelectorAll(selector)));\n\n            if (!$elem.hasClass(CLASS_NAME_SHOW$6)) {\n              $__default[\"default\"](trigger).addClass(CLASS_NAME_COLLAPSED).attr('aria-expanded', false);\n            }\n          }\n        }\n      }\n\n      this.setTransitioning(true);\n\n      var complete = function complete() {\n        _this2.setTransitioning(false);\n\n        $__default[\"default\"](_this2._element).removeClass(CLASS_NAME_COLLAPSING).addClass(CLASS_NAME_COLLAPSE).trigger(EVENT_HIDDEN$4);\n      };\n\n      this._element.style[dimension] = '';\n      var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n      $__default[\"default\"](this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n    };\n\n    _proto.setTransitioning = function setTransitioning(isTransitioning) {\n      this._isTransitioning = isTransitioning;\n    };\n\n    _proto.dispose = function dispose() {\n      $__default[\"default\"].removeData(this._element, DATA_KEY$7);\n      this._config = null;\n      this._parent = null;\n      this._element = null;\n      this._triggerArray = null;\n      this._isTransitioning = null;\n    } // Private\n    ;\n\n    _proto._getConfig = function _getConfig(config) {\n      config = _extends({}, Default$6, config);\n      config.toggle = Boolean(config.toggle); // Coerce string values\n\n      Util.typeCheckConfig(NAME$7, config, DefaultType$6);\n      return config;\n    };\n\n    _proto._getDimension = function _getDimension() {\n      var hasWidth = $__default[\"default\"](this._element).hasClass(DIMENSION_WIDTH);\n      return hasWidth ? DIMENSION_WIDTH : DIMENSION_HEIGHT;\n    };\n\n    _proto._getParent = function _getParent() {\n      var _this3 = this;\n\n      var parent;\n\n      if (Util.isElement(this._config.parent)) {\n        parent = this._config.parent; // It's a jQuery object\n\n        if (typeof this._config.parent.jquery !== 'undefined') {\n          parent = this._config.parent[0];\n        }\n      } else {\n        parent = document.querySelector(this._config.parent);\n      }\n\n      var selector = \"[data-toggle=\\\"collapse\\\"][data-parent=\\\"\" + this._config.parent + \"\\\"]\";\n      var children = [].slice.call(parent.querySelectorAll(selector));\n      $__default[\"default\"](children).each(function (i, element) {\n        _this3._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]);\n      });\n      return parent;\n    };\n\n    _proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) {\n      var isOpen = $__default[\"default\"](element).hasClass(CLASS_NAME_SHOW$6);\n\n      if (triggerArray.length) {\n        $__default[\"default\"](triggerArray).toggleClass(CLASS_NAME_COLLAPSED, !isOpen).attr('aria-expanded', isOpen);\n      }\n    } // Static\n    ;\n\n    Collapse._getTargetFromElement = function _getTargetFromElement(element) {\n      var selector = Util.getSelectorFromElement(element);\n      return selector ? document.querySelector(selector) : null;\n    };\n\n    Collapse._jQueryInterface = function _jQueryInterface(config) {\n      return this.each(function () {\n        var $element = $__default[\"default\"](this);\n        var data = $element.data(DATA_KEY$7);\n\n        var _config = _extends({}, Default$6, $element.data(), typeof config === 'object' && config ? config : {});\n\n        if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) {\n          _config.toggle = false;\n        }\n\n        if (!data) {\n          data = new Collapse(this, _config);\n          $element.data(DATA_KEY$7, data);\n        }\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n          }\n\n          data[config]();\n        }\n      });\n    };\n\n    _createClass(Collapse, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION$7;\n      }\n    }, {\n      key: \"Default\",\n      get: function get() {\n        return Default$6;\n      }\n    }]);\n\n    return Collapse;\n  }();\n  /**\n   * Data API implementation\n   */\n\n\n  $__default[\"default\"](document).on(EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$3, function (event) {\n    // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n    if (event.currentTarget.tagName === 'A') {\n      event.preventDefault();\n    }\n\n    var $trigger = $__default[\"default\"](this);\n    var selector = Util.getSelectorFromElement(this);\n    var selectors = [].slice.call(document.querySelectorAll(selector));\n    $__default[\"default\"](selectors).each(function () {\n      var $target = $__default[\"default\"](this);\n      var data = $target.data(DATA_KEY$7);\n      var config = data ? 'toggle' : $trigger.data();\n\n      Collapse._jQueryInterface.call($target, config);\n    });\n  });\n  /**\n   * jQuery\n   */\n\n  $__default[\"default\"].fn[NAME$7] = Collapse._jQueryInterface;\n  $__default[\"default\"].fn[NAME$7].Constructor = Collapse;\n\n  $__default[\"default\"].fn[NAME$7].noConflict = function () {\n    $__default[\"default\"].fn[NAME$7] = JQUERY_NO_CONFLICT$7;\n    return Collapse._jQueryInterface;\n  };\n  /**\n   * Constants\n   */\n\n\n  var NAME$6 = 'dropdown';\n  var VERSION$6 = '4.6.2';\n  var DATA_KEY$6 = 'bs.dropdown';\n  var EVENT_KEY$6 = \".\" + DATA_KEY$6;\n  var DATA_API_KEY$3 = '.data-api';\n  var JQUERY_NO_CONFLICT$6 = $__default[\"default\"].fn[NAME$6];\n  var ESCAPE_KEYCODE$1 = 27; // KeyboardEvent.which value for Escape (Esc) key\n\n  var SPACE_KEYCODE = 32; // KeyboardEvent.which value for space key\n\n  var TAB_KEYCODE = 9; // KeyboardEvent.which value for tab key\n\n  var ARROW_UP_KEYCODE = 38; // KeyboardEvent.which value for up arrow key\n\n  var ARROW_DOWN_KEYCODE = 40; // KeyboardEvent.which value for down arrow key\n\n  var RIGHT_MOUSE_BUTTON_WHICH = 3; // MouseEvent.which value for the right button (assuming a right-handed mouse)\n\n  var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEYCODE + \"|\" + ARROW_DOWN_KEYCODE + \"|\" + ESCAPE_KEYCODE$1);\n  var CLASS_NAME_DISABLED$1 = 'disabled';\n  var CLASS_NAME_SHOW$5 = 'show';\n  var CLASS_NAME_DROPUP = 'dropup';\n  var CLASS_NAME_DROPRIGHT = 'dropright';\n  var CLASS_NAME_DROPLEFT = 'dropleft';\n  var CLASS_NAME_MENURIGHT = 'dropdown-menu-right';\n  var CLASS_NAME_POSITION_STATIC = 'position-static';\n  var EVENT_HIDE$3 = \"hide\" + EVENT_KEY$6;\n  var EVENT_HIDDEN$3 = \"hidden\" + EVENT_KEY$6;\n  var EVENT_SHOW$3 = \"show\" + EVENT_KEY$6;\n  var EVENT_SHOWN$3 = \"shown\" + EVENT_KEY$6;\n  var EVENT_CLICK = \"click\" + EVENT_KEY$6;\n  var EVENT_CLICK_DATA_API$2 = \"click\" + EVENT_KEY$6 + DATA_API_KEY$3;\n  var EVENT_KEYDOWN_DATA_API = \"keydown\" + EVENT_KEY$6 + DATA_API_KEY$3;\n  var EVENT_KEYUP_DATA_API = \"keyup\" + EVENT_KEY$6 + DATA_API_KEY$3;\n  var SELECTOR_DATA_TOGGLE$2 = '[data-toggle=\"dropdown\"]';\n  var SELECTOR_FORM_CHILD = '.dropdown form';\n  var SELECTOR_MENU = '.dropdown-menu';\n  var SELECTOR_NAVBAR_NAV = '.navbar-nav';\n  var SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)';\n  var PLACEMENT_TOP = 'top-start';\n  var PLACEMENT_TOPEND = 'top-end';\n  var PLACEMENT_BOTTOM = 'bottom-start';\n  var PLACEMENT_BOTTOMEND = 'bottom-end';\n  var PLACEMENT_RIGHT = 'right-start';\n  var PLACEMENT_LEFT = 'left-start';\n  var Default$5 = {\n    offset: 0,\n    flip: true,\n    boundary: 'scrollParent',\n    reference: 'toggle',\n    display: 'dynamic',\n    popperConfig: null\n  };\n  var DefaultType$5 = {\n    offset: '(number|string|function)',\n    flip: 'boolean',\n    boundary: '(string|element)',\n    reference: '(string|element)',\n    display: 'string',\n    popperConfig: '(null|object)'\n  };\n  /**\n   * Class definition\n   */\n\n  var Dropdown = /*#__PURE__*/function () {\n    function Dropdown(element, config) {\n      this._element = element;\n      this._popper = null;\n      this._config = this._getConfig(config);\n      this._menu = this._getMenuElement();\n      this._inNavbar = this._detectNavbar();\n\n      this._addEventListeners();\n    } // Getters\n\n\n    var _proto = Dropdown.prototype; // Public\n\n    _proto.toggle = function toggle() {\n      if (this._element.disabled || $__default[\"default\"](this._element).hasClass(CLASS_NAME_DISABLED$1)) {\n        return;\n      }\n\n      var isActive = $__default[\"default\"](this._menu).hasClass(CLASS_NAME_SHOW$5);\n\n      Dropdown._clearMenus();\n\n      if (isActive) {\n        return;\n      }\n\n      this.show(true);\n    };\n\n    _proto.show = function show(usePopper) {\n      if (usePopper === void 0) {\n        usePopper = false;\n      }\n\n      if (this._element.disabled || $__default[\"default\"](this._element).hasClass(CLASS_NAME_DISABLED$1) || $__default[\"default\"](this._menu).hasClass(CLASS_NAME_SHOW$5)) {\n        return;\n      }\n\n      var relatedTarget = {\n        relatedTarget: this._element\n      };\n      var showEvent = $__default[\"default\"].Event(EVENT_SHOW$3, relatedTarget);\n\n      var parent = Dropdown._getParentFromElement(this._element);\n\n      $__default[\"default\"](parent).trigger(showEvent);\n\n      if (showEvent.isDefaultPrevented()) {\n        return;\n      } // Totally disable Popper for Dropdowns in Navbar\n\n\n      if (!this._inNavbar && usePopper) {\n        // Check for Popper dependency\n        if (typeof Popper__default[\"default\"] === 'undefined') {\n          throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)');\n        }\n\n        var referenceElement = this._element;\n\n        if (this._config.reference === 'parent') {\n          referenceElement = parent;\n        } else if (Util.isElement(this._config.reference)) {\n          referenceElement = this._config.reference; // Check if it's jQuery element\n\n          if (typeof this._config.reference.jquery !== 'undefined') {\n            referenceElement = this._config.reference[0];\n          }\n        } // If boundary is not `scrollParent`, then set position to `static`\n        // to allow the menu to \"escape\" the scroll parent's boundaries\n        // https://github.com/twbs/bootstrap/issues/24251\n\n\n        if (this._config.boundary !== 'scrollParent') {\n          $__default[\"default\"](parent).addClass(CLASS_NAME_POSITION_STATIC);\n        }\n\n        this._popper = new Popper__default[\"default\"](referenceElement, this._menu, this._getPopperConfig());\n      } // If this is a touch-enabled device we add extra\n      // empty mouseover listeners to the body's immediate children;\n      // only needed because of broken event delegation on iOS\n      // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n\n\n      if ('ontouchstart' in document.documentElement && $__default[\"default\"](parent).closest(SELECTOR_NAVBAR_NAV).length === 0) {\n        $__default[\"default\"](document.body).children().on('mouseover', null, $__default[\"default\"].noop);\n      }\n\n      this._element.focus();\n\n      this._element.setAttribute('aria-expanded', true);\n\n      $__default[\"default\"](this._menu).toggleClass(CLASS_NAME_SHOW$5);\n      $__default[\"default\"](parent).toggleClass(CLASS_NAME_SHOW$5).trigger($__default[\"default\"].Event(EVENT_SHOWN$3, relatedTarget));\n    };\n\n    _proto.hide = function hide() {\n      if (this._element.disabled || $__default[\"default\"](this._element).hasClass(CLASS_NAME_DISABLED$1) || !$__default[\"default\"](this._menu).hasClass(CLASS_NAME_SHOW$5)) {\n        return;\n      }\n\n      var relatedTarget = {\n        relatedTarget: this._element\n      };\n      var hideEvent = $__default[\"default\"].Event(EVENT_HIDE$3, relatedTarget);\n\n      var parent = Dropdown._getParentFromElement(this._element);\n\n      $__default[\"default\"](parent).trigger(hideEvent);\n\n      if (hideEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      if (this._popper) {\n        this._popper.destroy();\n      }\n\n      $__default[\"default\"](this._menu).toggleClass(CLASS_NAME_SHOW$5);\n      $__default[\"default\"](parent).toggleClass(CLASS_NAME_SHOW$5).trigger($__default[\"default\"].Event(EVENT_HIDDEN$3, relatedTarget));\n    };\n\n    _proto.dispose = function dispose() {\n      $__default[\"default\"].removeData(this._element, DATA_KEY$6);\n      $__default[\"default\"](this._element).off(EVENT_KEY$6);\n      this._element = null;\n      this._menu = null;\n\n      if (this._popper !== null) {\n        this._popper.destroy();\n\n        this._popper = null;\n      }\n    };\n\n    _proto.update = function update() {\n      this._inNavbar = this._detectNavbar();\n\n      if (this._popper !== null) {\n        this._popper.scheduleUpdate();\n      }\n    } // Private\n    ;\n\n    _proto._addEventListeners = function _addEventListeners() {\n      var _this = this;\n\n      $__default[\"default\"](this._element).on(EVENT_CLICK, function (event) {\n        event.preventDefault();\n        event.stopPropagation();\n\n        _this.toggle();\n      });\n    };\n\n    _proto._getConfig = function _getConfig(config) {\n      config = _extends({}, this.constructor.Default, $__default[\"default\"](this._element).data(), config);\n      Util.typeCheckConfig(NAME$6, config, this.constructor.DefaultType);\n      return config;\n    };\n\n    _proto._getMenuElement = function _getMenuElement() {\n      if (!this._menu) {\n        var parent = Dropdown._getParentFromElement(this._element);\n\n        if (parent) {\n          this._menu = parent.querySelector(SELECTOR_MENU);\n        }\n      }\n\n      return this._menu;\n    };\n\n    _proto._getPlacement = function _getPlacement() {\n      var $parentDropdown = $__default[\"default\"](this._element.parentNode);\n      var placement = PLACEMENT_BOTTOM; // Handle dropup\n\n      if ($parentDropdown.hasClass(CLASS_NAME_DROPUP)) {\n        placement = $__default[\"default\"](this._menu).hasClass(CLASS_NAME_MENURIGHT) ? PLACEMENT_TOPEND : PLACEMENT_TOP;\n      } else if ($parentDropdown.hasClass(CLASS_NAME_DROPRIGHT)) {\n        placement = PLACEMENT_RIGHT;\n      } else if ($parentDropdown.hasClass(CLASS_NAME_DROPLEFT)) {\n        placement = PLACEMENT_LEFT;\n      } else if ($__default[\"default\"](this._menu).hasClass(CLASS_NAME_MENURIGHT)) {\n        placement = PLACEMENT_BOTTOMEND;\n      }\n\n      return placement;\n    };\n\n    _proto._detectNavbar = function _detectNavbar() {\n      return $__default[\"default\"](this._element).closest('.navbar').length > 0;\n    };\n\n    _proto._getOffset = function _getOffset() {\n      var _this2 = this;\n\n      var offset = {};\n\n      if (typeof this._config.offset === 'function') {\n        offset.fn = function (data) {\n          data.offsets = _extends({}, data.offsets, _this2._config.offset(data.offsets, _this2._element));\n          return data;\n        };\n      } else {\n        offset.offset = this._config.offset;\n      }\n\n      return offset;\n    };\n\n    _proto._getPopperConfig = function _getPopperConfig() {\n      var popperConfig = {\n        placement: this._getPlacement(),\n        modifiers: {\n          offset: this._getOffset(),\n          flip: {\n            enabled: this._config.flip\n          },\n          preventOverflow: {\n            boundariesElement: this._config.boundary\n          }\n        }\n      }; // Disable Popper if we have a static display\n\n      if (this._config.display === 'static') {\n        popperConfig.modifiers.applyStyle = {\n          enabled: false\n        };\n      }\n\n      return _extends({}, popperConfig, this._config.popperConfig);\n    } // Static\n    ;\n\n    Dropdown._jQueryInterface = function _jQueryInterface(config) {\n      return this.each(function () {\n        var data = $__default[\"default\"](this).data(DATA_KEY$6);\n\n        var _config = typeof config === 'object' ? config : null;\n\n        if (!data) {\n          data = new Dropdown(this, _config);\n          $__default[\"default\"](this).data(DATA_KEY$6, data);\n        }\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n          }\n\n          data[config]();\n        }\n      });\n    };\n\n    Dropdown._clearMenus = function _clearMenus(event) {\n      if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH || event.type === 'keyup' && event.which !== TAB_KEYCODE)) {\n        return;\n      }\n\n      var toggles = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE$2));\n\n      for (var i = 0, len = toggles.length; i < len; i++) {\n        var parent = Dropdown._getParentFromElement(toggles[i]);\n\n        var context = $__default[\"default\"](toggles[i]).data(DATA_KEY$6);\n        var relatedTarget = {\n          relatedTarget: toggles[i]\n        };\n\n        if (event && event.type === 'click') {\n          relatedTarget.clickEvent = event;\n        }\n\n        if (!context) {\n          continue;\n        }\n\n        var dropdownMenu = context._menu;\n\n        if (!$__default[\"default\"](parent).hasClass(CLASS_NAME_SHOW$5)) {\n          continue;\n        }\n\n        if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) && $__default[\"default\"].contains(parent, event.target)) {\n          continue;\n        }\n\n        var hideEvent = $__default[\"default\"].Event(EVENT_HIDE$3, relatedTarget);\n        $__default[\"default\"](parent).trigger(hideEvent);\n\n        if (hideEvent.isDefaultPrevented()) {\n          continue;\n        } // If this is a touch-enabled device we remove the extra\n        // empty mouseover listeners we added for iOS support\n\n\n        if ('ontouchstart' in document.documentElement) {\n          $__default[\"default\"](document.body).children().off('mouseover', null, $__default[\"default\"].noop);\n        }\n\n        toggles[i].setAttribute('aria-expanded', 'false');\n\n        if (context._popper) {\n          context._popper.destroy();\n        }\n\n        $__default[\"default\"](dropdownMenu).removeClass(CLASS_NAME_SHOW$5);\n        $__default[\"default\"](parent).removeClass(CLASS_NAME_SHOW$5).trigger($__default[\"default\"].Event(EVENT_HIDDEN$3, relatedTarget));\n      }\n    };\n\n    Dropdown._getParentFromElement = function _getParentFromElement(element) {\n      var parent;\n      var selector = Util.getSelectorFromElement(element);\n\n      if (selector) {\n        parent = document.querySelector(selector);\n      }\n\n      return parent || element.parentNode;\n    } // eslint-disable-next-line complexity\n    ;\n\n    Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) {\n      // If not input/textarea:\n      //  - And not a key in REGEXP_KEYDOWN => not a dropdown command\n      // If input/textarea:\n      //  - If space key => not a dropdown command\n      //  - If key is other than escape\n      //    - If key is not up or down => not a dropdown command\n      //    - If trigger inside the menu => not a dropdown command\n      if (/input|textarea/i.test(event.target.tagName) ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE$1 && (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE || $__default[\"default\"](event.target).closest(SELECTOR_MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {\n        return;\n      }\n\n      if (this.disabled || $__default[\"default\"](this).hasClass(CLASS_NAME_DISABLED$1)) {\n        return;\n      }\n\n      var parent = Dropdown._getParentFromElement(this);\n\n      var isActive = $__default[\"default\"](parent).hasClass(CLASS_NAME_SHOW$5);\n\n      if (!isActive && event.which === ESCAPE_KEYCODE$1) {\n        return;\n      }\n\n      event.preventDefault();\n      event.stopPropagation();\n\n      if (!isActive || event.which === ESCAPE_KEYCODE$1 || event.which === SPACE_KEYCODE) {\n        if (event.which === ESCAPE_KEYCODE$1) {\n          $__default[\"default\"](parent.querySelector(SELECTOR_DATA_TOGGLE$2)).trigger('focus');\n        }\n\n        $__default[\"default\"](this).trigger('click');\n        return;\n      }\n\n      var items = [].slice.call(parent.querySelectorAll(SELECTOR_VISIBLE_ITEMS)).filter(function (item) {\n        return $__default[\"default\"](item).is(':visible');\n      });\n\n      if (items.length === 0) {\n        return;\n      }\n\n      var index = items.indexOf(event.target);\n\n      if (event.which === ARROW_UP_KEYCODE && index > 0) {\n        // Up\n        index--;\n      }\n\n      if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) {\n        // Down\n        index++;\n      }\n\n      if (index < 0) {\n        index = 0;\n      }\n\n      items[index].focus();\n    };\n\n    _createClass(Dropdown, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION$6;\n      }\n    }, {\n      key: \"Default\",\n      get: function get() {\n        return Default$5;\n      }\n    }, {\n      key: \"DefaultType\",\n      get: function get() {\n        return DefaultType$5;\n      }\n    }]);\n\n    return Dropdown;\n  }();\n  /**\n   * Data API implementation\n   */\n\n\n  $__default[\"default\"](document).on(EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$2, Dropdown._dataApiKeydownHandler).on(EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown._dataApiKeydownHandler).on(EVENT_CLICK_DATA_API$2 + \" \" + EVENT_KEYUP_DATA_API, Dropdown._clearMenus).on(EVENT_CLICK_DATA_API$2, SELECTOR_DATA_TOGGLE$2, function (event) {\n    event.preventDefault();\n    event.stopPropagation();\n\n    Dropdown._jQueryInterface.call($__default[\"default\"](this), 'toggle');\n  }).on(EVENT_CLICK_DATA_API$2, SELECTOR_FORM_CHILD, function (e) {\n    e.stopPropagation();\n  });\n  /**\n   * jQuery\n   */\n\n  $__default[\"default\"].fn[NAME$6] = Dropdown._jQueryInterface;\n  $__default[\"default\"].fn[NAME$6].Constructor = Dropdown;\n\n  $__default[\"default\"].fn[NAME$6].noConflict = function () {\n    $__default[\"default\"].fn[NAME$6] = JQUERY_NO_CONFLICT$6;\n    return Dropdown._jQueryInterface;\n  };\n  /**\n   * Constants\n   */\n\n\n  var NAME$5 = 'modal';\n  var VERSION$5 = '4.6.2';\n  var DATA_KEY$5 = 'bs.modal';\n  var EVENT_KEY$5 = \".\" + DATA_KEY$5;\n  var DATA_API_KEY$2 = '.data-api';\n  var JQUERY_NO_CONFLICT$5 = $__default[\"default\"].fn[NAME$5];\n  var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key\n\n  var CLASS_NAME_SCROLLABLE = 'modal-dialog-scrollable';\n  var CLASS_NAME_SCROLLBAR_MEASURER = 'modal-scrollbar-measure';\n  var CLASS_NAME_BACKDROP = 'modal-backdrop';\n  var CLASS_NAME_OPEN = 'modal-open';\n  var CLASS_NAME_FADE$4 = 'fade';\n  var CLASS_NAME_SHOW$4 = 'show';\n  var CLASS_NAME_STATIC = 'modal-static';\n  var EVENT_HIDE$2 = \"hide\" + EVENT_KEY$5;\n  var EVENT_HIDE_PREVENTED = \"hidePrevented\" + EVENT_KEY$5;\n  var EVENT_HIDDEN$2 = \"hidden\" + EVENT_KEY$5;\n  var EVENT_SHOW$2 = \"show\" + EVENT_KEY$5;\n  var EVENT_SHOWN$2 = \"shown\" + EVENT_KEY$5;\n  var EVENT_FOCUSIN = \"focusin\" + EVENT_KEY$5;\n  var EVENT_RESIZE = \"resize\" + EVENT_KEY$5;\n  var EVENT_CLICK_DISMISS$1 = \"click.dismiss\" + EVENT_KEY$5;\n  var EVENT_KEYDOWN_DISMISS = \"keydown.dismiss\" + EVENT_KEY$5;\n  var EVENT_MOUSEUP_DISMISS = \"mouseup.dismiss\" + EVENT_KEY$5;\n  var EVENT_MOUSEDOWN_DISMISS = \"mousedown.dismiss\" + EVENT_KEY$5;\n  var EVENT_CLICK_DATA_API$1 = \"click\" + EVENT_KEY$5 + DATA_API_KEY$2;\n  var SELECTOR_DIALOG = '.modal-dialog';\n  var SELECTOR_MODAL_BODY = '.modal-body';\n  var SELECTOR_DATA_TOGGLE$1 = '[data-toggle=\"modal\"]';\n  var SELECTOR_DATA_DISMISS$1 = '[data-dismiss=\"modal\"]';\n  var SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top';\n  var SELECTOR_STICKY_CONTENT = '.sticky-top';\n  var Default$4 = {\n    backdrop: true,\n    keyboard: true,\n    focus: true,\n    show: true\n  };\n  var DefaultType$4 = {\n    backdrop: '(boolean|string)',\n    keyboard: 'boolean',\n    focus: 'boolean',\n    show: 'boolean'\n  };\n  /**\n   * Class definition\n   */\n\n  var Modal = /*#__PURE__*/function () {\n    function Modal(element, config) {\n      this._config = this._getConfig(config);\n      this._element = element;\n      this._dialog = element.querySelector(SELECTOR_DIALOG);\n      this._backdrop = null;\n      this._isShown = false;\n      this._isBodyOverflowing = false;\n      this._ignoreBackdropClick = false;\n      this._isTransitioning = false;\n      this._scrollbarWidth = 0;\n    } // Getters\n\n\n    var _proto = Modal.prototype; // Public\n\n    _proto.toggle = function toggle(relatedTarget) {\n      return this._isShown ? this.hide() : this.show(relatedTarget);\n    };\n\n    _proto.show = function show(relatedTarget) {\n      var _this = this;\n\n      if (this._isShown || this._isTransitioning) {\n        return;\n      }\n\n      var showEvent = $__default[\"default\"].Event(EVENT_SHOW$2, {\n        relatedTarget: relatedTarget\n      });\n      $__default[\"default\"](this._element).trigger(showEvent);\n\n      if (showEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      this._isShown = true;\n\n      if ($__default[\"default\"](this._element).hasClass(CLASS_NAME_FADE$4)) {\n        this._isTransitioning = true;\n      }\n\n      this._checkScrollbar();\n\n      this._setScrollbar();\n\n      this._adjustDialog();\n\n      this._setEscapeEvent();\n\n      this._setResizeEvent();\n\n      $__default[\"default\"](this._element).on(EVENT_CLICK_DISMISS$1, SELECTOR_DATA_DISMISS$1, function (event) {\n        return _this.hide(event);\n      });\n      $__default[\"default\"](this._dialog).on(EVENT_MOUSEDOWN_DISMISS, function () {\n        $__default[\"default\"](_this._element).one(EVENT_MOUSEUP_DISMISS, function (event) {\n          if ($__default[\"default\"](event.target).is(_this._element)) {\n            _this._ignoreBackdropClick = true;\n          }\n        });\n      });\n\n      this._showBackdrop(function () {\n        return _this._showElement(relatedTarget);\n      });\n    };\n\n    _proto.hide = function hide(event) {\n      var _this2 = this;\n\n      if (event) {\n        event.preventDefault();\n      }\n\n      if (!this._isShown || this._isTransitioning) {\n        return;\n      }\n\n      var hideEvent = $__default[\"default\"].Event(EVENT_HIDE$2);\n      $__default[\"default\"](this._element).trigger(hideEvent);\n\n      if (!this._isShown || hideEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      this._isShown = false;\n      var transition = $__default[\"default\"](this._element).hasClass(CLASS_NAME_FADE$4);\n\n      if (transition) {\n        this._isTransitioning = true;\n      }\n\n      this._setEscapeEvent();\n\n      this._setResizeEvent();\n\n      $__default[\"default\"](document).off(EVENT_FOCUSIN);\n      $__default[\"default\"](this._element).removeClass(CLASS_NAME_SHOW$4);\n      $__default[\"default\"](this._element).off(EVENT_CLICK_DISMISS$1);\n      $__default[\"default\"](this._dialog).off(EVENT_MOUSEDOWN_DISMISS);\n\n      if (transition) {\n        var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n        $__default[\"default\"](this._element).one(Util.TRANSITION_END, function (event) {\n          return _this2._hideModal(event);\n        }).emulateTransitionEnd(transitionDuration);\n      } else {\n        this._hideModal();\n      }\n    };\n\n    _proto.dispose = function dispose() {\n      [window, this._element, this._dialog].forEach(function (htmlElement) {\n        return $__default[\"default\"](htmlElement).off(EVENT_KEY$5);\n      });\n      /**\n       * `document` has 2 events `EVENT_FOCUSIN` and `EVENT_CLICK_DATA_API`\n       * Do not move `document` in `htmlElements` array\n       * It will remove `EVENT_CLICK_DATA_API` event that should remain\n       */\n\n      $__default[\"default\"](document).off(EVENT_FOCUSIN);\n      $__default[\"default\"].removeData(this._element, DATA_KEY$5);\n      this._config = null;\n      this._element = null;\n      this._dialog = null;\n      this._backdrop = null;\n      this._isShown = null;\n      this._isBodyOverflowing = null;\n      this._ignoreBackdropClick = null;\n      this._isTransitioning = null;\n      this._scrollbarWidth = null;\n    };\n\n    _proto.handleUpdate = function handleUpdate() {\n      this._adjustDialog();\n    } // Private\n    ;\n\n    _proto._getConfig = function _getConfig(config) {\n      config = _extends({}, Default$4, config);\n      Util.typeCheckConfig(NAME$5, config, DefaultType$4);\n      return config;\n    };\n\n    _proto._triggerBackdropTransition = function _triggerBackdropTransition() {\n      var _this3 = this;\n\n      var hideEventPrevented = $__default[\"default\"].Event(EVENT_HIDE_PREVENTED);\n      $__default[\"default\"](this._element).trigger(hideEventPrevented);\n\n      if (hideEventPrevented.isDefaultPrevented()) {\n        return;\n      }\n\n      var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n\n      if (!isModalOverflowing) {\n        this._element.style.overflowY = 'hidden';\n      }\n\n      this._element.classList.add(CLASS_NAME_STATIC);\n\n      var modalTransitionDuration = Util.getTransitionDurationFromElement(this._dialog);\n      $__default[\"default\"](this._element).off(Util.TRANSITION_END);\n      $__default[\"default\"](this._element).one(Util.TRANSITION_END, function () {\n        _this3._element.classList.remove(CLASS_NAME_STATIC);\n\n        if (!isModalOverflowing) {\n          $__default[\"default\"](_this3._element).one(Util.TRANSITION_END, function () {\n            _this3._element.style.overflowY = '';\n          }).emulateTransitionEnd(_this3._element, modalTransitionDuration);\n        }\n      }).emulateTransitionEnd(modalTransitionDuration);\n\n      this._element.focus();\n    };\n\n    _proto._showElement = function _showElement(relatedTarget) {\n      var _this4 = this;\n\n      var transition = $__default[\"default\"](this._element).hasClass(CLASS_NAME_FADE$4);\n      var modalBody = this._dialog ? this._dialog.querySelector(SELECTOR_MODAL_BODY) : null;\n\n      if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n        // Don't move modal's DOM position\n        document.body.appendChild(this._element);\n      }\n\n      this._element.style.display = 'block';\n\n      this._element.removeAttribute('aria-hidden');\n\n      this._element.setAttribute('aria-modal', true);\n\n      this._element.setAttribute('role', 'dialog');\n\n      if ($__default[\"default\"](this._dialog).hasClass(CLASS_NAME_SCROLLABLE) && modalBody) {\n        modalBody.scrollTop = 0;\n      } else {\n        this._element.scrollTop = 0;\n      }\n\n      if (transition) {\n        Util.reflow(this._element);\n      }\n\n      $__default[\"default\"](this._element).addClass(CLASS_NAME_SHOW$4);\n\n      if (this._config.focus) {\n        this._enforceFocus();\n      }\n\n      var shownEvent = $__default[\"default\"].Event(EVENT_SHOWN$2, {\n        relatedTarget: relatedTarget\n      });\n\n      var transitionComplete = function transitionComplete() {\n        if (_this4._config.focus) {\n          _this4._element.focus();\n        }\n\n        _this4._isTransitioning = false;\n        $__default[\"default\"](_this4._element).trigger(shownEvent);\n      };\n\n      if (transition) {\n        var transitionDuration = Util.getTransitionDurationFromElement(this._dialog);\n        $__default[\"default\"](this._dialog).one(Util.TRANSITION_END, transitionComplete).emulateTransitionEnd(transitionDuration);\n      } else {\n        transitionComplete();\n      }\n    };\n\n    _proto._enforceFocus = function _enforceFocus() {\n      var _this5 = this;\n\n      $__default[\"default\"](document).off(EVENT_FOCUSIN) // Guard against infinite focus loop\n      .on(EVENT_FOCUSIN, function (event) {\n        if (document !== event.target && _this5._element !== event.target && $__default[\"default\"](_this5._element).has(event.target).length === 0) {\n          _this5._element.focus();\n        }\n      });\n    };\n\n    _proto._setEscapeEvent = function _setEscapeEvent() {\n      var _this6 = this;\n\n      if (this._isShown) {\n        $__default[\"default\"](this._element).on(EVENT_KEYDOWN_DISMISS, function (event) {\n          if (_this6._config.keyboard && event.which === ESCAPE_KEYCODE) {\n            event.preventDefault();\n\n            _this6.hide();\n          } else if (!_this6._config.keyboard && event.which === ESCAPE_KEYCODE) {\n            _this6._triggerBackdropTransition();\n          }\n        });\n      } else if (!this._isShown) {\n        $__default[\"default\"](this._element).off(EVENT_KEYDOWN_DISMISS);\n      }\n    };\n\n    _proto._setResizeEvent = function _setResizeEvent() {\n      var _this7 = this;\n\n      if (this._isShown) {\n        $__default[\"default\"](window).on(EVENT_RESIZE, function (event) {\n          return _this7.handleUpdate(event);\n        });\n      } else {\n        $__default[\"default\"](window).off(EVENT_RESIZE);\n      }\n    };\n\n    _proto._hideModal = function _hideModal() {\n      var _this8 = this;\n\n      this._element.style.display = 'none';\n\n      this._element.setAttribute('aria-hidden', true);\n\n      this._element.removeAttribute('aria-modal');\n\n      this._element.removeAttribute('role');\n\n      this._isTransitioning = false;\n\n      this._showBackdrop(function () {\n        $__default[\"default\"](document.body).removeClass(CLASS_NAME_OPEN);\n\n        _this8._resetAdjustments();\n\n        _this8._resetScrollbar();\n\n        $__default[\"default\"](_this8._element).trigger(EVENT_HIDDEN$2);\n      });\n    };\n\n    _proto._removeBackdrop = function _removeBackdrop() {\n      if (this._backdrop) {\n        $__default[\"default\"](this._backdrop).remove();\n        this._backdrop = null;\n      }\n    };\n\n    _proto._showBackdrop = function _showBackdrop(callback) {\n      var _this9 = this;\n\n      var animate = $__default[\"default\"](this._element).hasClass(CLASS_NAME_FADE$4) ? CLASS_NAME_FADE$4 : '';\n\n      if (this._isShown && this._config.backdrop) {\n        this._backdrop = document.createElement('div');\n        this._backdrop.className = CLASS_NAME_BACKDROP;\n\n        if (animate) {\n          this._backdrop.classList.add(animate);\n        }\n\n        $__default[\"default\"](this._backdrop).appendTo(document.body);\n        $__default[\"default\"](this._element).on(EVENT_CLICK_DISMISS$1, function (event) {\n          if (_this9._ignoreBackdropClick) {\n            _this9._ignoreBackdropClick = false;\n            return;\n          }\n\n          if (event.target !== event.currentTarget) {\n            return;\n          }\n\n          if (_this9._config.backdrop === 'static') {\n            _this9._triggerBackdropTransition();\n          } else {\n            _this9.hide();\n          }\n        });\n\n        if (animate) {\n          Util.reflow(this._backdrop);\n        }\n\n        $__default[\"default\"](this._backdrop).addClass(CLASS_NAME_SHOW$4);\n\n        if (!callback) {\n          return;\n        }\n\n        if (!animate) {\n          callback();\n          return;\n        }\n\n        var backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);\n        $__default[\"default\"](this._backdrop).one(Util.TRANSITION_END, callback).emulateTransitionEnd(backdropTransitionDuration);\n      } else if (!this._isShown && this._backdrop) {\n        $__default[\"default\"](this._backdrop).removeClass(CLASS_NAME_SHOW$4);\n\n        var callbackRemove = function callbackRemove() {\n          _this9._removeBackdrop();\n\n          if (callback) {\n            callback();\n          }\n        };\n\n        if ($__default[\"default\"](this._element).hasClass(CLASS_NAME_FADE$4)) {\n          var _backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);\n\n          $__default[\"default\"](this._backdrop).one(Util.TRANSITION_END, callbackRemove).emulateTransitionEnd(_backdropTransitionDuration);\n        } else {\n          callbackRemove();\n        }\n      } else if (callback) {\n        callback();\n      }\n    } // ----------------------------------------------------------------------\n    // the following methods are used to handle overflowing modals\n    // todo (fat): these should probably be refactored out of modal.js\n    // ----------------------------------------------------------------------\n    ;\n\n    _proto._adjustDialog = function _adjustDialog() {\n      var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n\n      if (!this._isBodyOverflowing && isModalOverflowing) {\n        this._element.style.paddingLeft = this._scrollbarWidth + \"px\";\n      }\n\n      if (this._isBodyOverflowing && !isModalOverflowing) {\n        this._element.style.paddingRight = this._scrollbarWidth + \"px\";\n      }\n    };\n\n    _proto._resetAdjustments = function _resetAdjustments() {\n      this._element.style.paddingLeft = '';\n      this._element.style.paddingRight = '';\n    };\n\n    _proto._checkScrollbar = function _checkScrollbar() {\n      var rect = document.body.getBoundingClientRect();\n      this._isBodyOverflowing = Math.round(rect.left + rect.right) < window.innerWidth;\n      this._scrollbarWidth = this._getScrollbarWidth();\n    };\n\n    _proto._setScrollbar = function _setScrollbar() {\n      var _this10 = this;\n\n      if (this._isBodyOverflowing) {\n        // Note: DOMNode.style.paddingRight returns the actual value or '' if not set\n        //   while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set\n        var fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT));\n        var stickyContent = [].slice.call(document.querySelectorAll(SELECTOR_STICKY_CONTENT)); // Adjust fixed content padding\n\n        $__default[\"default\"](fixedContent).each(function (index, element) {\n          var actualPadding = element.style.paddingRight;\n          var calculatedPadding = $__default[\"default\"](element).css('padding-right');\n          $__default[\"default\"](element).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + _this10._scrollbarWidth + \"px\");\n        }); // Adjust sticky content margin\n\n        $__default[\"default\"](stickyContent).each(function (index, element) {\n          var actualMargin = element.style.marginRight;\n          var calculatedMargin = $__default[\"default\"](element).css('margin-right');\n          $__default[\"default\"](element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) - _this10._scrollbarWidth + \"px\");\n        }); // Adjust body padding\n\n        var actualPadding = document.body.style.paddingRight;\n        var calculatedPadding = $__default[\"default\"](document.body).css('padding-right');\n        $__default[\"default\"](document.body).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + this._scrollbarWidth + \"px\");\n      }\n\n      $__default[\"default\"](document.body).addClass(CLASS_NAME_OPEN);\n    };\n\n    _proto._resetScrollbar = function _resetScrollbar() {\n      // Restore fixed content padding\n      var fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT));\n      $__default[\"default\"](fixedContent).each(function (index, element) {\n        var padding = $__default[\"default\"](element).data('padding-right');\n        $__default[\"default\"](element).removeData('padding-right');\n        element.style.paddingRight = padding ? padding : '';\n      }); // Restore sticky content\n\n      var elements = [].slice.call(document.querySelectorAll(\"\" + SELECTOR_STICKY_CONTENT));\n      $__default[\"default\"](elements).each(function (index, element) {\n        var margin = $__default[\"default\"](element).data('margin-right');\n\n        if (typeof margin !== 'undefined') {\n          $__default[\"default\"](element).css('margin-right', margin).removeData('margin-right');\n        }\n      }); // Restore body padding\n\n      var padding = $__default[\"default\"](document.body).data('padding-right');\n      $__default[\"default\"](document.body).removeData('padding-right');\n      document.body.style.paddingRight = padding ? padding : '';\n    };\n\n    _proto._getScrollbarWidth = function _getScrollbarWidth() {\n      // thx d.walsh\n      var scrollDiv = document.createElement('div');\n      scrollDiv.className = CLASS_NAME_SCROLLBAR_MEASURER;\n      document.body.appendChild(scrollDiv);\n      var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;\n      document.body.removeChild(scrollDiv);\n      return scrollbarWidth;\n    } // Static\n    ;\n\n    Modal._jQueryInterface = function _jQueryInterface(config, relatedTarget) {\n      return this.each(function () {\n        var data = $__default[\"default\"](this).data(DATA_KEY$5);\n\n        var _config = _extends({}, Default$4, $__default[\"default\"](this).data(), typeof config === 'object' && config ? config : {});\n\n        if (!data) {\n          data = new Modal(this, _config);\n          $__default[\"default\"](this).data(DATA_KEY$5, data);\n        }\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n          }\n\n          data[config](relatedTarget);\n        } else if (_config.show) {\n          data.show(relatedTarget);\n        }\n      });\n    };\n\n    _createClass(Modal, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION$5;\n      }\n    }, {\n      key: \"Default\",\n      get: function get() {\n        return Default$4;\n      }\n    }]);\n\n    return Modal;\n  }();\n  /**\n   * Data API implementation\n   */\n\n\n  $__default[\"default\"](document).on(EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE$1, function (event) {\n    var _this11 = this;\n\n    var target;\n    var selector = Util.getSelectorFromElement(this);\n\n    if (selector) {\n      target = document.querySelector(selector);\n    }\n\n    var config = $__default[\"default\"](target).data(DATA_KEY$5) ? 'toggle' : _extends({}, $__default[\"default\"](target).data(), $__default[\"default\"](this).data());\n\n    if (this.tagName === 'A' || this.tagName === 'AREA') {\n      event.preventDefault();\n    }\n\n    var $target = $__default[\"default\"](target).one(EVENT_SHOW$2, function (showEvent) {\n      if (showEvent.isDefaultPrevented()) {\n        // Only register focus restorer if modal will actually get shown\n        return;\n      }\n\n      $target.one(EVENT_HIDDEN$2, function () {\n        if ($__default[\"default\"](_this11).is(':visible')) {\n          _this11.focus();\n        }\n      });\n    });\n\n    Modal._jQueryInterface.call($__default[\"default\"](target), config, this);\n  });\n  /**\n   * jQuery\n   */\n\n  $__default[\"default\"].fn[NAME$5] = Modal._jQueryInterface;\n  $__default[\"default\"].fn[NAME$5].Constructor = Modal;\n\n  $__default[\"default\"].fn[NAME$5].noConflict = function () {\n    $__default[\"default\"].fn[NAME$5] = JQUERY_NO_CONFLICT$5;\n    return Modal._jQueryInterface;\n  };\n  /**\n   * --------------------------------------------------------------------------\n   * Bootstrap (v4.6.2): tools/sanitizer.js\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n   * --------------------------------------------------------------------------\n   */\n\n\n  var uriAttrs = ['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href'];\n  var ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i;\n  var DefaultWhitelist = {\n    // Global attributes allowed on any supplied element below.\n    '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n    a: ['target', 'href', 'title', 'rel'],\n    area: [],\n    b: [],\n    br: [],\n    col: [],\n    code: [],\n    div: [],\n    em: [],\n    hr: [],\n    h1: [],\n    h2: [],\n    h3: [],\n    h4: [],\n    h5: [],\n    h6: [],\n    i: [],\n    img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n    li: [],\n    ol: [],\n    p: [],\n    pre: [],\n    s: [],\n    small: [],\n    span: [],\n    sub: [],\n    sup: [],\n    strong: [],\n    u: [],\n    ul: []\n  };\n  /**\n   * A pattern that recognizes a commonly useful subset of URLs that are safe.\n   *\n   * Shoutout to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts\n   */\n\n  var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i;\n  /**\n   * A pattern that matches safe data URLs. Only matches image, video and audio types.\n   *\n   * Shoutout to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts\n   */\n\n  var DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z]+=*$/i;\n\n  function allowedAttribute(attr, allowedAttributeList) {\n    var attrName = attr.nodeName.toLowerCase();\n\n    if (allowedAttributeList.indexOf(attrName) !== -1) {\n      if (uriAttrs.indexOf(attrName) !== -1) {\n        return Boolean(SAFE_URL_PATTERN.test(attr.nodeValue) || DATA_URL_PATTERN.test(attr.nodeValue));\n      }\n\n      return true;\n    }\n\n    var regExp = allowedAttributeList.filter(function (attrRegex) {\n      return attrRegex instanceof RegExp;\n    }); // Check if a regular expression validates the attribute.\n\n    for (var i = 0, len = regExp.length; i < len; i++) {\n      if (regExp[i].test(attrName)) {\n        return true;\n      }\n    }\n\n    return false;\n  }\n\n  function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {\n    if (unsafeHtml.length === 0) {\n      return unsafeHtml;\n    }\n\n    if (sanitizeFn && typeof sanitizeFn === 'function') {\n      return sanitizeFn(unsafeHtml);\n    }\n\n    var domParser = new window.DOMParser();\n    var createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');\n    var whitelistKeys = Object.keys(whiteList);\n    var elements = [].slice.call(createdDocument.body.querySelectorAll('*'));\n\n    var _loop = function _loop(i, len) {\n      var el = elements[i];\n      var elName = el.nodeName.toLowerCase();\n\n      if (whitelistKeys.indexOf(el.nodeName.toLowerCase()) === -1) {\n        el.parentNode.removeChild(el);\n        return \"continue\";\n      }\n\n      var attributeList = [].slice.call(el.attributes); // eslint-disable-next-line unicorn/prefer-spread\n\n      var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || []);\n      attributeList.forEach(function (attr) {\n        if (!allowedAttribute(attr, whitelistedAttributes)) {\n          el.removeAttribute(attr.nodeName);\n        }\n      });\n    };\n\n    for (var i = 0, len = elements.length; i < len; i++) {\n      var _ret = _loop(i);\n\n      if (_ret === \"continue\") continue;\n    }\n\n    return createdDocument.body.innerHTML;\n  }\n  /**\n   * Constants\n   */\n\n\n  var NAME$4 = 'tooltip';\n  var VERSION$4 = '4.6.2';\n  var DATA_KEY$4 = 'bs.tooltip';\n  var EVENT_KEY$4 = \".\" + DATA_KEY$4;\n  var JQUERY_NO_CONFLICT$4 = $__default[\"default\"].fn[NAME$4];\n  var CLASS_PREFIX$1 = 'bs-tooltip';\n  var BSCLS_PREFIX_REGEX$1 = new RegExp(\"(^|\\\\s)\" + CLASS_PREFIX$1 + \"\\\\S+\", 'g');\n  var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn'];\n  var CLASS_NAME_FADE$3 = 'fade';\n  var CLASS_NAME_SHOW$3 = 'show';\n  var HOVER_STATE_SHOW = 'show';\n  var HOVER_STATE_OUT = 'out';\n  var SELECTOR_TOOLTIP_INNER = '.tooltip-inner';\n  var SELECTOR_ARROW = '.arrow';\n  var TRIGGER_HOVER = 'hover';\n  var TRIGGER_FOCUS = 'focus';\n  var TRIGGER_CLICK = 'click';\n  var TRIGGER_MANUAL = 'manual';\n  var AttachmentMap = {\n    AUTO: 'auto',\n    TOP: 'top',\n    RIGHT: 'right',\n    BOTTOM: 'bottom',\n    LEFT: 'left'\n  };\n  var Default$3 = {\n    animation: true,\n    template: '<div class=\"tooltip\" role=\"tooltip\">' + '<div class=\"arrow\"></div>' + '<div class=\"tooltip-inner\"></div></div>',\n    trigger: 'hover focus',\n    title: '',\n    delay: 0,\n    html: false,\n    selector: false,\n    placement: 'top',\n    offset: 0,\n    container: false,\n    fallbackPlacement: 'flip',\n    boundary: 'scrollParent',\n    customClass: '',\n    sanitize: true,\n    sanitizeFn: null,\n    whiteList: DefaultWhitelist,\n    popperConfig: null\n  };\n  var DefaultType$3 = {\n    animation: 'boolean',\n    template: 'string',\n    title: '(string|element|function)',\n    trigger: 'string',\n    delay: '(number|object)',\n    html: 'boolean',\n    selector: '(string|boolean)',\n    placement: '(string|function)',\n    offset: '(number|string|function)',\n    container: '(string|element|boolean)',\n    fallbackPlacement: '(string|array)',\n    boundary: '(string|element)',\n    customClass: '(string|function)',\n    sanitize: 'boolean',\n    sanitizeFn: '(null|function)',\n    whiteList: 'object',\n    popperConfig: '(null|object)'\n  };\n  var Event$1 = {\n    HIDE: \"hide\" + EVENT_KEY$4,\n    HIDDEN: \"hidden\" + EVENT_KEY$4,\n    SHOW: \"show\" + EVENT_KEY$4,\n    SHOWN: \"shown\" + EVENT_KEY$4,\n    INSERTED: \"inserted\" + EVENT_KEY$4,\n    CLICK: \"click\" + EVENT_KEY$4,\n    FOCUSIN: \"focusin\" + EVENT_KEY$4,\n    FOCUSOUT: \"focusout\" + EVENT_KEY$4,\n    MOUSEENTER: \"mouseenter\" + EVENT_KEY$4,\n    MOUSELEAVE: \"mouseleave\" + EVENT_KEY$4\n  };\n  /**\n   * Class definition\n   */\n\n  var Tooltip = /*#__PURE__*/function () {\n    function Tooltip(element, config) {\n      if (typeof Popper__default[\"default\"] === 'undefined') {\n        throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)');\n      } // Private\n\n\n      this._isEnabled = true;\n      this._timeout = 0;\n      this._hoverState = '';\n      this._activeTrigger = {};\n      this._popper = null; // Protected\n\n      this.element = element;\n      this.config = this._getConfig(config);\n      this.tip = null;\n\n      this._setListeners();\n    } // Getters\n\n\n    var _proto = Tooltip.prototype; // Public\n\n    _proto.enable = function enable() {\n      this._isEnabled = true;\n    };\n\n    _proto.disable = function disable() {\n      this._isEnabled = false;\n    };\n\n    _proto.toggleEnabled = function toggleEnabled() {\n      this._isEnabled = !this._isEnabled;\n    };\n\n    _proto.toggle = function toggle(event) {\n      if (!this._isEnabled) {\n        return;\n      }\n\n      if (event) {\n        var dataKey = this.constructor.DATA_KEY;\n        var context = $__default[\"default\"](event.currentTarget).data(dataKey);\n\n        if (!context) {\n          context = new this.constructor(event.currentTarget, this._getDelegateConfig());\n          $__default[\"default\"](event.currentTarget).data(dataKey, context);\n        }\n\n        context._activeTrigger.click = !context._activeTrigger.click;\n\n        if (context._isWithActiveTrigger()) {\n          context._enter(null, context);\n        } else {\n          context._leave(null, context);\n        }\n      } else {\n        if ($__default[\"default\"](this.getTipElement()).hasClass(CLASS_NAME_SHOW$3)) {\n          this._leave(null, this);\n\n          return;\n        }\n\n        this._enter(null, this);\n      }\n    };\n\n    _proto.dispose = function dispose() {\n      clearTimeout(this._timeout);\n      $__default[\"default\"].removeData(this.element, this.constructor.DATA_KEY);\n      $__default[\"default\"](this.element).off(this.constructor.EVENT_KEY);\n      $__default[\"default\"](this.element).closest('.modal').off('hide.bs.modal', this._hideModalHandler);\n\n      if (this.tip) {\n        $__default[\"default\"](this.tip).remove();\n      }\n\n      this._isEnabled = null;\n      this._timeout = null;\n      this._hoverState = null;\n      this._activeTrigger = null;\n\n      if (this._popper) {\n        this._popper.destroy();\n      }\n\n      this._popper = null;\n      this.element = null;\n      this.config = null;\n      this.tip = null;\n    };\n\n    _proto.show = function show() {\n      var _this = this;\n\n      if ($__default[\"default\"](this.element).css('display') === 'none') {\n        throw new Error('Please use show on visible elements');\n      }\n\n      var showEvent = $__default[\"default\"].Event(this.constructor.Event.SHOW);\n\n      if (this.isWithContent() && this._isEnabled) {\n        $__default[\"default\"](this.element).trigger(showEvent);\n        var shadowRoot = Util.findShadowRoot(this.element);\n        var isInTheDom = $__default[\"default\"].contains(shadowRoot !== null ? shadowRoot : this.element.ownerDocument.documentElement, this.element);\n\n        if (showEvent.isDefaultPrevented() || !isInTheDom) {\n          return;\n        }\n\n        var tip = this.getTipElement();\n        var tipId = Util.getUID(this.constructor.NAME);\n        tip.setAttribute('id', tipId);\n        this.element.setAttribute('aria-describedby', tipId);\n        this.setContent();\n\n        if (this.config.animation) {\n          $__default[\"default\"](tip).addClass(CLASS_NAME_FADE$3);\n        }\n\n        var placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this.element) : this.config.placement;\n\n        var attachment = this._getAttachment(placement);\n\n        this.addAttachmentClass(attachment);\n\n        var container = this._getContainer();\n\n        $__default[\"default\"](tip).data(this.constructor.DATA_KEY, this);\n\n        if (!$__default[\"default\"].contains(this.element.ownerDocument.documentElement, this.tip)) {\n          $__default[\"default\"](tip).appendTo(container);\n        }\n\n        $__default[\"default\"](this.element).trigger(this.constructor.Event.INSERTED);\n        this._popper = new Popper__default[\"default\"](this.element, tip, this._getPopperConfig(attachment));\n        $__default[\"default\"](tip).addClass(CLASS_NAME_SHOW$3);\n        $__default[\"default\"](tip).addClass(this.config.customClass); // If this is a touch-enabled device we add extra\n        // empty mouseover listeners to the body's immediate children;\n        // only needed because of broken event delegation on iOS\n        // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n\n        if ('ontouchstart' in document.documentElement) {\n          $__default[\"default\"](document.body).children().on('mouseover', null, $__default[\"default\"].noop);\n        }\n\n        var complete = function complete() {\n          if (_this.config.animation) {\n            _this._fixTransition();\n          }\n\n          var prevHoverState = _this._hoverState;\n          _this._hoverState = null;\n          $__default[\"default\"](_this.element).trigger(_this.constructor.Event.SHOWN);\n\n          if (prevHoverState === HOVER_STATE_OUT) {\n            _this._leave(null, _this);\n          }\n        };\n\n        if ($__default[\"default\"](this.tip).hasClass(CLASS_NAME_FADE$3)) {\n          var transitionDuration = Util.getTransitionDurationFromElement(this.tip);\n          $__default[\"default\"](this.tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n        } else {\n          complete();\n        }\n      }\n    };\n\n    _proto.hide = function hide(callback) {\n      var _this2 = this;\n\n      var tip = this.getTipElement();\n      var hideEvent = $__default[\"default\"].Event(this.constructor.Event.HIDE);\n\n      var complete = function complete() {\n        if (_this2._hoverState !== HOVER_STATE_SHOW && tip.parentNode) {\n          tip.parentNode.removeChild(tip);\n        }\n\n        _this2._cleanTipClass();\n\n        _this2.element.removeAttribute('aria-describedby');\n\n        $__default[\"default\"](_this2.element).trigger(_this2.constructor.Event.HIDDEN);\n\n        if (_this2._popper !== null) {\n          _this2._popper.destroy();\n        }\n\n        if (callback) {\n          callback();\n        }\n      };\n\n      $__default[\"default\"](this.element).trigger(hideEvent);\n\n      if (hideEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      $__default[\"default\"](tip).removeClass(CLASS_NAME_SHOW$3); // If this is a touch-enabled device we remove the extra\n      // empty mouseover listeners we added for iOS support\n\n      if ('ontouchstart' in document.documentElement) {\n        $__default[\"default\"](document.body).children().off('mouseover', null, $__default[\"default\"].noop);\n      }\n\n      this._activeTrigger[TRIGGER_CLICK] = false;\n      this._activeTrigger[TRIGGER_FOCUS] = false;\n      this._activeTrigger[TRIGGER_HOVER] = false;\n\n      if ($__default[\"default\"](this.tip).hasClass(CLASS_NAME_FADE$3)) {\n        var transitionDuration = Util.getTransitionDurationFromElement(tip);\n        $__default[\"default\"](tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n      } else {\n        complete();\n      }\n\n      this._hoverState = '';\n    };\n\n    _proto.update = function update() {\n      if (this._popper !== null) {\n        this._popper.scheduleUpdate();\n      }\n    } // Protected\n    ;\n\n    _proto.isWithContent = function isWithContent() {\n      return Boolean(this.getTitle());\n    };\n\n    _proto.addAttachmentClass = function addAttachmentClass(attachment) {\n      $__default[\"default\"](this.getTipElement()).addClass(CLASS_PREFIX$1 + \"-\" + attachment);\n    };\n\n    _proto.getTipElement = function getTipElement() {\n      this.tip = this.tip || $__default[\"default\"](this.config.template)[0];\n      return this.tip;\n    };\n\n    _proto.setContent = function setContent() {\n      var tip = this.getTipElement();\n      this.setElementContent($__default[\"default\"](tip.querySelectorAll(SELECTOR_TOOLTIP_INNER)), this.getTitle());\n      $__default[\"default\"](tip).removeClass(CLASS_NAME_FADE$3 + \" \" + CLASS_NAME_SHOW$3);\n    };\n\n    _proto.setElementContent = function setElementContent($element, content) {\n      if (typeof content === 'object' && (content.nodeType || content.jquery)) {\n        // Content is a DOM node or a jQuery\n        if (this.config.html) {\n          if (!$__default[\"default\"](content).parent().is($element)) {\n            $element.empty().append(content);\n          }\n        } else {\n          $element.text($__default[\"default\"](content).text());\n        }\n\n        return;\n      }\n\n      if (this.config.html) {\n        if (this.config.sanitize) {\n          content = sanitizeHtml(content, this.config.whiteList, this.config.sanitizeFn);\n        }\n\n        $element.html(content);\n      } else {\n        $element.text(content);\n      }\n    };\n\n    _proto.getTitle = function getTitle() {\n      var title = this.element.getAttribute('data-original-title');\n\n      if (!title) {\n        title = typeof this.config.title === 'function' ? this.config.title.call(this.element) : this.config.title;\n      }\n\n      return title;\n    } // Private\n    ;\n\n    _proto._getPopperConfig = function _getPopperConfig(attachment) {\n      var _this3 = this;\n\n      var defaultBsConfig = {\n        placement: attachment,\n        modifiers: {\n          offset: this._getOffset(),\n          flip: {\n            behavior: this.config.fallbackPlacement\n          },\n          arrow: {\n            element: SELECTOR_ARROW\n          },\n          preventOverflow: {\n            boundariesElement: this.config.boundary\n          }\n        },\n        onCreate: function onCreate(data) {\n          if (data.originalPlacement !== data.placement) {\n            _this3._handlePopperPlacementChange(data);\n          }\n        },\n        onUpdate: function onUpdate(data) {\n          return _this3._handlePopperPlacementChange(data);\n        }\n      };\n      return _extends({}, defaultBsConfig, this.config.popperConfig);\n    };\n\n    _proto._getOffset = function _getOffset() {\n      var _this4 = this;\n\n      var offset = {};\n\n      if (typeof this.config.offset === 'function') {\n        offset.fn = function (data) {\n          data.offsets = _extends({}, data.offsets, _this4.config.offset(data.offsets, _this4.element));\n          return data;\n        };\n      } else {\n        offset.offset = this.config.offset;\n      }\n\n      return offset;\n    };\n\n    _proto._getContainer = function _getContainer() {\n      if (this.config.container === false) {\n        return document.body;\n      }\n\n      if (Util.isElement(this.config.container)) {\n        return $__default[\"default\"](this.config.container);\n      }\n\n      return $__default[\"default\"](document).find(this.config.container);\n    };\n\n    _proto._getAttachment = function _getAttachment(placement) {\n      return AttachmentMap[placement.toUpperCase()];\n    };\n\n    _proto._setListeners = function _setListeners() {\n      var _this5 = this;\n\n      var triggers = this.config.trigger.split(' ');\n      triggers.forEach(function (trigger) {\n        if (trigger === 'click') {\n          $__default[\"default\"](_this5.element).on(_this5.constructor.Event.CLICK, _this5.config.selector, function (event) {\n            return _this5.toggle(event);\n          });\n        } else if (trigger !== TRIGGER_MANUAL) {\n          var eventIn = trigger === TRIGGER_HOVER ? _this5.constructor.Event.MOUSEENTER : _this5.constructor.Event.FOCUSIN;\n          var eventOut = trigger === TRIGGER_HOVER ? _this5.constructor.Event.MOUSELEAVE : _this5.constructor.Event.FOCUSOUT;\n          $__default[\"default\"](_this5.element).on(eventIn, _this5.config.selector, function (event) {\n            return _this5._enter(event);\n          }).on(eventOut, _this5.config.selector, function (event) {\n            return _this5._leave(event);\n          });\n        }\n      });\n\n      this._hideModalHandler = function () {\n        if (_this5.element) {\n          _this5.hide();\n        }\n      };\n\n      $__default[\"default\"](this.element).closest('.modal').on('hide.bs.modal', this._hideModalHandler);\n\n      if (this.config.selector) {\n        this.config = _extends({}, this.config, {\n          trigger: 'manual',\n          selector: ''\n        });\n      } else {\n        this._fixTitle();\n      }\n    };\n\n    _proto._fixTitle = function _fixTitle() {\n      var titleType = typeof this.element.getAttribute('data-original-title');\n\n      if (this.element.getAttribute('title') || titleType !== 'string') {\n        this.element.setAttribute('data-original-title', this.element.getAttribute('title') || '');\n        this.element.setAttribute('title', '');\n      }\n    };\n\n    _proto._enter = function _enter(event, context) {\n      var dataKey = this.constructor.DATA_KEY;\n      context = context || $__default[\"default\"](event.currentTarget).data(dataKey);\n\n      if (!context) {\n        context = new this.constructor(event.currentTarget, this._getDelegateConfig());\n        $__default[\"default\"](event.currentTarget).data(dataKey, context);\n      }\n\n      if (event) {\n        context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true;\n      }\n\n      if ($__default[\"default\"](context.getTipElement()).hasClass(CLASS_NAME_SHOW$3) || context._hoverState === HOVER_STATE_SHOW) {\n        context._hoverState = HOVER_STATE_SHOW;\n        return;\n      }\n\n      clearTimeout(context._timeout);\n      context._hoverState = HOVER_STATE_SHOW;\n\n      if (!context.config.delay || !context.config.delay.show) {\n        context.show();\n        return;\n      }\n\n      context._timeout = setTimeout(function () {\n        if (context._hoverState === HOVER_STATE_SHOW) {\n          context.show();\n        }\n      }, context.config.delay.show);\n    };\n\n    _proto._leave = function _leave(event, context) {\n      var dataKey = this.constructor.DATA_KEY;\n      context = context || $__default[\"default\"](event.currentTarget).data(dataKey);\n\n      if (!context) {\n        context = new this.constructor(event.currentTarget, this._getDelegateConfig());\n        $__default[\"default\"](event.currentTarget).data(dataKey, context);\n      }\n\n      if (event) {\n        context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = false;\n      }\n\n      if (context._isWithActiveTrigger()) {\n        return;\n      }\n\n      clearTimeout(context._timeout);\n      context._hoverState = HOVER_STATE_OUT;\n\n      if (!context.config.delay || !context.config.delay.hide) {\n        context.hide();\n        return;\n      }\n\n      context._timeout = setTimeout(function () {\n        if (context._hoverState === HOVER_STATE_OUT) {\n          context.hide();\n        }\n      }, context.config.delay.hide);\n    };\n\n    _proto._isWithActiveTrigger = function _isWithActiveTrigger() {\n      for (var trigger in this._activeTrigger) {\n        if (this._activeTrigger[trigger]) {\n          return true;\n        }\n      }\n\n      return false;\n    };\n\n    _proto._getConfig = function _getConfig(config) {\n      var dataAttributes = $__default[\"default\"](this.element).data();\n      Object.keys(dataAttributes).forEach(function (dataAttr) {\n        if (DISALLOWED_ATTRIBUTES.indexOf(dataAttr) !== -1) {\n          delete dataAttributes[dataAttr];\n        }\n      });\n      config = _extends({}, this.constructor.Default, dataAttributes, typeof config === 'object' && config ? config : {});\n\n      if (typeof config.delay === 'number') {\n        config.delay = {\n          show: config.delay,\n          hide: config.delay\n        };\n      }\n\n      if (typeof config.title === 'number') {\n        config.title = config.title.toString();\n      }\n\n      if (typeof config.content === 'number') {\n        config.content = config.content.toString();\n      }\n\n      Util.typeCheckConfig(NAME$4, config, this.constructor.DefaultType);\n\n      if (config.sanitize) {\n        config.template = sanitizeHtml(config.template, config.whiteList, config.sanitizeFn);\n      }\n\n      return config;\n    };\n\n    _proto._getDelegateConfig = function _getDelegateConfig() {\n      var config = {};\n\n      if (this.config) {\n        for (var key in this.config) {\n          if (this.constructor.Default[key] !== this.config[key]) {\n            config[key] = this.config[key];\n          }\n        }\n      }\n\n      return config;\n    };\n\n    _proto._cleanTipClass = function _cleanTipClass() {\n      var $tip = $__default[\"default\"](this.getTipElement());\n      var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX$1);\n\n      if (tabClass !== null && tabClass.length) {\n        $tip.removeClass(tabClass.join(''));\n      }\n    };\n\n    _proto._handlePopperPlacementChange = function _handlePopperPlacementChange(popperData) {\n      this.tip = popperData.instance.popper;\n\n      this._cleanTipClass();\n\n      this.addAttachmentClass(this._getAttachment(popperData.placement));\n    };\n\n    _proto._fixTransition = function _fixTransition() {\n      var tip = this.getTipElement();\n      var initConfigAnimation = this.config.animation;\n\n      if (tip.getAttribute('x-placement') !== null) {\n        return;\n      }\n\n      $__default[\"default\"](tip).removeClass(CLASS_NAME_FADE$3);\n      this.config.animation = false;\n      this.hide();\n      this.show();\n      this.config.animation = initConfigAnimation;\n    } // Static\n    ;\n\n    Tooltip._jQueryInterface = function _jQueryInterface(config) {\n      return this.each(function () {\n        var $element = $__default[\"default\"](this);\n        var data = $element.data(DATA_KEY$4);\n\n        var _config = typeof config === 'object' && config;\n\n        if (!data && /dispose|hide/.test(config)) {\n          return;\n        }\n\n        if (!data) {\n          data = new Tooltip(this, _config);\n          $element.data(DATA_KEY$4, data);\n        }\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n          }\n\n          data[config]();\n        }\n      });\n    };\n\n    _createClass(Tooltip, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION$4;\n      }\n    }, {\n      key: \"Default\",\n      get: function get() {\n        return Default$3;\n      }\n    }, {\n      key: \"NAME\",\n      get: function get() {\n        return NAME$4;\n      }\n    }, {\n      key: \"DATA_KEY\",\n      get: function get() {\n        return DATA_KEY$4;\n      }\n    }, {\n      key: \"Event\",\n      get: function get() {\n        return Event$1;\n      }\n    }, {\n      key: \"EVENT_KEY\",\n      get: function get() {\n        return EVENT_KEY$4;\n      }\n    }, {\n      key: \"DefaultType\",\n      get: function get() {\n        return DefaultType$3;\n      }\n    }]);\n\n    return Tooltip;\n  }();\n  /**\n   * jQuery\n   */\n\n\n  $__default[\"default\"].fn[NAME$4] = Tooltip._jQueryInterface;\n  $__default[\"default\"].fn[NAME$4].Constructor = Tooltip;\n\n  $__default[\"default\"].fn[NAME$4].noConflict = function () {\n    $__default[\"default\"].fn[NAME$4] = JQUERY_NO_CONFLICT$4;\n    return Tooltip._jQueryInterface;\n  };\n  /**\n   * Constants\n   */\n\n\n  var NAME$3 = 'popover';\n  var VERSION$3 = '4.6.2';\n  var DATA_KEY$3 = 'bs.popover';\n  var EVENT_KEY$3 = \".\" + DATA_KEY$3;\n  var JQUERY_NO_CONFLICT$3 = $__default[\"default\"].fn[NAME$3];\n  var CLASS_PREFIX = 'bs-popover';\n  var BSCLS_PREFIX_REGEX = new RegExp(\"(^|\\\\s)\" + CLASS_PREFIX + \"\\\\S+\", 'g');\n  var CLASS_NAME_FADE$2 = 'fade';\n  var CLASS_NAME_SHOW$2 = 'show';\n  var SELECTOR_TITLE = '.popover-header';\n  var SELECTOR_CONTENT = '.popover-body';\n\n  var Default$2 = _extends({}, Tooltip.Default, {\n    placement: 'right',\n    trigger: 'click',\n    content: '',\n    template: '<div class=\"popover\" role=\"tooltip\">' + '<div class=\"arrow\"></div>' + '<h3 class=\"popover-header\"></h3>' + '<div class=\"popover-body\"></div></div>'\n  });\n\n  var DefaultType$2 = _extends({}, Tooltip.DefaultType, {\n    content: '(string|element|function)'\n  });\n\n  var Event = {\n    HIDE: \"hide\" + EVENT_KEY$3,\n    HIDDEN: \"hidden\" + EVENT_KEY$3,\n    SHOW: \"show\" + EVENT_KEY$3,\n    SHOWN: \"shown\" + EVENT_KEY$3,\n    INSERTED: \"inserted\" + EVENT_KEY$3,\n    CLICK: \"click\" + EVENT_KEY$3,\n    FOCUSIN: \"focusin\" + EVENT_KEY$3,\n    FOCUSOUT: \"focusout\" + EVENT_KEY$3,\n    MOUSEENTER: \"mouseenter\" + EVENT_KEY$3,\n    MOUSELEAVE: \"mouseleave\" + EVENT_KEY$3\n  };\n  /**\n   * Class definition\n   */\n\n  var Popover = /*#__PURE__*/function (_Tooltip) {\n    _inheritsLoose(Popover, _Tooltip);\n\n    function Popover() {\n      return _Tooltip.apply(this, arguments) || this;\n    }\n\n    var _proto = Popover.prototype; // Overrides\n\n    _proto.isWithContent = function isWithContent() {\n      return this.getTitle() || this._getContent();\n    };\n\n    _proto.addAttachmentClass = function addAttachmentClass(attachment) {\n      $__default[\"default\"](this.getTipElement()).addClass(CLASS_PREFIX + \"-\" + attachment);\n    };\n\n    _proto.getTipElement = function getTipElement() {\n      this.tip = this.tip || $__default[\"default\"](this.config.template)[0];\n      return this.tip;\n    };\n\n    _proto.setContent = function setContent() {\n      var $tip = $__default[\"default\"](this.getTipElement()); // We use append for html objects to maintain js events\n\n      this.setElementContent($tip.find(SELECTOR_TITLE), this.getTitle());\n\n      var content = this._getContent();\n\n      if (typeof content === 'function') {\n        content = content.call(this.element);\n      }\n\n      this.setElementContent($tip.find(SELECTOR_CONTENT), content);\n      $tip.removeClass(CLASS_NAME_FADE$2 + \" \" + CLASS_NAME_SHOW$2);\n    } // Private\n    ;\n\n    _proto._getContent = function _getContent() {\n      return this.element.getAttribute('data-content') || this.config.content;\n    };\n\n    _proto._cleanTipClass = function _cleanTipClass() {\n      var $tip = $__default[\"default\"](this.getTipElement());\n      var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX);\n\n      if (tabClass !== null && tabClass.length > 0) {\n        $tip.removeClass(tabClass.join(''));\n      }\n    } // Static\n    ;\n\n    Popover._jQueryInterface = function _jQueryInterface(config) {\n      return this.each(function () {\n        var data = $__default[\"default\"](this).data(DATA_KEY$3);\n\n        var _config = typeof config === 'object' ? config : null;\n\n        if (!data && /dispose|hide/.test(config)) {\n          return;\n        }\n\n        if (!data) {\n          data = new Popover(this, _config);\n          $__default[\"default\"](this).data(DATA_KEY$3, data);\n        }\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n          }\n\n          data[config]();\n        }\n      });\n    };\n\n    _createClass(Popover, null, [{\n      key: \"VERSION\",\n      get: // Getters\n      function get() {\n        return VERSION$3;\n      }\n    }, {\n      key: \"Default\",\n      get: function get() {\n        return Default$2;\n      }\n    }, {\n      key: \"NAME\",\n      get: function get() {\n        return NAME$3;\n      }\n    }, {\n      key: \"DATA_KEY\",\n      get: function get() {\n        return DATA_KEY$3;\n      }\n    }, {\n      key: \"Event\",\n      get: function get() {\n        return Event;\n      }\n    }, {\n      key: \"EVENT_KEY\",\n      get: function get() {\n        return EVENT_KEY$3;\n      }\n    }, {\n      key: \"DefaultType\",\n      get: function get() {\n        return DefaultType$2;\n      }\n    }]);\n\n    return Popover;\n  }(Tooltip);\n  /**\n   * jQuery\n   */\n\n\n  $__default[\"default\"].fn[NAME$3] = Popover._jQueryInterface;\n  $__default[\"default\"].fn[NAME$3].Constructor = Popover;\n\n  $__default[\"default\"].fn[NAME$3].noConflict = function () {\n    $__default[\"default\"].fn[NAME$3] = JQUERY_NO_CONFLICT$3;\n    return Popover._jQueryInterface;\n  };\n  /**\n   * Constants\n   */\n\n\n  var NAME$2 = 'scrollspy';\n  var VERSION$2 = '4.6.2';\n  var DATA_KEY$2 = 'bs.scrollspy';\n  var EVENT_KEY$2 = \".\" + DATA_KEY$2;\n  var DATA_API_KEY$1 = '.data-api';\n  var JQUERY_NO_CONFLICT$2 = $__default[\"default\"].fn[NAME$2];\n  var CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item';\n  var CLASS_NAME_ACTIVE$1 = 'active';\n  var EVENT_ACTIVATE = \"activate\" + EVENT_KEY$2;\n  var EVENT_SCROLL = \"scroll\" + EVENT_KEY$2;\n  var EVENT_LOAD_DATA_API = \"load\" + EVENT_KEY$2 + DATA_API_KEY$1;\n  var METHOD_OFFSET = 'offset';\n  var METHOD_POSITION = 'position';\n  var SELECTOR_DATA_SPY = '[data-spy=\"scroll\"]';\n  var SELECTOR_NAV_LIST_GROUP$1 = '.nav, .list-group';\n  var SELECTOR_NAV_LINKS = '.nav-link';\n  var SELECTOR_NAV_ITEMS = '.nav-item';\n  var SELECTOR_LIST_ITEMS = '.list-group-item';\n  var SELECTOR_DROPDOWN$1 = '.dropdown';\n  var SELECTOR_DROPDOWN_ITEMS = '.dropdown-item';\n  var SELECTOR_DROPDOWN_TOGGLE$1 = '.dropdown-toggle';\n  var Default$1 = {\n    offset: 10,\n    method: 'auto',\n    target: ''\n  };\n  var DefaultType$1 = {\n    offset: 'number',\n    method: 'string',\n    target: '(string|element)'\n  };\n  /**\n   * Class definition\n   */\n\n  var ScrollSpy = /*#__PURE__*/function () {\n    function ScrollSpy(element, config) {\n      var _this = this;\n\n      this._element = element;\n      this._scrollElement = element.tagName === 'BODY' ? window : element;\n      this._config = this._getConfig(config);\n      this._selector = this._config.target + \" \" + SELECTOR_NAV_LINKS + \",\" + (this._config.target + \" \" + SELECTOR_LIST_ITEMS + \",\") + (this._config.target + \" \" + SELECTOR_DROPDOWN_ITEMS);\n      this._offsets = [];\n      this._targets = [];\n      this._activeTarget = null;\n      this._scrollHeight = 0;\n      $__default[\"default\"](this._scrollElement).on(EVENT_SCROLL, function (event) {\n        return _this._process(event);\n      });\n      this.refresh();\n\n      this._process();\n    } // Getters\n\n\n    var _proto = ScrollSpy.prototype; // Public\n\n    _proto.refresh = function refresh() {\n      var _this2 = this;\n\n      var autoMethod = this._scrollElement === this._scrollElement.window ? METHOD_OFFSET : METHOD_POSITION;\n      var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method;\n      var offsetBase = offsetMethod === METHOD_POSITION ? this._getScrollTop() : 0;\n      this._offsets = [];\n      this._targets = [];\n      this._scrollHeight = this._getScrollHeight();\n      var targets = [].slice.call(document.querySelectorAll(this._selector));\n      targets.map(function (element) {\n        var target;\n        var targetSelector = Util.getSelectorFromElement(element);\n\n        if (targetSelector) {\n          target = document.querySelector(targetSelector);\n        }\n\n        if (target) {\n          var targetBCR = target.getBoundingClientRect();\n\n          if (targetBCR.width || targetBCR.height) {\n            // TODO (fat): remove sketch reliance on jQuery position/offset\n            return [$__default[\"default\"](target)[offsetMethod]().top + offsetBase, targetSelector];\n          }\n        }\n\n        return null;\n      }).filter(Boolean).sort(function (a, b) {\n        return a[0] - b[0];\n      }).forEach(function (item) {\n        _this2._offsets.push(item[0]);\n\n        _this2._targets.push(item[1]);\n      });\n    };\n\n    _proto.dispose = function dispose() {\n      $__default[\"default\"].removeData(this._element, DATA_KEY$2);\n      $__default[\"default\"](this._scrollElement).off(EVENT_KEY$2);\n      this._element = null;\n      this._scrollElement = null;\n      this._config = null;\n      this._selector = null;\n      this._offsets = null;\n      this._targets = null;\n      this._activeTarget = null;\n      this._scrollHeight = null;\n    } // Private\n    ;\n\n    _proto._getConfig = function _getConfig(config) {\n      config = _extends({}, Default$1, typeof config === 'object' && config ? config : {});\n\n      if (typeof config.target !== 'string' && Util.isElement(config.target)) {\n        var id = $__default[\"default\"](config.target).attr('id');\n\n        if (!id) {\n          id = Util.getUID(NAME$2);\n          $__default[\"default\"](config.target).attr('id', id);\n        }\n\n        config.target = \"#\" + id;\n      }\n\n      Util.typeCheckConfig(NAME$2, config, DefaultType$1);\n      return config;\n    };\n\n    _proto._getScrollTop = function _getScrollTop() {\n      return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop;\n    };\n\n    _proto._getScrollHeight = function _getScrollHeight() {\n      return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);\n    };\n\n    _proto._getOffsetHeight = function _getOffsetHeight() {\n      return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height;\n    };\n\n    _proto._process = function _process() {\n      var scrollTop = this._getScrollTop() + this._config.offset;\n\n      var scrollHeight = this._getScrollHeight();\n\n      var maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight();\n\n      if (this._scrollHeight !== scrollHeight) {\n        this.refresh();\n      }\n\n      if (scrollTop >= maxScroll) {\n        var target = this._targets[this._targets.length - 1];\n\n        if (this._activeTarget !== target) {\n          this._activate(target);\n        }\n\n        return;\n      }\n\n      if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n        this._activeTarget = null;\n\n        this._clear();\n\n        return;\n      }\n\n      for (var i = this._offsets.length; i--;) {\n        var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]);\n\n        if (isActiveTarget) {\n          this._activate(this._targets[i]);\n        }\n      }\n    };\n\n    _proto._activate = function _activate(target) {\n      this._activeTarget = target;\n\n      this._clear();\n\n      var queries = this._selector.split(',').map(function (selector) {\n        return selector + \"[data-target=\\\"\" + target + \"\\\"],\" + selector + \"[href=\\\"\" + target + \"\\\"]\";\n      });\n\n      var $link = $__default[\"default\"]([].slice.call(document.querySelectorAll(queries.join(','))));\n\n      if ($link.hasClass(CLASS_NAME_DROPDOWN_ITEM)) {\n        $link.closest(SELECTOR_DROPDOWN$1).find(SELECTOR_DROPDOWN_TOGGLE$1).addClass(CLASS_NAME_ACTIVE$1);\n        $link.addClass(CLASS_NAME_ACTIVE$1);\n      } else {\n        // Set triggered link as active\n        $link.addClass(CLASS_NAME_ACTIVE$1); // Set triggered links parents as active\n        // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n\n        $link.parents(SELECTOR_NAV_LIST_GROUP$1).prev(SELECTOR_NAV_LINKS + \", \" + SELECTOR_LIST_ITEMS).addClass(CLASS_NAME_ACTIVE$1); // Handle special case when .nav-link is inside .nav-item\n\n        $link.parents(SELECTOR_NAV_LIST_GROUP$1).prev(SELECTOR_NAV_ITEMS).children(SELECTOR_NAV_LINKS).addClass(CLASS_NAME_ACTIVE$1);\n      }\n\n      $__default[\"default\"](this._scrollElement).trigger(EVENT_ACTIVATE, {\n        relatedTarget: target\n      });\n    };\n\n    _proto._clear = function _clear() {\n      [].slice.call(document.querySelectorAll(this._selector)).filter(function (node) {\n        return node.classList.contains(CLASS_NAME_ACTIVE$1);\n      }).forEach(function (node) {\n        return node.classList.remove(CLASS_NAME_ACTIVE$1);\n      });\n    } // Static\n    ;\n\n    ScrollSpy._jQueryInterface = function _jQueryInterface(config) {\n      return this.each(function () {\n        var data = $__default[\"default\"](this).data(DATA_KEY$2);\n\n        var _config = typeof config === 'object' && config;\n\n        if (!data) {\n          data = new ScrollSpy(this, _config);\n          $__default[\"default\"](this).data(DATA_KEY$2, data);\n        }\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n          }\n\n          data[config]();\n        }\n      });\n    };\n\n    _createClass(ScrollSpy, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION$2;\n      }\n    }, {\n      key: \"Default\",\n      get: function get() {\n        return Default$1;\n      }\n    }]);\n\n    return ScrollSpy;\n  }();\n  /**\n   * Data API implementation\n   */\n\n\n  $__default[\"default\"](window).on(EVENT_LOAD_DATA_API, function () {\n    var scrollSpys = [].slice.call(document.querySelectorAll(SELECTOR_DATA_SPY));\n    var scrollSpysLength = scrollSpys.length;\n\n    for (var i = scrollSpysLength; i--;) {\n      var $spy = $__default[\"default\"](scrollSpys[i]);\n\n      ScrollSpy._jQueryInterface.call($spy, $spy.data());\n    }\n  });\n  /**\n   * jQuery\n   */\n\n  $__default[\"default\"].fn[NAME$2] = ScrollSpy._jQueryInterface;\n  $__default[\"default\"].fn[NAME$2].Constructor = ScrollSpy;\n\n  $__default[\"default\"].fn[NAME$2].noConflict = function () {\n    $__default[\"default\"].fn[NAME$2] = JQUERY_NO_CONFLICT$2;\n    return ScrollSpy._jQueryInterface;\n  };\n  /**\n   * Constants\n   */\n\n\n  var NAME$1 = 'tab';\n  var VERSION$1 = '4.6.2';\n  var DATA_KEY$1 = 'bs.tab';\n  var EVENT_KEY$1 = \".\" + DATA_KEY$1;\n  var DATA_API_KEY = '.data-api';\n  var JQUERY_NO_CONFLICT$1 = $__default[\"default\"].fn[NAME$1];\n  var CLASS_NAME_DROPDOWN_MENU = 'dropdown-menu';\n  var CLASS_NAME_ACTIVE = 'active';\n  var CLASS_NAME_DISABLED = 'disabled';\n  var CLASS_NAME_FADE$1 = 'fade';\n  var CLASS_NAME_SHOW$1 = 'show';\n  var EVENT_HIDE$1 = \"hide\" + EVENT_KEY$1;\n  var EVENT_HIDDEN$1 = \"hidden\" + EVENT_KEY$1;\n  var EVENT_SHOW$1 = \"show\" + EVENT_KEY$1;\n  var EVENT_SHOWN$1 = \"shown\" + EVENT_KEY$1;\n  var EVENT_CLICK_DATA_API = \"click\" + EVENT_KEY$1 + DATA_API_KEY;\n  var SELECTOR_DROPDOWN = '.dropdown';\n  var SELECTOR_NAV_LIST_GROUP = '.nav, .list-group';\n  var SELECTOR_ACTIVE = '.active';\n  var SELECTOR_ACTIVE_UL = '> li > .active';\n  var SELECTOR_DATA_TOGGLE = '[data-toggle=\"tab\"], [data-toggle=\"pill\"], [data-toggle=\"list\"]';\n  var SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';\n  var SELECTOR_DROPDOWN_ACTIVE_CHILD = '> .dropdown-menu .active';\n  /**\n   * Class definition\n   */\n\n  var Tab = /*#__PURE__*/function () {\n    function Tab(element) {\n      this._element = element;\n    } // Getters\n\n\n    var _proto = Tab.prototype; // Public\n\n    _proto.show = function show() {\n      var _this = this;\n\n      if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && $__default[\"default\"](this._element).hasClass(CLASS_NAME_ACTIVE) || $__default[\"default\"](this._element).hasClass(CLASS_NAME_DISABLED) || this._element.hasAttribute('disabled')) {\n        return;\n      }\n\n      var target;\n      var previous;\n      var listElement = $__default[\"default\"](this._element).closest(SELECTOR_NAV_LIST_GROUP)[0];\n      var selector = Util.getSelectorFromElement(this._element);\n\n      if (listElement) {\n        var itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE;\n        previous = $__default[\"default\"].makeArray($__default[\"default\"](listElement).find(itemSelector));\n        previous = previous[previous.length - 1];\n      }\n\n      var hideEvent = $__default[\"default\"].Event(EVENT_HIDE$1, {\n        relatedTarget: this._element\n      });\n      var showEvent = $__default[\"default\"].Event(EVENT_SHOW$1, {\n        relatedTarget: previous\n      });\n\n      if (previous) {\n        $__default[\"default\"](previous).trigger(hideEvent);\n      }\n\n      $__default[\"default\"](this._element).trigger(showEvent);\n\n      if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      if (selector) {\n        target = document.querySelector(selector);\n      }\n\n      this._activate(this._element, listElement);\n\n      var complete = function complete() {\n        var hiddenEvent = $__default[\"default\"].Event(EVENT_HIDDEN$1, {\n          relatedTarget: _this._element\n        });\n        var shownEvent = $__default[\"default\"].Event(EVENT_SHOWN$1, {\n          relatedTarget: previous\n        });\n        $__default[\"default\"](previous).trigger(hiddenEvent);\n        $__default[\"default\"](_this._element).trigger(shownEvent);\n      };\n\n      if (target) {\n        this._activate(target, target.parentNode, complete);\n      } else {\n        complete();\n      }\n    };\n\n    _proto.dispose = function dispose() {\n      $__default[\"default\"].removeData(this._element, DATA_KEY$1);\n      this._element = null;\n    } // Private\n    ;\n\n    _proto._activate = function _activate(element, container, callback) {\n      var _this2 = this;\n\n      var activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ? $__default[\"default\"](container).find(SELECTOR_ACTIVE_UL) : $__default[\"default\"](container).children(SELECTOR_ACTIVE);\n      var active = activeElements[0];\n      var isTransitioning = callback && active && $__default[\"default\"](active).hasClass(CLASS_NAME_FADE$1);\n\n      var complete = function complete() {\n        return _this2._transitionComplete(element, active, callback);\n      };\n\n      if (active && isTransitioning) {\n        var transitionDuration = Util.getTransitionDurationFromElement(active);\n        $__default[\"default\"](active).removeClass(CLASS_NAME_SHOW$1).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n      } else {\n        complete();\n      }\n    };\n\n    _proto._transitionComplete = function _transitionComplete(element, active, callback) {\n      if (active) {\n        $__default[\"default\"](active).removeClass(CLASS_NAME_ACTIVE);\n        var dropdownChild = $__default[\"default\"](active.parentNode).find(SELECTOR_DROPDOWN_ACTIVE_CHILD)[0];\n\n        if (dropdownChild) {\n          $__default[\"default\"](dropdownChild).removeClass(CLASS_NAME_ACTIVE);\n        }\n\n        if (active.getAttribute('role') === 'tab') {\n          active.setAttribute('aria-selected', false);\n        }\n      }\n\n      $__default[\"default\"](element).addClass(CLASS_NAME_ACTIVE);\n\n      if (element.getAttribute('role') === 'tab') {\n        element.setAttribute('aria-selected', true);\n      }\n\n      Util.reflow(element);\n\n      if (element.classList.contains(CLASS_NAME_FADE$1)) {\n        element.classList.add(CLASS_NAME_SHOW$1);\n      }\n\n      var parent = element.parentNode;\n\n      if (parent && parent.nodeName === 'LI') {\n        parent = parent.parentNode;\n      }\n\n      if (parent && $__default[\"default\"](parent).hasClass(CLASS_NAME_DROPDOWN_MENU)) {\n        var dropdownElement = $__default[\"default\"](element).closest(SELECTOR_DROPDOWN)[0];\n\n        if (dropdownElement) {\n          var dropdownToggleList = [].slice.call(dropdownElement.querySelectorAll(SELECTOR_DROPDOWN_TOGGLE));\n          $__default[\"default\"](dropdownToggleList).addClass(CLASS_NAME_ACTIVE);\n        }\n\n        element.setAttribute('aria-expanded', true);\n      }\n\n      if (callback) {\n        callback();\n      }\n    } // Static\n    ;\n\n    Tab._jQueryInterface = function _jQueryInterface(config) {\n      return this.each(function () {\n        var $this = $__default[\"default\"](this);\n        var data = $this.data(DATA_KEY$1);\n\n        if (!data) {\n          data = new Tab(this);\n          $this.data(DATA_KEY$1, data);\n        }\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n          }\n\n          data[config]();\n        }\n      });\n    };\n\n    _createClass(Tab, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION$1;\n      }\n    }]);\n\n    return Tab;\n  }();\n  /**\n   * Data API implementation\n   */\n\n\n  $__default[\"default\"](document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n    event.preventDefault();\n\n    Tab._jQueryInterface.call($__default[\"default\"](this), 'show');\n  });\n  /**\n   * jQuery\n   */\n\n  $__default[\"default\"].fn[NAME$1] = Tab._jQueryInterface;\n  $__default[\"default\"].fn[NAME$1].Constructor = Tab;\n\n  $__default[\"default\"].fn[NAME$1].noConflict = function () {\n    $__default[\"default\"].fn[NAME$1] = JQUERY_NO_CONFLICT$1;\n    return Tab._jQueryInterface;\n  };\n  /**\n   * Constants\n   */\n\n\n  var NAME = 'toast';\n  var VERSION = '4.6.2';\n  var DATA_KEY = 'bs.toast';\n  var EVENT_KEY = \".\" + DATA_KEY;\n  var JQUERY_NO_CONFLICT = $__default[\"default\"].fn[NAME];\n  var CLASS_NAME_FADE = 'fade';\n  var CLASS_NAME_HIDE = 'hide';\n  var CLASS_NAME_SHOW = 'show';\n  var CLASS_NAME_SHOWING = 'showing';\n  var EVENT_CLICK_DISMISS = \"click.dismiss\" + EVENT_KEY;\n  var EVENT_HIDE = \"hide\" + EVENT_KEY;\n  var EVENT_HIDDEN = \"hidden\" + EVENT_KEY;\n  var EVENT_SHOW = \"show\" + EVENT_KEY;\n  var EVENT_SHOWN = \"shown\" + EVENT_KEY;\n  var SELECTOR_DATA_DISMISS = '[data-dismiss=\"toast\"]';\n  var Default = {\n    animation: true,\n    autohide: true,\n    delay: 500\n  };\n  var DefaultType = {\n    animation: 'boolean',\n    autohide: 'boolean',\n    delay: 'number'\n  };\n  /**\n   * Class definition\n   */\n\n  var Toast = /*#__PURE__*/function () {\n    function Toast(element, config) {\n      this._element = element;\n      this._config = this._getConfig(config);\n      this._timeout = null;\n\n      this._setListeners();\n    } // Getters\n\n\n    var _proto = Toast.prototype; // Public\n\n    _proto.show = function show() {\n      var _this = this;\n\n      var showEvent = $__default[\"default\"].Event(EVENT_SHOW);\n      $__default[\"default\"](this._element).trigger(showEvent);\n\n      if (showEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      this._clearTimeout();\n\n      if (this._config.animation) {\n        this._element.classList.add(CLASS_NAME_FADE);\n      }\n\n      var complete = function complete() {\n        _this._element.classList.remove(CLASS_NAME_SHOWING);\n\n        _this._element.classList.add(CLASS_NAME_SHOW);\n\n        $__default[\"default\"](_this._element).trigger(EVENT_SHOWN);\n\n        if (_this._config.autohide) {\n          _this._timeout = setTimeout(function () {\n            _this.hide();\n          }, _this._config.delay);\n        }\n      };\n\n      this._element.classList.remove(CLASS_NAME_HIDE);\n\n      Util.reflow(this._element);\n\n      this._element.classList.add(CLASS_NAME_SHOWING);\n\n      if (this._config.animation) {\n        var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n        $__default[\"default\"](this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n      } else {\n        complete();\n      }\n    };\n\n    _proto.hide = function hide() {\n      if (!this._element.classList.contains(CLASS_NAME_SHOW)) {\n        return;\n      }\n\n      var hideEvent = $__default[\"default\"].Event(EVENT_HIDE);\n      $__default[\"default\"](this._element).trigger(hideEvent);\n\n      if (hideEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      this._close();\n    };\n\n    _proto.dispose = function dispose() {\n      this._clearTimeout();\n\n      if (this._element.classList.contains(CLASS_NAME_SHOW)) {\n        this._element.classList.remove(CLASS_NAME_SHOW);\n      }\n\n      $__default[\"default\"](this._element).off(EVENT_CLICK_DISMISS);\n      $__default[\"default\"].removeData(this._element, DATA_KEY);\n      this._element = null;\n      this._config = null;\n    } // Private\n    ;\n\n    _proto._getConfig = function _getConfig(config) {\n      config = _extends({}, Default, $__default[\"default\"](this._element).data(), typeof config === 'object' && config ? config : {});\n      Util.typeCheckConfig(NAME, config, this.constructor.DefaultType);\n      return config;\n    };\n\n    _proto._setListeners = function _setListeners() {\n      var _this2 = this;\n\n      $__default[\"default\"](this._element).on(EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, function () {\n        return _this2.hide();\n      });\n    };\n\n    _proto._close = function _close() {\n      var _this3 = this;\n\n      var complete = function complete() {\n        _this3._element.classList.add(CLASS_NAME_HIDE);\n\n        $__default[\"default\"](_this3._element).trigger(EVENT_HIDDEN);\n      };\n\n      this._element.classList.remove(CLASS_NAME_SHOW);\n\n      if (this._config.animation) {\n        var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n        $__default[\"default\"](this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n      } else {\n        complete();\n      }\n    };\n\n    _proto._clearTimeout = function _clearTimeout() {\n      clearTimeout(this._timeout);\n      this._timeout = null;\n    } // Static\n    ;\n\n    Toast._jQueryInterface = function _jQueryInterface(config) {\n      return this.each(function () {\n        var $element = $__default[\"default\"](this);\n        var data = $element.data(DATA_KEY);\n\n        var _config = typeof config === 'object' && config;\n\n        if (!data) {\n          data = new Toast(this, _config);\n          $element.data(DATA_KEY, data);\n        }\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n          }\n\n          data[config](this);\n        }\n      });\n    };\n\n    _createClass(Toast, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION;\n      }\n    }, {\n      key: \"DefaultType\",\n      get: function get() {\n        return DefaultType;\n      }\n    }, {\n      key: \"Default\",\n      get: function get() {\n        return Default;\n      }\n    }]);\n\n    return Toast;\n  }();\n  /**\n   * jQuery\n   */\n\n\n  $__default[\"default\"].fn[NAME] = Toast._jQueryInterface;\n  $__default[\"default\"].fn[NAME].Constructor = Toast;\n\n  $__default[\"default\"].fn[NAME].noConflict = function () {\n    $__default[\"default\"].fn[NAME] = JQUERY_NO_CONFLICT;\n    return Toast._jQueryInterface;\n  };\n\n  exports.Alert = Alert;\n  exports.Button = Button;\n  exports.Carousel = Carousel;\n  exports.Collapse = Collapse;\n  exports.Dropdown = Dropdown;\n  exports.Modal = Modal;\n  exports.Popover = Popover;\n  exports.Scrollspy = ScrollSpy;\n  exports.Tab = Tab;\n  exports.Toast = Toast;\n  exports.Tooltip = Tooltip;\n  exports.Util = Util;\n  Object.defineProperty(exports, '__esModule', {\n    value: true\n  });\n});","module.exports = global[\"jQuery\"] = require(\"-!./jquery.js\");","/*!\n * jQuery JavaScript Library v3.7.1\n * https://jquery.com/\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2023-08-28T13:37Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket trac-14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar flat = arr.flat ? function( array ) {\n\treturn arr.flat.call( array );\n} : function( array ) {\n\treturn arr.concat.apply( [], array );\n};\n\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\nvar isFunction = function isFunction( obj ) {\n\n\t\t// Support: Chrome <=57, Firefox <=52\n\t\t// In some browsers, typeof returns \"function\" for HTML <object> elements\n\t\t// (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n\t\t// We don't want to classify *any* DOM node as a function.\n\t\t// Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5\n\t\t// Plus for old WebKit, typeof returns \"function\" for HTML collections\n\t\t// (e.g., `typeof document.getElementsByTagName(\"div\") === \"function\"`). (gh-4756)\n\t\treturn typeof obj === \"function\" && typeof obj.nodeType !== \"number\" &&\n\t\t\ttypeof obj.item !== \"function\";\n\t};\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\nvar document = window.document;\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnonce: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, node, doc ) {\n\t\tdoc = doc || document;\n\n\t\tvar i, val,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\n\t\t\t\t// Support: Firefox 64+, Edge 18+\n\t\t\t\t// Some browsers don't support the \"nonce\" property on scripts.\n\t\t\t\t// On the other hand, just using `getAttribute` is not enough as\n\t\t\t\t// the `nonce` attribute is reset to an empty string whenever it\n\t\t\t\t// becomes browsing-context connected.\n\t\t\t\t// See https://github.com/whatwg/html/issues/2369\n\t\t\t\t// See https://html.spec.whatwg.org/#nonce-attributes\n\t\t\t\t// The `node.getAttribute` check was added for the sake of\n\t\t\t\t// `jQuery.globalEval` so that it can fake a nonce-containing node\n\t\t\t\t// via an object.\n\t\t\t\tval = node[ i ] || node.getAttribute && node.getAttribute( i );\n\t\t\t\tif ( val ) {\n\t\t\t\t\tscript.setAttribute( i, val );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar version = \"3.7.1\",\n\n\trhtmlSuffix = /HTML$/i,\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t};\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teven: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn ( i + 1 ) % 2;\n\t\t} ) );\n\t},\n\n\todd: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn i % 2;\n\t\t} ) );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent Object.prototype pollution\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( name === \"__proto__\" || target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\t\t\t\t\tsrc = target[ name ];\n\n\t\t\t\t\t// Ensure proper type for the source value\n\t\t\t\t\tif ( copyIsArray && !Array.isArray( src ) ) {\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {\n\t\t\t\t\t\tclone = {};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src;\n\t\t\t\t\t}\n\t\t\t\t\tcopyIsArray = false;\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a provided context; falls back to the global one\n\t// if not specified.\n\tglobalEval: function( code, options, doc ) {\n\t\tDOMEval( code, { nonce: options && options.nonce }, doc );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\n\t// Retrieve the text value of an array of DOM nodes\n\ttext: function( elem ) {\n\t\tvar node,\n\t\t\tret = \"\",\n\t\t\ti = 0,\n\t\t\tnodeType = elem.nodeType;\n\n\t\tif ( !nodeType ) {\n\n\t\t\t// If no nodeType, this is expected to be an array\n\t\t\twhile ( ( node = elem[ i++ ] ) ) {\n\n\t\t\t\t// Do not traverse comment nodes\n\t\t\t\tret += jQuery.text( node );\n\t\t\t}\n\t\t}\n\t\tif ( nodeType === 1 || nodeType === 11 ) {\n\t\t\treturn elem.textContent;\n\t\t}\n\t\tif ( nodeType === 9 ) {\n\t\t\treturn elem.documentElement.textContent;\n\t\t}\n\t\tif ( nodeType === 3 || nodeType === 4 ) {\n\t\t\treturn elem.nodeValue;\n\t\t}\n\n\t\t// Do not include comment or processing instruction nodes\n\n\t\treturn ret;\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\tisXMLDoc: function( elem ) {\n\t\tvar namespace = elem && elem.namespaceURI,\n\t\t\tdocElem = elem && ( elem.ownerDocument || elem ).documentElement;\n\n\t\t// Assume HTML when documentElement doesn't yet exist, such as inside\n\t\t// document fragments.\n\t\treturn !rhtmlSuffix.test( namespace || docElem && docElem.nodeName || \"HTML\" );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn flat( ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\n\tfunction( _i, name ) {\n\t\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n\t} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\n\n\nfunction nodeName( elem, name ) {\n\n\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n}\nvar pop = arr.pop;\n\n\nvar sort = arr.sort;\n\n\nvar splice = arr.splice;\n\n\nvar whitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\";\n\n\nvar rtrimCSS = new RegExp(\n\t\"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\",\n\t\"g\"\n);\n\n\n\n\n// Note: an element does not contain itself\njQuery.contains = function( a, b ) {\n\tvar bup = b && b.parentNode;\n\n\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\n\t\t// Support: IE 9 - 11+\n\t\t// IE doesn't have `contains` on SVG.\n\t\ta.contains ?\n\t\t\ta.contains( bup ) :\n\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t) );\n};\n\n\n\n\n// CSS string/identifier serialization\n// https://drafts.csswg.org/cssom/#common-serializing-idioms\nvar rcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\x80-\\uFFFF\\w-]/g;\n\nfunction fcssescape( ch, asCodePoint ) {\n\tif ( asCodePoint ) {\n\n\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\tif ( ch === \"\\0\" ) {\n\t\t\treturn \"\\uFFFD\";\n\t\t}\n\n\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\treturn ch.slice( 0, -1 ) + \"\\\\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t}\n\n\t// Other potentially-special ASCII characters get backslash-escaped\n\treturn \"\\\\\" + ch;\n}\n\njQuery.escapeSelector = function( sel ) {\n\treturn ( sel + \"\" ).replace( rcssescape, fcssescape );\n};\n\n\n\n\nvar preferredDoc = document,\n\tpushNative = push;\n\n( function() {\n\nvar i,\n\tExpr,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\tpush = pushNative,\n\n\t// Local document vars\n\tdocument,\n\tdocumentElement,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\tmatches,\n\n\t// Instance-specific data\n\texpando = jQuery.expando,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tnonnativeSelectorCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|\" +\n\t\t\"loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// https://www.w3.org/TR/css-syntax-3/#ident-token-diagram\n\tidentifier = \"(?:\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\t\"?|\\\\\\\\[^\\\\r\\\\n\\\\f]|[\\\\w-]|[^\\0-\\\\x7f])+\",\n\n\t// Attribute selectors: https://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\n\t\t// \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" +\n\t\twhitespace + \"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trleadingCombinator = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" +\n\t\twhitespace + \"*\" ),\n\trdescend = new RegExp( whitespace + \"|>\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\tID: new RegExp( \"^#(\" + identifier + \")\" ),\n\t\tCLASS: new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\tTAG: new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\tATTR: new RegExp( \"^\" + attributes ),\n\t\tPSEUDO: new RegExp( \"^\" + pseudos ),\n\t\tCHILD: new RegExp(\n\t\t\t\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" +\n\t\t\t\twhitespace + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" +\n\t\t\t\twhitespace + \"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\tbool: new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\tneedsContext: new RegExp( \"^\" + whitespace +\n\t\t\t\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace +\n\t\t\t\"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// https://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\t\"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\", \"g\" ),\n\tfunescape = function( escape, nonHex ) {\n\t\tvar high = \"0x\" + escape.slice( 1 ) - 0x10000;\n\n\t\tif ( nonHex ) {\n\n\t\t\t// Strip the backslash prefix from a non-hex escape sequence\n\t\t\treturn nonHex;\n\t\t}\n\n\t\t// Replace a hexadecimal escape sequence with the encoded Unicode code point\n\t\t// Support: IE <=11+\n\t\t// For values outside the Basic Multilingual Plane (BMP), manually construct a\n\t\t// surrogate pair\n\t\treturn high < 0 ?\n\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// Used for iframes; see `setDocument`.\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE/Edge.\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tinDisabledFieldset = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && nodeName( elem, \"fieldset\" );\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Support: IE <=9 only\n// Accessing document.activeElement can throw unexpectedly\n// https://bugs.jquery.com/ticket/13393\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t( arr = slice.call( preferredDoc.childNodes ) ),\n\t\tpreferredDoc.childNodes\n\t);\n\n\t// Support: Android <=4.0\n\t// Detect silently failing push.apply\n\t// eslint-disable-next-line no-unused-expressions\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = {\n\t\tapply: function( target, els ) {\n\t\t\tpushNative.apply( target, slice.call( els ) );\n\t\t},\n\t\tcall: function( target ) {\n\t\t\tpushNative.apply( target, slice.call( arguments, 1 ) );\n\t\t}\n\t};\n}\n\nfunction find( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\t\tsetDocument( context );\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( ( m = match[ 1 ] ) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( ( elem = context.getElementById( m ) ) ) {\n\n\t\t\t\t\t\t\t// Support: IE 9 only\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tpush.call( results, elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE 9 only\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && ( elem = newContext.getElementById( m ) ) &&\n\t\t\t\t\t\t\tfind.contains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tpush.call( results, elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[ 2 ] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( ( m = match[ 3 ] ) && context.getElementsByClassName ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( !nonnativeSelectorCache[ selector + \" \" ] &&\n\t\t\t\t( !rbuggyQSA || !rbuggyQSA.test( selector ) ) ) {\n\n\t\t\t\tnewSelector = selector;\n\t\t\t\tnewContext = context;\n\n\t\t\t\t// qSA considers elements outside a scoping root when evaluating child or\n\t\t\t\t// descendant combinators, which is not what we want.\n\t\t\t\t// In such cases, we work around the behavior by prefixing every selector in the\n\t\t\t\t// list with an ID selector referencing the scope context.\n\t\t\t\t// The technique has to be used as well when a leading combinator is used\n\t\t\t\t// as such selectors are not recognized by querySelectorAll.\n\t\t\t\t// Thanks to Andrew Dupont for this technique.\n\t\t\t\tif ( nodeType === 1 &&\n\t\t\t\t\t( rdescend.test( selector ) || rleadingCombinator.test( selector ) ) ) {\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\n\t\t\t\t\t// We can use :scope instead of the ID hack if the browser\n\t\t\t\t\t// supports it & if we're not changing the context.\n\t\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when\n\t\t\t\t\t// strict-comparing two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( newContext != context || !support.scope ) {\n\n\t\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\t\tif ( ( nid = context.getAttribute( \"id\" ) ) ) {\n\t\t\t\t\t\t\tnid = jQuery.escapeSelector( nid );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontext.setAttribute( \"id\", ( nid = expando ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[ i ] = ( nid ? \"#\" + nid : \":scope\" ) + \" \" +\n\t\t\t\t\t\t\ttoSelector( groups[ i ] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\tnonnativeSelectorCache( selector, true );\n\t\t\t\t} finally {\n\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrimCSS, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\n\t\t// Use (key + \" \") to avoid collision with native prototype properties\n\t\t// (see https://github.com/jquery/sizzle/issues/157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn ( cache[ key + \" \" ] = value );\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by jQuery selector module\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement( \"fieldset\" );\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch ( e ) {\n\t\treturn false;\n\t} finally {\n\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\treturn nodeName( elem, \"input\" ) && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\treturn ( nodeName( elem, \"input\" ) || nodeName( elem, \"button\" ) ) &&\n\t\t\telem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t//   https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t//   https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t//   https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11+\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\t\tinDisabledFieldset( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction( function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction( function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ ( j = matchIndexes[ i ] ) ] ) {\n\t\t\t\t\tseed[ j ] = !( matches[ j ] = seed[ j ] );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t} );\n}\n\n/**\n * Checks a node for validity as a jQuery selector context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [node] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nfunction setDocument( node ) {\n\tvar subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocumentElement = document.documentElement;\n\tdocumentIsHTML = !jQuery.isXMLDoc( document );\n\n\t// Support: iOS 7 only, IE 9 - 11+\n\t// Older browsers didn't support unprefixed `matches`.\n\tmatches = documentElement.matches ||\n\t\tdocumentElement.webkitMatchesSelector ||\n\t\tdocumentElement.msMatchesSelector;\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Accessing iframe documents after unload throws \"permission denied\" errors\n\t// (see trac-13936).\n\t// Limit the fix to IE & Edge Legacy; despite Edge 15+ implementing `matches`,\n\t// all IE 9+ and Edge Legacy versions implement `msMatchesSelector` as well.\n\tif ( documentElement.msMatchesSelector &&\n\n\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tpreferredDoc != document &&\n\t\t( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t\tsubWindow.addEventListener( \"unload\", unloadHandler );\n\t}\n\n\t// Support: IE <10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert( function( el ) {\n\t\tdocumentElement.appendChild( el ).id = jQuery.expando;\n\t\treturn !document.getElementsByName ||\n\t\t\t!document.getElementsByName( jQuery.expando ).length;\n\t} );\n\n\t// Support: IE 9 only\n\t// Check to see if it's possible to do matchesSelector\n\t// on a disconnected node.\n\tsupport.disconnectedMatch = assert( function( el ) {\n\t\treturn matches.call( el, \"*\" );\n\t} );\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// IE/Edge don't support the :scope pseudo-class.\n\tsupport.scope = assert( function() {\n\t\treturn document.querySelectorAll( \":scope\" );\n\t} );\n\n\t// Support: Chrome 105 - 111 only, Safari 15.4 - 16.3 only\n\t// Make sure the `:has()` argument is parsed unforgivingly.\n\t// We include `*` in the test to detect buggy implementations that are\n\t// _selectively_ forgiving (specifically when the list includes at least\n\t// one valid selector).\n\t// Note that we treat complete lack of support for `:has()` as if it were\n\t// spec-compliant support, which is fine because use of `:has()` in such\n\t// environments will fail in the qSA path and fall back to jQuery traversal\n\t// anyway.\n\tsupport.cssHas = assert( function() {\n\t\ttry {\n\t\t\tdocument.querySelector( \":has(*,:jqfake)\" );\n\t\t\treturn false;\n\t\t} catch ( e ) {\n\t\t\treturn true;\n\t\t}\n\t} );\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter.ID = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute( \"id\" ) === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find.ID = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter.ID =  function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode( \"id\" );\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find.ID = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( ( elem = elems[ i++ ] ) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find.TAG = function( tag, context ) {\n\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t// DocumentFragment nodes don't have gEBTN\n\t\t} else {\n\t\t\treturn context.querySelectorAll( tag );\n\t\t}\n\t};\n\n\t// Class\n\tExpr.find.CLASS = function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\trbuggyQSA = [];\n\n\t// Build QSA regex\n\t// Regex strategy adopted from Diego Perini\n\tassert( function( el ) {\n\n\t\tvar input;\n\n\t\tdocumentElement.appendChild( el ).innerHTML =\n\t\t\t\"<a id='\" + expando + \"' href='' disabled='disabled'></a>\" +\n\t\t\t\"<select id='\" + expando + \"-\\r\\\\' disabled='disabled'>\" +\n\t\t\t\"<option selected=''></option></select>\";\n\n\t\t// Support: iOS <=7 - 8 only\n\t\t// Boolean attributes and \"value\" are not treated correctly in some XML documents\n\t\tif ( !el.querySelectorAll( \"[selected]\" ).length ) {\n\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t}\n\n\t\t// Support: iOS <=7 - 8 only\n\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\trbuggyQSA.push( \"~=\" );\n\t\t}\n\n\t\t// Support: iOS 8 only\n\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\trbuggyQSA.push( \".#.+[+~]\" );\n\t\t}\n\n\t\t// Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+\n\t\t// In some of the document kinds, these selectors wouldn't work natively.\n\t\t// This is probably OK but for backwards compatibility we want to maintain\n\t\t// handling them through jQuery traversal in jQuery 3.x.\n\t\tif ( !el.querySelectorAll( \":checked\" ).length ) {\n\t\t\trbuggyQSA.push( \":checked\" );\n\t\t}\n\n\t\t// Support: Windows 8 Native Apps\n\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\tinput = document.createElement( \"input\" );\n\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t// Support: IE 9 - 11+\n\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t// Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+\n\t\t// In some of the document kinds, these selectors wouldn't work natively.\n\t\t// This is probably OK but for backwards compatibility we want to maintain\n\t\t// handling them through jQuery traversal in jQuery 3.x.\n\t\tdocumentElement.appendChild( el ).disabled = true;\n\t\tif ( el.querySelectorAll( \":disabled\" ).length !== 2 ) {\n\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t}\n\n\t\t// Support: IE 11+, Edge 15 - 18+\n\t\t// IE 11/Edge don't find elements on a `[name='']` query in some cases.\n\t\t// Adding a temporary attribute to the document before the selection works\n\t\t// around the issue.\n\t\t// Interestingly, IE 10 & older don't seem to have the issue.\n\t\tinput = document.createElement( \"input\" );\n\t\tinput.setAttribute( \"name\", \"\" );\n\t\tel.appendChild( input );\n\t\tif ( !el.querySelectorAll( \"[name='']\" ).length ) {\n\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*name\" + whitespace + \"*=\" +\n\t\t\t\twhitespace + \"*(?:''|\\\"\\\")\" );\n\t\t}\n\t} );\n\n\tif ( !support.cssHas ) {\n\n\t\t// Support: Chrome 105 - 110+, Safari 15.4 - 16.3+\n\t\t// Our regular `try-catch` mechanism fails to detect natively-unsupported\n\t\t// pseudo-classes inside `:has()` (such as `:has(:contains(\"Foo\"))`)\n\t\t// in browsers that parse the `:has()` argument as a forgiving selector list.\n\t\t// https://drafts.csswg.org/selectors/#relational now requires the argument\n\t\t// to be parsed unforgivingly, but browsers have not yet fully adjusted.\n\t\trbuggyQSA.push( \":has\" );\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( \"|\" ) );\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = function( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tcompare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( a === document || a.ownerDocument == preferredDoc &&\n\t\t\t\tfind.contains( preferredDoc, a ) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( b === document || b.ownerDocument == preferredDoc &&\n\t\t\t\tfind.contains( preferredDoc, b ) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t};\n\n\treturn document;\n}\n\nfind.matches = function( expr, elements ) {\n\treturn find( expr, null, null, elements );\n};\n\nfind.matchesSelector = function( elem, expr ) {\n\tsetDocument( elem );\n\n\tif ( documentIsHTML &&\n\t\t!nonnativeSelectorCache[ expr + \" \" ] &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\n\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\tnonnativeSelectorCache( expr, true );\n\t\t}\n\t}\n\n\treturn find( expr, document, null, [ elem ] ).length > 0;\n};\n\nfind.contains = function( context, elem ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( context.ownerDocument || context ) != document ) {\n\t\tsetDocument( context );\n\t}\n\treturn jQuery.contains( context, elem );\n};\n\n\nfind.attr = function( elem, name ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( elem.ownerDocument || elem ) != document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\n\t\t// Don't get fooled by Object.prototype properties (see trac-13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\tif ( val !== undefined ) {\n\t\treturn val;\n\t}\n\n\treturn elem.getAttribute( name );\n};\n\nfind.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\njQuery.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\t//\n\t// Support: Android <=4.0+\n\t// Testing for detecting duplicates is unpredictable so instead assume we can't\n\t// depend on duplicate detection in all browsers without a stable sort.\n\thasDuplicate = !support.sortStable;\n\tsortInput = !support.sortStable && slice.call( results, 0 );\n\tsort.call( results, sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tsplice.call( results, duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\njQuery.fn.uniqueSort = function() {\n\treturn this.pushStack( jQuery.uniqueSort( slice.apply( this ) ) );\n};\n\nExpr = jQuery.expr = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\tATTR: function( match ) {\n\t\t\tmatch[ 1 ] = match[ 1 ].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[ 3 ] = ( match[ 3 ] || match[ 4 ] || match[ 5 ] || \"\" )\n\t\t\t\t.replace( runescape, funescape );\n\n\t\t\tif ( match[ 2 ] === \"~=\" ) {\n\t\t\t\tmatch[ 3 ] = \" \" + match[ 3 ] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\tCHILD: function( match ) {\n\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[ 1 ] = match[ 1 ].toLowerCase();\n\n\t\t\tif ( match[ 1 ].slice( 0, 3 ) === \"nth\" ) {\n\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[ 3 ] ) {\n\t\t\t\t\tfind.error( match[ 0 ] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[ 4 ] = +( match[ 4 ] ?\n\t\t\t\t\tmatch[ 5 ] + ( match[ 6 ] || 1 ) :\n\t\t\t\t\t2 * ( match[ 3 ] === \"even\" || match[ 3 ] === \"odd\" )\n\t\t\t\t);\n\t\t\t\tmatch[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[ 3 ] ) {\n\t\t\t\tfind.error( match[ 0 ] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\tPSEUDO: function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[ 6 ] && match[ 2 ];\n\n\t\t\tif ( matchExpr.CHILD.test( match[ 0 ] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[ 3 ] ) {\n\t\t\t\tmatch[ 2 ] = match[ 4 ] || match[ 5 ] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t( excess = tokenize( unquoted, true ) ) &&\n\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t( excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length ) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[ 0 ] = match[ 0 ].slice( 0, excess );\n\t\t\t\tmatch[ 2 ] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\tTAG: function( nodeNameSelector ) {\n\t\t\tvar expectedNodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() {\n\t\t\t\t\treturn true;\n\t\t\t\t} :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn nodeName( elem, expectedNodeName );\n\t\t\t\t};\n\t\t},\n\n\t\tCLASS: function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t( pattern = new RegExp( \"(^|\" + whitespace + \")\" + className +\n\t\t\t\t\t\"(\" + whitespace + \"|$)\" ) ) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test(\n\t\t\t\t\t\ttypeof elem.className === \"string\" && elem.className ||\n\t\t\t\t\t\t\ttypeof elem.getAttribute !== \"undefined\" &&\n\t\t\t\t\t\t\t\telem.getAttribute( \"class\" ) ||\n\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t);\n\t\t\t\t} );\n\t\t},\n\n\t\tATTR: function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = find.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\tif ( operator === \"=\" ) {\n\t\t\t\t\treturn result === check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"!=\" ) {\n\t\t\t\t\treturn result !== check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"^=\" ) {\n\t\t\t\t\treturn check && result.indexOf( check ) === 0;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"*=\" ) {\n\t\t\t\t\treturn check && result.indexOf( check ) > -1;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"$=\" ) {\n\t\t\t\t\treturn check && result.slice( -check.length ) === check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"~=\" ) {\n\t\t\t\t\treturn ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" )\n\t\t\t\t\t\t.indexOf( check ) > -1;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"|=\" ) {\n\t\t\t\t\treturn result === check || result.slice( 0, check.length + 1 ) === check + \"-\";\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t};\n\t\t},\n\n\t\tCHILD: function( type, what, _argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tvar cache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( ( node = node[ dir ] ) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnodeName( node, name ) :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\t\t\t\t\t\t\touterCache = parent[ expando ] || ( parent[ expando ] = {} );\n\t\t\t\t\t\t\tcache = outerCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\touterCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\t\t\t\t\t\t\t\tcache = outerCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnodeName( node, name ) :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( node[ expando ] = {} );\n\t\t\t\t\t\t\t\t\t\t\touterCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\tPSEUDO: function( pseudo, argument ) {\n\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// https://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tfind.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as jQuery does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction( function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf.call( seed, matched[ i ] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} ) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\n\t\t// Potentially complex pseudos\n\t\tnot: markFunction( function( selector ) {\n\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrimCSS, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction( function( seed, matches, _context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\t\t\t\t\tseed[ i ] = !( matches[ i ] = elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} ) :\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tinput[ 0 ] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\n\t\t\t\t\t// Don't keep the element\n\t\t\t\t\t// (see https://github.com/jquery/sizzle/issues/299)\n\t\t\t\t\tinput[ 0 ] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t} ),\n\n\t\thas: markFunction( function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn find( selector, elem ).length > 0;\n\t\t\t};\n\t\t} ),\n\n\t\tcontains: markFunction( function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || jQuery.text( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t} ),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// https://www.w3.org/TR/selectors/#lang-pseudo\n\t\tlang: markFunction( function( lang ) {\n\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test( lang || \"\" ) ) {\n\t\t\t\tfind.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( ( elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute( \"xml:lang\" ) || elem.getAttribute( \"lang\" ) ) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( ( elem = elem.parentNode ) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t} ),\n\n\t\t// Miscellaneous\n\t\ttarget: function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\troot: function( elem ) {\n\t\t\treturn elem === documentElement;\n\t\t},\n\n\t\tfocus: function( elem ) {\n\t\t\treturn elem === safeActiveElement() &&\n\t\t\t\tdocument.hasFocus() &&\n\t\t\t\t!!( elem.type || elem.href || ~elem.tabIndex );\n\t\t},\n\n\t\t// Boolean properties\n\t\tenabled: createDisabledPseudo( false ),\n\t\tdisabled: createDisabledPseudo( true ),\n\n\t\tchecked: function( elem ) {\n\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// https://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\treturn ( nodeName( elem, \"input\" ) && !!elem.checked ) ||\n\t\t\t\t( nodeName( elem, \"option\" ) && !!elem.selected );\n\t\t},\n\n\t\tselected: function( elem ) {\n\n\t\t\t// Support: IE <=11+\n\t\t\t// Accessing the selectedIndex property\n\t\t\t// forces the browser to treat the default option as\n\t\t\t// selected when in an optgroup.\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\tempty: function( elem ) {\n\n\t\t\t// https://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t//   but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\tparent: function( elem ) {\n\t\t\treturn !Expr.pseudos.empty( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\theader: function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\tinput: function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\tbutton: function( elem ) {\n\t\t\treturn nodeName( elem, \"input\" ) && elem.type === \"button\" ||\n\t\t\t\tnodeName( elem, \"button\" );\n\t\t},\n\n\t\ttext: function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn nodeName( elem, \"input\" ) && elem.type === \"text\" &&\n\n\t\t\t\t// Support: IE <10 only\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear\n\t\t\t\t// with elem.type === \"text\"\n\t\t\t\t( ( attr = elem.getAttribute( \"type\" ) ) == null ||\n\t\t\t\t\tattr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\tfirst: createPositionalPseudo( function() {\n\t\t\treturn [ 0 ];\n\t\t} ),\n\n\t\tlast: createPositionalPseudo( function( _matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t} ),\n\n\t\teq: createPositionalPseudo( function( _matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t} ),\n\n\t\teven: createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\todd: createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\tlt: createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i;\n\n\t\t\tif ( argument < 0 ) {\n\t\t\t\ti = argument + length;\n\t\t\t} else if ( argument > length ) {\n\t\t\t\ti = length;\n\t\t\t} else {\n\t\t\t\ti = argument;\n\t\t\t}\n\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\tgt: createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} )\n\t}\n};\n\nExpr.pseudos.nth = Expr.pseudos.eq;\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\nfunction tokenize( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || ( match = rcomma.exec( soFar ) ) ) {\n\t\t\tif ( match ) {\n\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[ 0 ].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( ( tokens = [] ) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( ( match = rleadingCombinator.exec( soFar ) ) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push( {\n\t\t\t\tvalue: matched,\n\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[ 0 ].replace( rtrimCSS, \" \" )\n\t\t\t} );\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] ||\n\t\t\t\t( match = preFilters[ type ]( match ) ) ) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push( {\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t} );\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\tif ( parseOnly ) {\n\t\treturn soFar.length;\n\t}\n\n\treturn soFar ?\n\t\tfind.error( selector ) :\n\n\t\t// Cache the tokens\n\t\ttokenCache( selector, groups ).slice( 0 );\n}\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[ i ].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\n\t\t\t\t\t\tif ( skip && nodeName( elem, skip ) ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( ( oldCache = outerCache[ key ] ) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn ( newCache[ 2 ] = oldCache[ 2 ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\touterCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[ i ]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[ 0 ];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tfind( selector, contexts[ i ], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction( function( seed, results, context, xml ) {\n\t\tvar temp, i, elem, matcherOut,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed ||\n\t\t\t\tmultipleContexts( selector || \"*\",\n\t\t\t\t\tcontext.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems;\n\n\t\tif ( matcher ) {\n\n\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter\n\t\t\t// or preexisting results,\n\t\t\tmatcherOut = postFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t[] :\n\n\t\t\t\t// ...otherwise use results directly\n\t\t\t\tresults;\n\n\t\t\t// Find primary matches\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t} else {\n\t\t\tmatcherOut = matcherIn;\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( ( elem = temp[ i ] ) ) {\n\t\t\t\t\tmatcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) ) {\n\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( ( matcherIn[ i ] = elem ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, ( matcherOut = [] ), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) &&\n\t\t\t\t\t\t( temp = postFinder ? indexOf.call( seed, elem ) : preMap[ i ] ) > -1 ) {\n\n\t\t\t\t\t\tseed[ temp ] = !( results[ temp ] = elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t} );\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[ 0 ].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[ \" \" ],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf.call( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tvar ret = ( !leadingRelative && ( xml || context != outermostContext ) ) || (\n\t\t\t\t( checkContext = context ).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\n\t\t\t// Avoid hanging onto element\n\t\t\t// (see https://github.com/jquery/sizzle/issues/299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) {\n\t\t\tmatchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[ j ].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 )\n\t\t\t\t\t\t\t.concat( { value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" } )\n\t\t\t\t\t).replace( rtrimCSS, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find.TAG( \"*\", outermost ),\n\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\n\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\toutermostContext = context == document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: iOS <=7 - 9 only\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: <number>) matching\n\t\t\t// elements by id. (see trac-14142)\n\t\t\tfor ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\n\t\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( !context && elem.ownerDocument != document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( ( matcher = elementMatchers[ j++ ] ) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml ) ) {\n\t\t\t\t\t\t\tpush.call( results, elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( ( elem = !matcher && elem ) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( ( matcher = setMatchers[ j++ ] ) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !( unmatched[ i ] || setMatched[ i ] ) ) {\n\t\t\t\t\t\t\t\tsetMatched[ i ] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tjQuery.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\nfunction compile( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[ i ] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache( selector,\n\t\t\tmatcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n}\n\n/**\n * A low-level selection function that works with jQuery's compiled\n *  selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n *  selector function built with jQuery selector compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nfunction select( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( ( selector = compiled.selector || selector ) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[ 0 ] = match[ 0 ].slice( 0 );\n\t\tif ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === \"ID\" &&\n\t\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {\n\n\t\t\tcontext = ( Expr.find.ID(\n\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\tcontext\n\t\t\t) || [] )[ 0 ];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr.needsContext.test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[ i ];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ ( type = token.type ) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( ( find = Expr.find[ type ] ) ) {\n\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( ( seed = find(\n\t\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[ 0 ].type ) &&\n\t\t\t\t\t\ttestContext( context.parentNode ) || context\n\t\t\t\t) ) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n}\n\n// One-time assignments\n\n// Support: Android <=4.0 - 4.1+\n// Sort stability\nsupport.sortStable = expando.split( \"\" ).sort( sortOrder ).join( \"\" ) === expando;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Android <=4.0 - 4.1+\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert( function( el ) {\n\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement( \"fieldset\" ) ) & 1;\n} );\n\njQuery.find = find;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.unique = jQuery.uniqueSort;\n\n// These have always been private, but they used to be documented as part of\n// Sizzle so let's maintain them for now for backwards compatibility purposes.\nfind.compile = compile;\nfind.select = select;\nfind.setDocument = setDocument;\nfind.tokenize = tokenize;\n\nfind.escape = jQuery.escapeSelector;\nfind.getText = jQuery.text;\nfind.isXML = jQuery.isXMLDoc;\nfind.selectors = jQuery.expr;\nfind.support = jQuery.support;\nfind.uniqueSort = jQuery.uniqueSort;\n\n\t/* eslint-enable */\n\n} )();\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over <tag> to avoid XSS via location.hash (trac-9521)\n\t// Strict HTML recognition (trac-11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to jQuery#find\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\tif ( elem.contentDocument != null &&\n\n\t\t\t// Support: IE 11+\n\t\t\t// <object> elements with no `data` attribute has an object\n\t\t\t// `contentDocument` with a `null` prototype.\n\t\t\tgetProto( elem.contentDocument ) ) {\n\n\t\t\treturn elem.contentDocument;\n\t\t}\n\n\t\t// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n\t\t// Treat the template element as a regular one in browsers that\n\t\t// don't support it.\n\t\tif ( nodeName( elem, \"template\" ) ) {\n\t\t\telem = elem.content || elem;\n\t\t}\n\n\t\treturn jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( _i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.error );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the error, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getErrorHook ) {\n\t\t\t\t\t\t\t\t\tprocess.error = jQuery.Deferred.getErrorHook();\n\n\t\t\t\t\t\t\t\t// The deprecated alias of the above. While the name suggests\n\t\t\t\t\t\t\t\t// returning the stack, not an error instance, jQuery just passes\n\t\t\t\t\t\t\t\t// it directly to `console.warn` so both will work; an instance\n\t\t\t\t\t\t\t\t// just better cooperates with source maps.\n\t\t\t\t\t\t\t\t} else if ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.error = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the primary Deferred\n\t\t\tprimary = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tprimary.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( primary.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn primary.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), primary.reject );\n\t\t}\n\n\t\treturn primary.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\n// If `jQuery.Deferred.getErrorHook` is defined, `asyncError` is an error\n// captured before the async barrier to get the original error cause\n// which may otherwise be hidden.\njQuery.Deferred.exceptionHook = function( error, asyncError ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message,\n\t\t\terror.stack, asyncError );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See trac-6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, _key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\t\tvalue :\n\t\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( _all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (trac-9572)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t//  - Node\n\t//    - Node.ELEMENT_NODE\n\t//    - Node.DOCUMENT_NODE\n\t//  - Object\n\t//    - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see trac-8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t//   1. No key was specified\n\t\t//   2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t//   1. The entire cache object\n\t\t//   2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t//   1. An object of properties\n\t\t//   2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (trac-14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar documentElement = document.documentElement;\n\n\n\n\tvar isAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem );\n\t\t},\n\t\tcomposed = { composed: true };\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n\t// Check attachment across shadow DOM boundaries when possible (gh-3504)\n\t// Support: iOS 10.0-10.2 only\n\t// Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n\t// leading to errors. We need to check for `getRootNode`.\n\tif ( documentElement.getRootNode ) {\n\t\tisAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem ) ||\n\t\t\t\telem.getRootNode( composed ) === elem.ownerDocument;\n\t\t};\n\t}\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tisAttached( elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = elem.nodeType &&\n\t\t\t( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i );\n\nvar rscriptType = ( /^$|^module$|\\/(?:java|ecma)script/i );\n\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (trac-11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (trac-14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"<textarea>x</textarea>\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n\n\t// Support: IE <=9 only\n\t// IE <=9 replaces <option> tags with their contents when inserted outside of\n\t// the select element.\n\tdiv.innerHTML = \"<option></option>\";\n\tsupport.option = !!div.lastChild;\n} )();\n\n\n// We have to close these tags to support XHTML (trac-13200)\nvar wrapMap = {\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting <tbody> or other required elements.\n\tthead: [ 1, \"<table>\", \"</table>\" ],\n\tcol: [ 2, \"<table><colgroup>\", \"</colgroup></table>\" ],\n\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// Support: IE <=9 only\nif ( !support.option ) {\n\twrapMap.optgroup = wrapMap.option = [ 1, \"<select multiple='multiple'>\", \"</select>\" ];\n}\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (trac-15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, attached, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (trac-12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tattached = isAttached( elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( attached ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\nvar rtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Only attach events to objects that accept data\n\t\tif ( !acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = Object.create( null );\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\n\t\t\t// Make a writable jQuery.Event from the native event object\n\t\t\tevent = jQuery.event.fix( nativeEvent ),\n\n\t\t\thandlers = (\n\t\t\t\tdataPriv.get( this, \"events\" ) || Object.create( null )\n\t\t\t)[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// If the event is namespaced, then each handler is only invoked if it is\n\t\t\t\t// specially universal or its namespaces are a superset of the event's.\n\t\t\t\tif ( !event.rnamespace || handleObj.namespace === false ||\n\t\t\t\t\tevent.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG <use> instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (trac-13208)\n\t\t\t\t// Don't process clicks on disabled elements (trac-6911, trac-8165, trac-11382, trac-11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (trac-13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tclick: {\n\n\t\t\t// Utilize native event to ensure correct state for checkable inputs\n\t\t\tsetup: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Claim the first handler\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\t// dataPriv.set( el, \"click\", ... )\n\t\t\t\t\tleverageNative( el, \"click\", true );\n\t\t\t\t}\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\ttrigger: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Force setup before triggering a click\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\tleverageNative( el, \"click\" );\n\t\t\t\t}\n\n\t\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, suppress native .click() on links\n\t\t\t// Also prevent it if we're currently inside a leveraged native-event stack\n\t\t\t_default: function( event ) {\n\t\t\t\tvar target = event.target;\n\t\t\t\treturn rcheckableType.test( target.type ) &&\n\t\t\t\t\ttarget.click && nodeName( target, \"input\" ) &&\n\t\t\t\t\tdataPriv.get( target, \"click\" ) ||\n\t\t\t\t\tnodeName( target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Ensure the presence of an event listener that handles manually-triggered\n// synthetic events by interrupting progress until reinvoked in response to\n// *native* events that it fires directly, ensuring that state changes have\n// already occurred before other listeners are invoked.\nfunction leverageNative( el, type, isSetup ) {\n\n\t// Missing `isSetup` indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !isSetup ) {\n\t\tif ( dataPriv.get( el, type ) === undefined ) {\n\t\t\tjQuery.event.add( el, type, returnTrue );\n\t\t}\n\t\treturn;\n\t}\n\n\t// Register the controller as a special universal handler for all event namespaces\n\tdataPriv.set( el, type, false );\n\tjQuery.event.add( el, type, {\n\t\tnamespace: false,\n\t\thandler: function( event ) {\n\t\t\tvar result,\n\t\t\t\tsaved = dataPriv.get( this, type );\n\n\t\t\tif ( ( event.isTrigger & 1 ) && this[ type ] ) {\n\n\t\t\t\t// Interrupt processing of the outer synthetic .trigger()ed event\n\t\t\t\tif ( !saved ) {\n\n\t\t\t\t\t// Store arguments for use when handling the inner native event\n\t\t\t\t\t// There will always be at least one argument (an event object), so this array\n\t\t\t\t\t// will not be confused with a leftover capture object.\n\t\t\t\t\tsaved = slice.call( arguments );\n\t\t\t\t\tdataPriv.set( this, type, saved );\n\n\t\t\t\t\t// Trigger the native event and capture its result\n\t\t\t\t\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tdataPriv.set( this, type, false );\n\n\t\t\t\t\tif ( saved !== result ) {\n\n\t\t\t\t\t\t// Cancel the outer synthetic event\n\t\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t}\n\n\t\t\t\t// If this is an inner synthetic event for an event with a bubbling surrogate\n\t\t\t\t// (focus or blur), assume that the surrogate already propagated from triggering\n\t\t\t\t// the native event and prevent that from happening again here.\n\t\t\t\t// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n\t\t\t\t// bubbling surrogate propagates *after* the non-bubbling base), but that seems\n\t\t\t\t// less bad than duplication.\n\t\t\t\t} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\n\t\t\t// If this is a native event triggered above, everything is now in order\n\t\t\t// Fire an inner synthetic event with the original arguments\n\t\t\t} else if ( saved ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, jQuery.event.trigger(\n\t\t\t\t\tsaved[ 0 ],\n\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\tthis\n\t\t\t\t) );\n\n\t\t\t\t// Abort handling of the native event by all jQuery handlers while allowing\n\t\t\t\t// native handlers on the same element to run. On target, this is achieved\n\t\t\t\t// by stopping immediate propagation just on the jQuery event. However,\n\t\t\t\t// the native event is re-wrapped by a jQuery one on each level of the\n\t\t\t\t// propagation so the only way to stop it for jQuery is to stop it for\n\t\t\t\t// everyone via native `stopPropagation()`. This is not a problem for\n\t\t\t\t// focus/blur which don't bubble, but it does also stop click on checkboxes\n\t\t\t\t// and radios. We accept this limitation.\n\t\t\t\tevent.stopPropagation();\n\t\t\t\tevent.isImmediatePropagationStopped = returnTrue;\n\t\t\t}\n\t\t}\n\t} );\n}\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (trac-504, trac-13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcode: true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\twhich: true\n}, jQuery.event.addProp );\n\njQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( type, delegateType ) {\n\n\tfunction focusMappedHandler( nativeEvent ) {\n\t\tif ( document.documentMode ) {\n\n\t\t\t// Support: IE 11+\n\t\t\t// Attach a single focusin/focusout handler on the document while someone wants\n\t\t\t// focus/blur. This is because the former are synchronous in IE while the latter\n\t\t\t// are async. In other browsers, all those handlers are invoked synchronously.\n\n\t\t\t// `handle` from private data would already wrap the event, but we need\n\t\t\t// to change the `type` here.\n\t\t\tvar handle = dataPriv.get( this, \"handle\" ),\n\t\t\t\tevent = jQuery.event.fix( nativeEvent );\n\t\t\tevent.type = nativeEvent.type === \"focusin\" ? \"focus\" : \"blur\";\n\t\t\tevent.isSimulated = true;\n\n\t\t\t// First, handle focusin/focusout\n\t\t\thandle( nativeEvent );\n\n\t\t\t// ...then, handle focus/blur\n\t\t\t//\n\t\t\t// focus/blur don't bubble while focusin/focusout do; simulate the former by only\n\t\t\t// invoking the handler at the lower level.\n\t\t\tif ( event.target === event.currentTarget ) {\n\n\t\t\t\t// The setup part calls `leverageNative`, which, in turn, calls\n\t\t\t\t// `jQuery.event.add`, so event handle will already have been set\n\t\t\t\t// by this point.\n\t\t\t\thandle( event );\n\t\t\t}\n\t\t} else {\n\n\t\t\t// For non-IE browsers, attach a single capturing handler on the document\n\t\t\t// while someone wants focusin/focusout.\n\t\t\tjQuery.event.simulate( delegateType, nativeEvent.target,\n\t\t\t\tjQuery.event.fix( nativeEvent ) );\n\t\t}\n\t}\n\n\tjQuery.event.special[ type ] = {\n\n\t\t// Utilize native event if possible so blur/focus sequence is correct\n\t\tsetup: function() {\n\n\t\t\tvar attaches;\n\n\t\t\t// Claim the first handler\n\t\t\t// dataPriv.set( this, \"focus\", ... )\n\t\t\t// dataPriv.set( this, \"blur\", ... )\n\t\t\tleverageNative( this, type, true );\n\n\t\t\tif ( document.documentMode ) {\n\n\t\t\t\t// Support: IE 9 - 11+\n\t\t\t\t// We use the same native handler for focusin & focus (and focusout & blur)\n\t\t\t\t// so we need to coordinate setup & teardown parts between those events.\n\t\t\t\t// Use `delegateType` as the key as `type` is already used by `leverageNative`.\n\t\t\t\tattaches = dataPriv.get( this, delegateType );\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tthis.addEventListener( delegateType, focusMappedHandler );\n\t\t\t\t}\n\t\t\t\tdataPriv.set( this, delegateType, ( attaches || 0 ) + 1 );\n\t\t\t} else {\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t\ttrigger: function() {\n\n\t\t\t// Force setup before trigger\n\t\t\tleverageNative( this, type );\n\n\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\treturn true;\n\t\t},\n\n\t\tteardown: function() {\n\t\t\tvar attaches;\n\n\t\t\tif ( document.documentMode ) {\n\t\t\t\tattaches = dataPriv.get( this, delegateType ) - 1;\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tthis.removeEventListener( delegateType, focusMappedHandler );\n\t\t\t\t\tdataPriv.remove( this, delegateType );\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.set( this, delegateType, attaches );\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Return false to indicate standard teardown should be applied\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\n\t\t// Suppress native focus or blur if we're currently inside\n\t\t// a leveraged native-event stack\n\t\t_default: function( event ) {\n\t\t\treturn dataPriv.get( event.target, type );\n\t\t},\n\n\t\tdelegateType: delegateType\n\t};\n\n\t// Support: Firefox <=44\n\t// Firefox doesn't have focus(in | out) events\n\t// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n\t//\n\t// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n\t// focus(in | out) events fire after focus & blur events,\n\t// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n\t// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\n\t//\n\t// Support: IE 9 - 11+\n\t// To preserve relative focusin/focus & focusout/blur event order guaranteed on the 3.x branch,\n\t// attach a single handler for both events in IE.\n\tjQuery.event.special[ delegateType ] = {\n\t\tsetup: function() {\n\n\t\t\t// Handle: regular nodes (via `this.ownerDocument`), window\n\t\t\t// (via `this.document`) & document (via `this`).\n\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\tdataHolder = document.documentMode ? this : doc,\n\t\t\t\tattaches = dataPriv.get( dataHolder, delegateType );\n\n\t\t\t// Support: IE 9 - 11+\n\t\t\t// We use the same native handler for focusin & focus (and focusout & blur)\n\t\t\t// so we need to coordinate setup & teardown parts between those events.\n\t\t\t// Use `delegateType` as the key as `type` is already used by `leverageNative`.\n\t\t\tif ( !attaches ) {\n\t\t\t\tif ( document.documentMode ) {\n\t\t\t\t\tthis.addEventListener( delegateType, focusMappedHandler );\n\t\t\t\t} else {\n\t\t\t\t\tdoc.addEventListener( type, focusMappedHandler, true );\n\t\t\t\t}\n\t\t\t}\n\t\t\tdataPriv.set( dataHolder, delegateType, ( attaches || 0 ) + 1 );\n\t\t},\n\t\tteardown: function() {\n\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\tdataHolder = document.documentMode ? this : doc,\n\t\t\t\tattaches = dataPriv.get( dataHolder, delegateType ) - 1;\n\n\t\t\tif ( !attaches ) {\n\t\t\t\tif ( document.documentMode ) {\n\t\t\t\t\tthis.removeEventListener( delegateType, focusMappedHandler );\n\t\t\t\t} else {\n\t\t\t\t\tdoc.removeEventListener( type, focusMappedHandler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( dataHolder, delegateType );\n\t\t\t} else {\n\t\t\t\tdataPriv.set( dataHolder, delegateType, attaches );\n\t\t\t}\n\t\t}\n\t};\n} );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event )  dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /<script|<style|<link/i,\n\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\n\trcleanScript = /^\\s*<!\\[CDATA\\[|\\]\\]>\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.get( src );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdataPriv.remove( dest, \"handle events\" );\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = flat( args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (trac-8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Re-enable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase()  !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl && !node.noModule ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src, {\n\t\t\t\t\t\t\t\t\tnonce: node.nonce || node.getAttribute( \"nonce\" )\n\t\t\t\t\t\t\t\t}, doc );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Unwrap a CDATA section containing script contents. This shouldn't be\n\t\t\t\t\t\t\t// needed as in XML documents they're already not visible when\n\t\t\t\t\t\t\t// inspecting element contents and in HTML documents they have no\n\t\t\t\t\t\t\t// meaning but we're preserving that logic for backwards compatibility.\n\t\t\t\t\t\t\t// This will be removed completely in 4.0. See gh-4904.\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), node, doc );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && isAttached( node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html;\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = isAttached( elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew jQuery#find here for performance reasons:\n\t\t\t// https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar rcustomProp = /^--/;\n\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (trac-15098, trac-14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar swap = function( elem, options, callback ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.call( elem );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\nvar rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\n\t\t\t\"margin-top:1px;padding:0;border:0\";\n\t\tdiv.style.cssText =\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"width:60%;top:1%\";\n\t\tdocumentElement.appendChild( container ).appendChild( div );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\n\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.right = \"60%\";\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\n\n\t\t// Support: IE 9 - 11 only\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\n\n\t\t// Support: IE 9 only\n\t\t// Detect overflow:scroll screwiness (gh-3699)\n\t\t// Support: Chrome <=64\n\t\t// Don't get tricked when zoom affects offsetWidth (gh-4029)\n\t\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tfunction roundPixelMeasures( measure ) {\n\t\treturn Math.round( parseFloat( measure ) );\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\n\t\treliableTrDimensionsVal, reliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (trac-8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t},\n\n\t\t// Support: IE 9 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Behavior in IE 9 is more subtle than in newer versions & it passes\n\t\t// some versions of this test; make sure not to make it pass there!\n\t\t//\n\t\t// Support: Firefox 70+\n\t\t// Only Firefox includes border widths\n\t\t// in computed dimensions. (gh-4529)\n\t\treliableTrDimensions: function() {\n\t\t\tvar table, tr, trChild, trStyle;\n\t\t\tif ( reliableTrDimensionsVal == null ) {\n\t\t\t\ttable = document.createElement( \"table\" );\n\t\t\t\ttr = document.createElement( \"tr\" );\n\t\t\t\ttrChild = document.createElement( \"div\" );\n\n\t\t\t\ttable.style.cssText = \"position:absolute;left:-11111px;border-collapse:separate\";\n\t\t\t\ttr.style.cssText = \"box-sizing:content-box;border:1px solid\";\n\n\t\t\t\t// Support: Chrome 86+\n\t\t\t\t// Height set through cssText does not get applied.\n\t\t\t\t// Computed height then comes back as 0.\n\t\t\t\ttr.style.height = \"1px\";\n\t\t\t\ttrChild.style.height = \"9px\";\n\n\t\t\t\t// Support: Android 8 Chrome 86+\n\t\t\t\t// In our bodyBackground.html iframe,\n\t\t\t\t// display for all div elements is set to \"inline\",\n\t\t\t\t// which causes a problem only in Android 8 Chrome 86.\n\t\t\t\t// Ensuring the div is `display: block`\n\t\t\t\t// gets around this issue.\n\t\t\t\ttrChild.style.display = \"block\";\n\n\t\t\t\tdocumentElement\n\t\t\t\t\t.appendChild( table )\n\t\t\t\t\t.appendChild( tr )\n\t\t\t\t\t.appendChild( trChild );\n\n\t\t\t\ttrStyle = window.getComputedStyle( tr );\n\t\t\t\treliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderTopWidth, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight;\n\n\t\t\t\tdocumentElement.removeChild( table );\n\t\t\t}\n\t\t\treturn reliableTrDimensionsVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\t\tisCustomProp = rcustomProp.test( name ),\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t//   .css('filter') (IE 9 only, trac-12537)\n\t//   .css('--customProperty) (gh-3144)\n\tif ( computed ) {\n\n\t\t// Support: IE <=9 - 11+\n\t\t// IE only supports `\"float\"` in `getPropertyValue`; in computed styles\n\t\t// it's only available as `\"cssFloat\"`. We no longer modify properties\n\t\t// sent to `.css()` apart from camelCasing, so we need to check both.\n\t\t// Normally, this would create difference in behavior: if\n\t\t// `getPropertyValue` returns an empty string, the value returned\n\t\t// by `.css()` would be `undefined`. This is usually the case for\n\t\t// disconnected elements. However, in IE even disconnected elements\n\t\t// with no styles return `\"none\"` for `getPropertyValue( \"float\" )`\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( isCustomProp && ret ) {\n\n\t\t\t// Support: Firefox 105+, Chrome <=105+\n\t\t\t// Spec requires trimming whitespace for custom properties (gh-4926).\n\t\t\t// Firefox only trims leading whitespace. Chrome just collapses\n\t\t\t// both leading & trailing whitespace to a single space.\n\t\t\t//\n\t\t\t// Fall back to `undefined` if empty string returned.\n\t\t\t// This collapses a missing definition with property defined\n\t\t\t// and set to an empty string but there's no standard API\n\t\t\t// allowing us to differentiate them without a performance penalty\n\t\t\t// and returning `undefined` aligns with older jQuery.\n\t\t\t//\n\t\t\t// rtrimCSS treats U+000D CARRIAGE RETURN and U+000C FORM FEED\n\t\t\t// as whitespace while CSS does not, but this is not a problem\n\t\t\t// because CSS preprocessing replaces them with U+000A LINE FEED\n\t\t\t// (which *is* CSS whitespace)\n\t\t\t// https://www.w3.org/TR/css-syntax-3/#input-preprocessing\n\t\t\tret = ret.replace( rtrimCSS, \"$1\" ) || undefined;\n\t\t}\n\n\t\tif ( ret === \"\" && !isAttached( elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar cssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style,\n\tvendorProps = {};\n\n// Return a vendor-prefixed property or undefined\nfunction vendorPropName( name ) {\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a potentially-mapped jQuery.cssProps or vendor prefixed property\nfunction finalPropName( name ) {\n\tvar final = jQuery.cssProps[ name ] || vendorProps[ name ];\n\n\tif ( final ) {\n\t\treturn final;\n\t}\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\treturn vendorProps[ name ] = vendorPropName( name ) || name;\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t};\n\nfunction setPositiveNumber( _elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0,\n\t\tmarginDelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\t// Count margin delta separately to only add it after scroll gutter adjustment.\n\t\t// This is needed to make negative margins work with `outerHeight( true )` (gh-3982).\n\t\tif ( box === \"margin\" ) {\n\t\t\tmarginDelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\n\t\t// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n\t\t// Use an explicit zero to avoid NaN (gh-3964)\n\t\t) ) || 0;\n\t}\n\n\treturn delta + marginDelta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\n\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n\t\t// Fake content-box until we know it's needed to know the true value.\n\t\tboxSizingNeeded = !support.boxSizingReliable() || extra,\n\t\tisBorderBox = boxSizingNeeded &&\n\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox,\n\n\t\tval = curCSS( elem, dimension, styles ),\n\t\toffsetProp = \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );\n\n\t// Support: Firefox <=54\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\n\t// Support: IE 9 - 11 only\n\t// Use offsetWidth/offsetHeight for when box sizing is unreliable.\n\t// In those cases, the computed value can be trusted to be border-box.\n\tif ( ( !support.boxSizingReliable() && isBorderBox ||\n\n\t\t// Support: IE 10 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Interestingly, in some cases IE 9 doesn't suffer from this issue.\n\t\t!support.reliableTrDimensions() && nodeName( elem, \"tr\" ) ||\n\n\t\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t\t// This happens for inline elements with no explicit setting (gh-3571)\n\t\tval === \"auto\" ||\n\n\t\t// Support: Android <=4.1 - 4.3 only\n\t\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) &&\n\n\t\t// Make sure the element is visible & connected\n\t\telem.getClientRects().length ) {\n\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t\t// Where available, offsetWidth/offsetHeight approximate border box dimensions.\n\t\t// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n\t\t// retrieved value as a content box dimension.\n\t\tvalueIsBorderBox = offsetProp in elem;\n\t\tif ( valueIsBorderBox ) {\n\t\t\tval = elem[ offsetProp ];\n\t\t}\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\tanimationIterationCount: true,\n\t\taspectRatio: true,\n\t\tborderImageSlice: true,\n\t\tcolumnCount: true,\n\t\tflexGrow: true,\n\t\tflexShrink: true,\n\t\tfontWeight: true,\n\t\tgridArea: true,\n\t\tgridColumn: true,\n\t\tgridColumnEnd: true,\n\t\tgridColumnStart: true,\n\t\tgridRow: true,\n\t\tgridRowEnd: true,\n\t\tgridRowStart: true,\n\t\tlineHeight: true,\n\t\topacity: true,\n\t\torder: true,\n\t\torphans: true,\n\t\tscale: true,\n\t\twidows: true,\n\t\tzIndex: true,\n\t\tzoom: true,\n\n\t\t// SVG-related\n\t\tfillOpacity: true,\n\t\tfloodOpacity: true,\n\t\tstopOpacity: true,\n\t\tstrokeMiterlimit: true,\n\t\tstrokeOpacity: true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (trac-7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug trac-9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (trac-7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\t// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n\t\t\t// \"px\" to a few hardcoded values.\n\t\t\tif ( type === \"number\" && !isCustomProp ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( _i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t} ) :\n\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\n\t\t\t\t// Only read styles.position if the test has a chance to fail\n\t\t\t\t// to avoid forcing a reflow.\n\t\t\t\tscrollboxSizeBuggy = !support.scrollboxSize() &&\n\t\t\t\t\tstyles.position === \"absolute\",\n\n\t\t\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n\t\t\t\tboxSizingNeeded = scrollboxSizeBuggy || extra,\n\t\t\t\tisBorderBox = boxSizingNeeded &&\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra ?\n\t\t\t\t\tboxModelAdjustment(\n\t\t\t\t\t\telem,\n\t\t\t\t\t\tdimension,\n\t\t\t\t\t\textra,\n\t\t\t\t\t\tisBorderBox,\n\t\t\t\t\t\tstyles\n\t\t\t\t\t) :\n\t\t\t\t\t0;\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && scrollboxSizeBuggy ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 && (\n\t\t\t\tjQuery.cssHooks[ tween.prop ] ||\n\t\t\t\t\ttween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\n\t\t// the overflowX value there.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (trac-12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tisFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\n\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( _i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( _i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// Use proper attribute retrieval (trac-12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classNames, cur, curValue, className, i, finalValue;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\tif ( classNames.length ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tcurValue = getClass( this );\n\t\t\t\tcur = this.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\t\tclassName = classNames[ i ];\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + className + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += className + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\tthis.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classNames, cur, curValue, className, i, finalValue;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\tif ( classNames.length ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tcurValue = getClass( this );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = this.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\t\tclassName = classNames[ i ];\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + className + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + className + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\tthis.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar classNames, className, i, self,\n\t\t\ttype = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\treturn this.each( function() {\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\tself = jQuery( this );\n\n\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\tclassName = classNames[ i ];\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (trac-14686, trac-14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (trac-2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\nvar location = window.location;\n\nvar nonce = { guid: Date.now() };\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml, parserErrorElem;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {}\n\n\tparserErrorElem = xml && xml.getElementsByTagName( \"parsererror\" )[ 0 ];\n\tif ( !xml || parserErrorElem ) {\n\t\tjQuery.error( \"Invalid XML: \" + (\n\t\t\tparserErrorElem ?\n\t\t\t\tjQuery.map( parserErrorElem.childNodes, function( el ) {\n\t\t\t\t\treturn el.textContent;\n\t\t\t\t} ).join( \"\\n\" ) :\n\t\t\t\tdata\n\t\t) );\n\t}\n\treturn xml;\n};\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (trac-9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (trac-9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || Object.create( null ) )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (trac-6170)\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\tif ( a == null ) {\n\t\treturn \"\";\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} ).filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} ).map( function( _i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// trac-7653, trac-8125, trac-8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t *    - BEFORE asking for a transport\n\t *    - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (trac-10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\noriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes trac-9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() + \" \" ] =\n\t\t\t\t\t\t\t\t\t( responseHeaders[ match[ 1 ].toLowerCase() + \" \" ] || [] )\n\t\t\t\t\t\t\t\t\t\t.concat( match[ 2 ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() + \" \" ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match.join( \", \" );\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (trac-10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket trac-12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 15\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (trac-15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// trac-9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce.guid++ ) +\n\t\t\t\t\tuncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Use a noop converter for missing script but not if jsonp\n\t\t\tif ( !isSuccess &&\n\t\t\t\tjQuery.inArray( \"script\", s.dataTypes ) > -1 &&\n\t\t\t\tjQuery.inArray( \"json\", s.dataTypes ) < 0 ) {\n\t\t\t\ts.converters[ \"text script\" ] = function() {};\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( _i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\njQuery.ajaxPrefilter( function( s ) {\n\tvar i;\n\tfor ( i in s.headers ) {\n\t\tif ( i.toLowerCase() === \"content-type\" ) {\n\t\t\ts.contentType = s.headers[ i ] || \"\";\n\t\t}\n\t}\n} );\n\n\njQuery._evalUrl = function( url, options, doc ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (trac-11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\n\t\t// Only evaluate the response if it is successful (gh-4126)\n\t\t// dataFilter is not invoked for failure responses, so using it instead\n\t\t// of the default converter is kludgy but it works.\n\t\tconverters: {\n\t\t\t\"text script\": function() {}\n\t\t},\n\t\tdataFilter: function( response ) {\n\t\t\tjQuery.globalEval( response, options, doc );\n\t\t}\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// trac-1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.ontimeout =\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see trac-8605, trac-14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\"  ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// trac-14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain or forced-by-attrs requests\n\tif ( s.crossDomain || s.scriptAttrs ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"<script>\" )\n\t\t\t\t\t.attr( s.scriptAttrs || {} )\n\t\t\t\t\t.prop( { charset: s.scriptCharset, src: s.url } )\n\t\t\t\t\t.on( \"load error\", callback = function( evt ) {\n\t\t\t\t\t\tscript.remove();\n\t\t\t\t\t\tcallback = null;\n\t\t\t\t\t\tif ( evt ) {\n\t\t\t\t\t\t\tcomplete( evt.type === \"error\" ? 404 : 200, evt.type );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t// Use native DOM manipulation to avoid our domManip AJAX trickery\n\t\t\t\tdocument.head.appendChild( script[ 0 ] );\n\t\t\t},\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\nvar oldCallbacks = [],\n\trjsonp = /(=)\\?(?=&|$)|\\?\\?/;\n\n// Default jsonp settings\njQuery.ajaxSetup( {\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\tvar callback = oldCallbacks.pop() || ( jQuery.expando + \"_\" + ( nonce.guid++ ) );\n\t\tthis[ callback ] = true;\n\t\treturn callback;\n\t}\n} );\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar callbackName, overwritten, responseContainer,\n\t\tjsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?\n\t\t\t\"url\" :\n\t\t\ttypeof s.data === \"string\" &&\n\t\t\t\t( s.contentType || \"\" )\n\t\t\t\t\t.indexOf( \"application/x-www-form-urlencoded\" ) === 0 &&\n\t\t\t\trjsonp.test( s.data ) && \"data\"\n\t\t);\n\n\t// Handle iff the expected data type is \"jsonp\" or we have a parameter to set\n\tif ( jsonProp || s.dataTypes[ 0 ] === \"jsonp\" ) {\n\n\t\t// Get callback name, remembering preexisting value associated with it\n\t\tcallbackName = s.jsonpCallback = isFunction( s.jsonpCallback ) ?\n\t\t\ts.jsonpCallback() :\n\t\t\ts.jsonpCallback;\n\n\t\t// Insert callback into url or form data\n\t\tif ( jsonProp ) {\n\t\t\ts[ jsonProp ] = s[ jsonProp ].replace( rjsonp, \"$1\" + callbackName );\n\t\t} else if ( s.jsonp !== false ) {\n\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.jsonp + \"=\" + callbackName;\n\t\t}\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[ \"script json\" ] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( callbackName + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// Force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Install callback\n\t\toverwritten = window[ callbackName ];\n\t\twindow[ callbackName ] = function() {\n\t\t\tresponseContainer = arguments;\n\t\t};\n\n\t\t// Clean-up function (fires after converters)\n\t\tjqXHR.always( function() {\n\n\t\t\t// If previous value didn't exist - remove it\n\t\t\tif ( overwritten === undefined ) {\n\t\t\t\tjQuery( window ).removeProp( callbackName );\n\n\t\t\t// Otherwise restore preexisting value\n\t\t\t} else {\n\t\t\t\twindow[ callbackName ] = overwritten;\n\t\t\t}\n\n\t\t\t// Save back as free\n\t\t\tif ( s[ callbackName ] ) {\n\n\t\t\t\t// Make sure that re-using the options doesn't screw things around\n\t\t\t\ts.jsonpCallback = originalSettings.jsonpCallback;\n\n\t\t\t\t// Save the callback name for future use\n\t\t\t\toldCallbacks.push( callbackName );\n\t\t\t}\n\n\t\t\t// Call if it was a function and we have a response\n\t\t\tif ( responseContainer && isFunction( overwritten ) ) {\n\t\t\t\toverwritten( responseContainer[ 0 ] );\n\t\t\t}\n\n\t\t\tresponseContainer = overwritten = undefined;\n\t\t} );\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n} );\n\n\n\n\n// Support: Safari 8 only\n// In Safari 8 documents created via document.implementation.createHTMLDocument\n// collapse sibling forms: the second one becomes a child of the first one.\n// Because of that, this security measure has to be disabled in Safari 8.\n// https://bugs.webkit.org/show_bug.cgi?id=137337\nsupport.createHTMLDocument = ( function() {\n\tvar body = document.implementation.createHTMLDocument( \"\" ).body;\n\tbody.innerHTML = \"<form></form><form></form>\";\n\treturn body.childNodes.length === 2;\n} )();\n\n\n// Argument \"data\" should be string of html\n// context (optional): If specified, the fragment will be created in this context,\n// defaults to document\n// keepScripts (optional): If true, will include scripts passed in the html string\njQuery.parseHTML = function( data, context, keepScripts ) {\n\tif ( typeof data !== \"string\" ) {\n\t\treturn [];\n\t}\n\tif ( typeof context === \"boolean\" ) {\n\t\tkeepScripts = context;\n\t\tcontext = false;\n\t}\n\n\tvar base, parsed, scripts;\n\n\tif ( !context ) {\n\n\t\t// Stop scripts or inline event handlers from being executed immediately\n\t\t// by using document.implementation\n\t\tif ( support.createHTMLDocument ) {\n\t\t\tcontext = document.implementation.createHTMLDocument( \"\" );\n\n\t\t\t// Set the base href for the created document\n\t\t\t// so any parsed elements with URLs\n\t\t\t// are based on the document's URL (gh-2965)\n\t\t\tbase = context.createElement( \"base\" );\n\t\t\tbase.href = document.location.href;\n\t\t\tcontext.head.appendChild( base );\n\t\t} else {\n\t\t\tcontext = document;\n\t\t}\n\t}\n\n\tparsed = rsingleTag.exec( data );\n\tscripts = !keepScripts && [];\n\n\t// Single tag\n\tif ( parsed ) {\n\t\treturn [ context.createElement( parsed[ 1 ] ) ];\n\t}\n\n\tparsed = buildFragment( [ data ], context, scripts );\n\n\tif ( scripts && scripts.length ) {\n\t\tjQuery( scripts ).remove();\n\t}\n\n\treturn jQuery.merge( [], parsed.childNodes );\n};\n\n\n/**\n * Load a url into a page\n */\njQuery.fn.load = function( url, params, callback ) {\n\tvar selector, type, response,\n\t\tself = this,\n\t\toff = url.indexOf( \" \" );\n\n\tif ( off > -1 ) {\n\t\tselector = stripAndCollapse( url.slice( off ) );\n\t\turl = url.slice( 0, off );\n\t}\n\n\t// If it's a function\n\tif ( isFunction( params ) ) {\n\n\t\t// We assume that it's the callback\n\t\tcallback = params;\n\t\tparams = undefined;\n\n\t// Otherwise, build a param string\n\t} else if ( params && typeof params === \"object\" ) {\n\t\ttype = \"POST\";\n\t}\n\n\t// If we have elements to modify, make the request\n\tif ( self.length > 0 ) {\n\t\tjQuery.ajax( {\n\t\t\turl: url,\n\n\t\t\t// If \"type\" variable is undefined, then \"GET\" method will be used.\n\t\t\t// Make value of this field explicit since\n\t\t\t// user can override it through ajaxSetup method\n\t\t\ttype: type || \"GET\",\n\t\t\tdataType: \"html\",\n\t\t\tdata: params\n\t\t} ).done( function( responseText ) {\n\n\t\t\t// Save response for use in complete callback\n\t\t\tresponse = arguments;\n\n\t\t\tself.html( selector ?\n\n\t\t\t\t// If a selector was specified, locate the right elements in a dummy div\n\t\t\t\t// Exclude scripts to avoid IE 'Permission Denied' errors\n\t\t\t\tjQuery( \"<div>\" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :\n\n\t\t\t\t// Otherwise use the full result\n\t\t\t\tresponseText );\n\n\t\t// If the request succeeds, this function gets \"data\", \"status\", \"jqXHR\"\n\t\t// but they are ignored because response was set above.\n\t\t// If it fails, this function gets \"jqXHR\", \"status\", \"error\"\n\t\t} ).always( callback && function( jqXHR, status ) {\n\t\t\tself.each( function() {\n\t\t\t\tcallback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );\n\t\t\t} );\n\t\t} );\n\t}\n\n\treturn this;\n};\n\n\n\n\njQuery.expr.pseudos.animated = function( elem ) {\n\treturn jQuery.grep( jQuery.timers, function( fn ) {\n\t\treturn elem === fn.elem;\n\t} ).length;\n};\n\n\n\n\njQuery.offset = {\n\tsetOffset: function( elem, options, i ) {\n\t\tvar curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,\n\t\t\tposition = jQuery.css( elem, \"position\" ),\n\t\t\tcurElem = jQuery( elem ),\n\t\t\tprops = {};\n\n\t\t// Set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tcurOffset = curElem.offset();\n\t\tcurCSSTop = jQuery.css( elem, \"top\" );\n\t\tcurCSSLeft = jQuery.css( elem, \"left\" );\n\t\tcalculatePosition = ( position === \"absolute\" || position === \"fixed\" ) &&\n\t\t\t( curCSSTop + curCSSLeft ).indexOf( \"auto\" ) > -1;\n\n\t\t// Need to be able to calculate position if either\n\t\t// top or left is auto and position is either absolute or fixed\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t\tcurTop = curPosition.top;\n\t\t\tcurLeft = curPosition.left;\n\n\t\t} else {\n\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n\t\t}\n\n\t\tif ( isFunction( options ) ) {\n\n\t\t\t// Use jQuery.extend here to allow modification of coordinates argument (gh-1848)\n\t\t\toptions = options.call( elem, i, jQuery.extend( {}, curOffset ) );\n\t\t}\n\n\t\tif ( options.top != null ) {\n\t\t\tprops.top = ( options.top - curOffset.top ) + curTop;\n\t\t}\n\t\tif ( options.left != null ) {\n\t\t\tprops.left = ( options.left - curOffset.left ) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\njQuery.fn.extend( {\n\n\t// offset() relates an element's border box to the document origin\n\toffset: function( options ) {\n\n\t\t// Preserve chaining for setter\n\t\tif ( arguments.length ) {\n\t\t\treturn options === undefined ?\n\t\t\t\tthis :\n\t\t\t\tthis.each( function( i ) {\n\t\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t\t} );\n\t\t}\n\n\t\tvar rect, win,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !elem ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Return zeros for disconnected and hidden (display: none) elements (gh-2310)\n\t\t// Support: IE <=11 only\n\t\t// Running getBoundingClientRect on a\n\t\t// disconnected node in IE throws an error\n\t\tif ( !elem.getClientRects().length ) {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t\t// Get document-relative position by adding viewport scroll to viewport-relative gBCR\n\t\trect = elem.getBoundingClientRect();\n\t\twin = elem.ownerDocument.defaultView;\n\t\treturn {\n\t\t\ttop: rect.top + win.pageYOffset,\n\t\t\tleft: rect.left + win.pageXOffset\n\t\t};\n\t},\n\n\t// position() relates an element's margin box to its offset parent's padding box\n\t// This corresponds to the behavior of CSS absolute positioning\n\tposition: function() {\n\t\tif ( !this[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar offsetParent, offset, doc,\n\t\t\telem = this[ 0 ],\n\t\t\tparentOffset = { top: 0, left: 0 };\n\n\t\t// position:fixed elements are offset from the viewport, which itself always has zero offset\n\t\tif ( jQuery.css( elem, \"position\" ) === \"fixed\" ) {\n\n\t\t\t// Assume position:fixed implies availability of getBoundingClientRect\n\t\t\toffset = elem.getBoundingClientRect();\n\n\t\t} else {\n\t\t\toffset = this.offset();\n\n\t\t\t// Account for the *real* offset parent, which can be the document or its root element\n\t\t\t// when a statically positioned element is identified\n\t\t\tdoc = elem.ownerDocument;\n\t\t\toffsetParent = elem.offsetParent || doc.documentElement;\n\t\t\twhile ( offsetParent &&\n\t\t\t\t( offsetParent === doc.body || offsetParent === doc.documentElement ) &&\n\t\t\t\tjQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\n\t\t\t\toffsetParent = offsetParent.parentNode;\n\t\t\t}\n\t\t\tif ( offsetParent && offsetParent !== elem && offsetParent.nodeType === 1 ) {\n\n\t\t\t\t// Incorporate borders into its offset, since they are outside its content origin\n\t\t\t\tparentOffset = jQuery( offsetParent ).offset();\n\t\t\t\tparentOffset.top += jQuery.css( offsetParent, \"borderTopWidth\", true );\n\t\t\t\tparentOffset.left += jQuery.css( offsetParent, \"borderLeftWidth\", true );\n\t\t\t}\n\t\t}\n\n\t\t// Subtract parent offsets and element margins\n\t\treturn {\n\t\t\ttop: offset.top - parentOffset.top - jQuery.css( elem, \"marginTop\", true ),\n\t\t\tleft: offset.left - parentOffset.left - jQuery.css( elem, \"marginLeft\", true )\n\t\t};\n\t},\n\n\t// This method will return documentElement in the following cases:\n\t// 1) For the element inside the iframe without offsetParent, this method will return\n\t//    documentElement of the parent window\n\t// 2) For the hidden or detached element\n\t// 3) For body or html element, i.e. in case of the html node - it will return itself\n\t//\n\t// but those exceptions were never presented as a real life use-cases\n\t// and might be considered as more preferable results.\n\t//\n\t// This logic, however, is not guaranteed and can change at any point in the future\n\toffsetParent: function() {\n\t\treturn this.map( function() {\n\t\t\tvar offsetParent = this.offsetParent;\n\n\t\t\twhile ( offsetParent && jQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\n\t\t\treturn offsetParent || documentElement;\n\t\t} );\n\t}\n} );\n\n// Create scrollLeft and scrollTop methods\njQuery.each( { scrollLeft: \"pageXOffset\", scrollTop: \"pageYOffset\" }, function( method, prop ) {\n\tvar top = \"pageYOffset\" === prop;\n\n\tjQuery.fn[ method ] = function( val ) {\n\t\treturn access( this, function( elem, method, val ) {\n\n\t\t\t// Coalesce documents and windows\n\t\t\tvar win;\n\t\t\tif ( isWindow( elem ) ) {\n\t\t\t\twin = elem;\n\t\t\t} else if ( elem.nodeType === 9 ) {\n\t\t\t\twin = elem.defaultView;\n\t\t\t}\n\n\t\t\tif ( val === undefined ) {\n\t\t\t\treturn win ? win[ prop ] : elem[ method ];\n\t\t\t}\n\n\t\t\tif ( win ) {\n\t\t\t\twin.scrollTo(\n\t\t\t\t\t!top ? val : win.pageXOffset,\n\t\t\t\t\ttop ? val : win.pageYOffset\n\t\t\t\t);\n\n\t\t\t} else {\n\t\t\t\telem[ method ] = val;\n\t\t\t}\n\t\t}, method, val, arguments.length );\n\t};\n} );\n\n// Support: Safari <=7 - 9.1, Chrome <=37 - 49\n// Add the top/left cssHooks using jQuery.fn.position\n// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084\n// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347\n// getComputedStyle returns percent when specified for top/left/bottom/right;\n// rather than make the css module depend on the offset module, just check for it here\njQuery.each( [ \"top\", \"left\" ], function( _i, prop ) {\n\tjQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,\n\t\tfunction( elem, computed ) {\n\t\t\tif ( computed ) {\n\t\t\t\tcomputed = curCSS( elem, prop );\n\n\t\t\t\t// If curCSS returns percentage, fallback to offset\n\t\t\t\treturn rnumnonpx.test( computed ) ?\n\t\t\t\t\tjQuery( elem ).position()[ prop ] + \"px\" :\n\t\t\t\t\tcomputed;\n\t\t\t}\n\t\t}\n\t);\n} );\n\n\n// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods\njQuery.each( { Height: \"height\", Width: \"width\" }, function( name, type ) {\n\tjQuery.each( {\n\t\tpadding: \"inner\" + name,\n\t\tcontent: type,\n\t\t\"\": \"outer\" + name\n\t}, function( defaultExtra, funcName ) {\n\n\t\t// Margin is only for outerHeight, outerWidth\n\t\tjQuery.fn[ funcName ] = function( margin, value ) {\n\t\t\tvar chainable = arguments.length && ( defaultExtra || typeof margin !== \"boolean\" ),\n\t\t\t\textra = defaultExtra || ( margin === true || value === true ? \"margin\" : \"border\" );\n\n\t\t\treturn access( this, function( elem, type, value ) {\n\t\t\t\tvar doc;\n\n\t\t\t\tif ( isWindow( elem ) ) {\n\n\t\t\t\t\t// $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)\n\t\t\t\t\treturn funcName.indexOf( \"outer\" ) === 0 ?\n\t\t\t\t\t\telem[ \"inner\" + name ] :\n\t\t\t\t\t\telem.document.documentElement[ \"client\" + name ];\n\t\t\t\t}\n\n\t\t\t\t// Get document width or height\n\t\t\t\tif ( elem.nodeType === 9 ) {\n\t\t\t\t\tdoc = elem.documentElement;\n\n\t\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],\n\t\t\t\t\t// whichever is greatest\n\t\t\t\t\treturn Math.max(\n\t\t\t\t\t\telem.body[ \"scroll\" + name ], doc[ \"scroll\" + name ],\n\t\t\t\t\t\telem.body[ \"offset\" + name ], doc[ \"offset\" + name ],\n\t\t\t\t\t\tdoc[ \"client\" + name ]\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn value === undefined ?\n\n\t\t\t\t\t// Get width or height on the element, requesting but not forcing parseFloat\n\t\t\t\t\tjQuery.css( elem, type, extra ) :\n\n\t\t\t\t\t// Set width or height on the element\n\t\t\t\t\tjQuery.style( elem, type, value, extra );\n\t\t\t}, type, chainable ? margin : undefined, chainable );\n\t\t};\n\t} );\n} );\n\n\njQuery.each( [\n\t\"ajaxStart\",\n\t\"ajaxStop\",\n\t\"ajaxComplete\",\n\t\"ajaxError\",\n\t\"ajaxSuccess\",\n\t\"ajaxSend\"\n], function( _i, type ) {\n\tjQuery.fn[ type ] = function( fn ) {\n\t\treturn this.on( type, fn );\n\t};\n} );\n\n\n\n\njQuery.fn.extend( {\n\n\tbind: function( types, data, fn ) {\n\t\treturn this.on( types, null, data, fn );\n\t},\n\tunbind: function( types, fn ) {\n\t\treturn this.off( types, null, fn );\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.on( types, selector, data, fn );\n\t},\n\tundelegate: function( selector, types, fn ) {\n\n\t\t// ( namespace ) or ( selector, types [, fn] )\n\t\treturn arguments.length === 1 ?\n\t\t\tthis.off( selector, \"**\" ) :\n\t\t\tthis.off( types, selector || \"**\", fn );\n\t},\n\n\thover: function( fnOver, fnOut ) {\n\t\treturn this\n\t\t\t.on( \"mouseenter\", fnOver )\n\t\t\t.on( \"mouseleave\", fnOut || fnOver );\n\t}\n} );\n\njQuery.each(\n\t( \"blur focus focusin focusout resize scroll click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup contextmenu\" ).split( \" \" ),\n\tfunction( _i, name ) {\n\n\t\t// Handle event binding\n\t\tjQuery.fn[ name ] = function( data, fn ) {\n\t\t\treturn arguments.length > 0 ?\n\t\t\t\tthis.on( name, null, data, fn ) :\n\t\t\t\tthis.trigger( name );\n\t\t};\n\t}\n);\n\n\n\n\n// Support: Android <=4.0 only\n// Make sure we trim BOM and NBSP\n// Require that the \"whitespace run\" starts from a non-whitespace\n// to avoid O(N^2) behavior when the engine would try matching \"\\s+$\" at each space position.\nvar rtrim = /^[\\s\\uFEFF\\xA0]+|([^\\s\\uFEFF\\xA0])[\\s\\uFEFF\\xA0]+$/g;\n\n// Bind a function to a context, optionally partially applying any\n// arguments.\n// jQuery.proxy is deprecated to promote standards (specifically Function#bind)\n// However, it is not slated for removal any time soon\njQuery.proxy = function( fn, context ) {\n\tvar tmp, args, proxy;\n\n\tif ( typeof context === \"string\" ) {\n\t\ttmp = fn[ context ];\n\t\tcontext = fn;\n\t\tfn = tmp;\n\t}\n\n\t// Quick check to determine if target is callable, in the spec\n\t// this throws a TypeError, but we will just return undefined.\n\tif ( !isFunction( fn ) ) {\n\t\treturn undefined;\n\t}\n\n\t// Simulated bind\n\targs = slice.call( arguments, 2 );\n\tproxy = function() {\n\t\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\n\t};\n\n\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\treturn proxy;\n};\n\njQuery.holdReady = function( hold ) {\n\tif ( hold ) {\n\t\tjQuery.readyWait++;\n\t} else {\n\t\tjQuery.ready( true );\n\t}\n};\njQuery.isArray = Array.isArray;\njQuery.parseJSON = JSON.parse;\njQuery.nodeName = nodeName;\njQuery.isFunction = isFunction;\njQuery.isWindow = isWindow;\njQuery.camelCase = camelCase;\njQuery.type = toType;\n\njQuery.now = Date.now;\n\njQuery.isNumeric = function( obj ) {\n\n\t// As of jQuery 3.0, isNumeric is limited to\n\t// strings and numbers (primitives or objects)\n\t// that can be coerced to finite numbers (gh-2662)\n\tvar type = jQuery.type( obj );\n\treturn ( type === \"number\" || type === \"string\" ) &&\n\n\t\t// parseFloat NaNs numeric-cast false positives (\"\")\n\t\t// ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n\t\t// subtraction forces infinities to NaN\n\t\t!isNaN( obj - parseFloat( obj ) );\n};\n\njQuery.trim = function( text ) {\n\treturn text == null ?\n\t\t\"\" :\n\t\t( text + \"\" ).replace( rtrim, \"$1\" );\n};\n\n\n\n// Register as a named AMD module, since jQuery can be concatenated with other\n// files that may use define, but not via a proper concatenation script that\n// understands anonymous AMD modules. A named AMD is safest and most robust\n// way to register. Lowercase jquery is used because AMD module names are\n// derived from file names, and jQuery is normally delivered in a lowercase\n// file name. Do this after creating the global so that if an AMD module wants\n// to call noConflict to hide this version of jQuery, it will work.\n\n// Note that for maximum portability, libraries that are not jQuery should\n// declare themselves as anonymous modules, and avoid setting a global if an\n// AMD loader is present. jQuery is a special case. For more information, see\n// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon\n\nif ( typeof define === \"function\" && define.amd ) {\n\tdefine( \"jquery\", [], function() {\n\t\treturn jQuery;\n\t} );\n}\n\n\n\n\nvar\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$;\n\njQuery.noConflict = function( deep ) {\n\tif ( window.$ === jQuery ) {\n\t\twindow.$ = _$;\n\t}\n\n\tif ( deep && window.jQuery === jQuery ) {\n\t\twindow.jQuery = _jQuery;\n\t}\n\n\treturn jQuery;\n};\n\n// Expose jQuery and $ identifiers, even in AMD\n// (trac-7102#comment:10, https://github.com/jquery/jquery/pull/557)\n// and CommonJS for browser emulators (trac-13566)\nif ( typeof noGlobal === \"undefined\" ) {\n\twindow.jQuery = window.$ = jQuery;\n}\n\n\n\n\nreturn jQuery;\n} );\n","import TestApi from \"src/test-api\"\nimport ClipboardJS from \"clipboard/dist/clipboard\"\n\n$(function() {\n  // Fix input element click problem\n  $('.dropdown-menu form').on('click', function(e) {\n    e.stopPropagation();\n  });\n  $('.dropdown-menu').on('touchstart.dropdown.data-api', function(e) {\n    e.stopPropagation()\n  })\n\n  // Instantiate Twitter Combobox plugin\n  $('.combobox').combobox({\n    clearIfNoMatch: false,\n    bsVersion: '4',\n    iconCaret: 'dropdown-toggle',\n    freeform: true\n  });\n\n  // Select default address\n  const $address = $(\"#address\");\n  if ($address[0]) {\n    $address[0].setSelectionRange(0, $address.val().length);\n  }\n\n  // Setup test API button\n  new TestApi(\".test-api-btn\").setup();\n\n  new ClipboardJS(\".copy-clipboard\");\n});\n\n","jQuery(function() {\n  $(\"a[rel~=popover], .has-popover\").popover();\n  return $(\"a[rel~=tooltip], .has-tooltip\").tooltip();\n});\n"],"sourceRoot":""}