diff --git a/.storybook/middleware.js b/.storybook/middleware.js new file mode 100644 index 000000000..10947f4a3 --- /dev/null +++ b/.storybook/middleware.js @@ -0,0 +1,9 @@ +const express = require("express"); + +const expressMiddleWare = (router) => { + router.post("/update", function (req, res) { + res.status(200).send("ok"); + }); +}; + +module.exports = expressMiddleWare; diff --git a/assets/index.html b/assets/index.html index 304f2f379..f4ed30631 100644 --- a/assets/index.html +++ b/assets/index.html @@ -30,21 +30,5 @@
- - diff --git a/assets/js/components/Footer.stories.js b/assets/js/components/Footer.stories.js new file mode 100644 index 000000000..250a98633 --- /dev/null +++ b/assets/js/components/Footer.stories.js @@ -0,0 +1,45 @@ +import Footer from "./Footer.vue"; + +export default { + title: "Main/Footer", + component: Footer, + argTypes: {}, +}; + +const Template = (args, { argTypes }) => ({ + props: Object.keys(argTypes), + components: { Footer }, + template: '', +}); + +export const KeinUpdate = Template.bind({}); +KeinUpdate.args = { + version: { installed: "0.40" }, +}; +export const UpdateVerfuegbar = Template.bind({}); +UpdateVerfuegbar.args = { + version: { + installed: "0.36", + available: "0.40", + releaseNotes: "Lorem ipsum dolor sit amet consectetur", + }, +}; + +export const Updater = Template.bind({}); +Updater.args = { + version: { + installed: "0.36", + available: "0.40", + releaseNotes: "Lorem ipsum dolor sit amet consectetur", + hasUpdater: true, + }, +}; + +export const Upgrade = Template.bind({}); +Upgrade.args = { + version: { + installed: "0.36", + available: "0.40", + hasUpdater: true, + }, +}; diff --git a/assets/js/components/Footer.vue b/assets/js/components/Footer.vue new file mode 100644 index 000000000..39bbbed32 --- /dev/null +++ b/assets/js/components/Footer.vue @@ -0,0 +1,40 @@ + + + + + diff --git a/assets/js/components/Version.stories.js b/assets/js/components/Version.stories.js index fadfe6d30..392617bba 100644 --- a/assets/js/components/Version.stories.js +++ b/assets/js/components/Version.stories.js @@ -12,28 +12,32 @@ const Template = (args, { argTypes }) => ({ template: '', }); -export const Base = Template.bind({}); -Base.args = { - installed: "0.36", - available: "0.40", +const releaseNotes = + '

0.48

Bug fixes:

Enhancements:

'; + +export const AktuelleVersion = Template.bind({}); +AktuelleVersion.args = { + installed: "0.48", + available: "0.48", }; -export const ReleaseNotes = Template.bind({}); -ReleaseNotes.args = { - installed: "0.36", - available: "0.40", - releaseNotes: "Lorem ipsum dolor sit amet consectetur", + +export const Download = Template.bind({}); +Download.args = { + installed: "0.47", + available: "0.48", + releaseNotes, }; export const Updater = Template.bind({}); Updater.args = { - installed: "0.36", - available: "0.40", - releaseNotes: "Lorem ipsum dolor sit amet consectetur", + installed: "0.47", + available: "0.48", + releaseNotes, hasUpdater: true, }; -export const Upgrade = Template.bind({}); -Upgrade.args = { +export const KeineReleaseNotes = Template.bind({}); +KeineReleaseNotes.args = { installed: "0.36", available: "0.40", hasUpdater: true, diff --git a/assets/js/components/Version.vue b/assets/js/components/Version.vue index 9cf8072e0..81d61916f 100644 --- a/assets/js/components/Version.vue +++ b/assets/js/components/Version.vue @@ -1,112 +1,103 @@ @@ -185,7 +163,6 @@ export default { .fade-leave-to { opacity: 0; } - .dialog { position: fixed; top: 0; @@ -196,15 +173,10 @@ export default { overflow: hidden; outline: 0; } -.display-enter-active { - display: block !important; +.icon { + color: #0fdd42; } - -.expand-icon { - transition: transform 0.25s ease-in; - transform: rotate(0); -} -.expand-icon-rotated { - transform: rotate(-180deg); +.text-black a { + color: #18191a; } diff --git a/assets/js/icons.js b/assets/js/icons.js index 5798e90df..300e4901f 100644 --- a/assets/js/icons.js +++ b/assets/js/icons.js @@ -18,6 +18,9 @@ import { faSun } from "@fortawesome/free-solid-svg-icons/faSun"; import { faTemperatureHigh } from "@fortawesome/free-solid-svg-icons/faTemperatureHigh"; import { faTemperatureLow } from "@fortawesome/free-solid-svg-icons/faTemperatureLow"; import { faThermometerHalf } from "@fortawesome/free-solid-svg-icons/faThermometerHalf"; +import { faHeart } from "@fortawesome/free-solid-svg-icons/faHeart"; +import { faGift } from "@fortawesome/free-solid-svg-icons/faGift"; +import { faBox } from "@fortawesome/free-solid-svg-icons/faBox"; library.add( faArrowDown, @@ -35,7 +38,10 @@ library.add( faSun, faTemperatureHigh, faTemperatureLow, - faThermometerHalf + faThermometerHalf, + faHeart, + faGift, + faBox ); Vue.component("fa-icon", FontAwesomeIcon); diff --git a/assets/js/views/App.vue b/assets/js/views/App.vue index 58e28780a..f5619edc1 100644 --- a/assets/js/views/App.vue +++ b/assets/js/views/App.vue @@ -1,58 +1,53 @@ + diff --git a/dist/css/index.4716cdc1.css b/dist/css/index.9eccec4b.css similarity index 51% rename from dist/css/index.4716cdc1.css rename to dist/css/index.9eccec4b.css index c10826f94..5a8c182d6 100644 --- a/dist/css/index.4716cdc1.css +++ b/dist/css/index.9eccec4b.css @@ -1 +1 @@ -.progress-bar-animated{animation-direction:reverse}.btn.caption{opacity:1}.btn.first{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}code{font-size:87.5%;color:#e83e8c;word-wrap:break-word}.value,input[type=radio],label.btn{white-space:nowrap!important}.text-muted a,.text-muted a:hover{color:#6c757d!important;text-decoration:none}.bg-muted{opacity:.25}.fade-enter-active[data-v-4b17e482],.fade-leave-active[data-v-4b17e482]{transition:opacity .25s ease-in}.fade-enter[data-v-4b17e482],.fade-leave-to[data-v-4b17e482]{opacity:0}.dialog[data-v-4b17e482]{position:fixed;top:0;left:0;z-index:1050;width:100%;height:100%;overflow:hidden;outline:0}.display-enter-active[data-v-4b17e482]{display:block!important}.expand-icon[data-v-4b17e482]{transition:transform .25s ease-in;transform:rotate(0)}.expand-icon-rotated[data-v-4b17e482]{transform:rotate(-180deg)} \ No newline at end of file +.progress-bar-animated{animation-direction:reverse}.btn.caption{opacity:1}.btn.first{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}code{font-size:87.5%;color:#e83e8c;word-wrap:break-word}.value,input[type=radio],label.btn{white-space:nowrap!important}.text-muted a,.text-muted a:hover{color:#6c757d!important;text-decoration:none}.bg-muted{opacity:.25}.fade-enter-active[data-v-a6ded36e],.fade-leave-active[data-v-a6ded36e]{transition:opacity .25s ease-in}.fade-enter[data-v-a6ded36e],.fade-leave-to[data-v-a6ded36e]{opacity:0}.dialog[data-v-a6ded36e]{position:fixed;top:0;left:0;z-index:1050;width:100%;height:100%;overflow:hidden;outline:0}.icon[data-v-a6ded36e]{color:#0fdd42}.text-black a[data-v-a6ded36e]{color:#18191a}.icon[data-v-b6dbe422]{color:#0fdd42}.text-black a[data-v-b6dbe422]{color:#18191a}.app[data-v-2052a870]{min-height:100vh} \ No newline at end of file diff --git a/dist/index.html b/dist/index.html index d4ca8a38f..5c9166248 100644 --- a/dist/index.html +++ b/dist/index.html @@ -1,4 +1,4 @@ -evcc
\ No newline at end of file + };
\ No newline at end of file diff --git a/dist/js/chunk-vendors.7c84295f.js.map b/dist/js/chunk-vendors.7c84295f.js.map deleted file mode 100644 index 89fe7c8ae..000000000 --- a/dist/js/chunk-vendors.7c84295f.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./node_modules/axios/lib/core/Axios.js","webpack:///./node_modules/axios/lib/helpers/spread.js","webpack:///./node_modules/jquery/dist/jquery.js","webpack:///./node_modules/axios/lib/helpers/bind.js","webpack:///./node_modules/axios/lib/defaults.js","webpack:///./node_modules/vue-loader/lib/runtime/componentNormalizer.js","webpack:///./node_modules/vue/dist/vue.runtime.esm.js","webpack:///./node_modules/axios/lib/core/createError.js","webpack:///./node_modules/axios/lib/cancel/isCancel.js","webpack:///./node_modules/axios/lib/helpers/buildURL.js","webpack:///./node_modules/axios/lib/core/enhanceError.js","webpack:///./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack:///./node_modules/@fortawesome/free-solid-svg-icons/faBatteryFull.js","webpack:///./node_modules/node-libs-browser/mock/process.js","webpack:///./node_modules/axios/lib/core/settle.js","webpack:///./node_modules/bootstrap/dist/js/bootstrap.js","webpack:///./node_modules/axios/lib/core/mergeConfig.js","webpack:///./node_modules/axios/lib/core/dispatchRequest.js","webpack:///./node_modules/axios/lib/helpers/isAxiosError.js","webpack:///./node_modules/@fortawesome/free-solid-svg-icons/faTemperatureLow.js","webpack:///./node_modules/axios/lib/cancel/Cancel.js","webpack:///./node_modules/axios/lib/helpers/cookies.js","webpack:///./node_modules/@fortawesome/free-solid-svg-icons/faBatteryQuarter.js","webpack:///./node_modules/axios/lib/core/buildFullPath.js","webpack:///./node_modules/@fortawesome/free-solid-svg-icons/faBatteryEmpty.js","webpack:///./node_modules/@fortawesome/free-solid-svg-icons/faExclamationTriangle.js","webpack:///./node_modules/@fortawesome/free-solid-svg-icons/faChevronDown.js","webpack:///./node_modules/@fortawesome/free-solid-svg-icons/faBatteryHalf.js","webpack:///./node_modules/vue-router/dist/vue-router.esm.js","webpack:///./node_modules/axios/lib/cancel/CancelToken.js","webpack:///./node_modules/@fortawesome/free-solid-svg-icons/faArrowUp.js","webpack:///./node_modules/@fortawesome/free-solid-svg-icons/faChevronUp.js","webpack:///./node_modules/@fortawesome/free-solid-svg-icons/faArrowDown.js","webpack:///./node_modules/@fortawesome/vue-fontawesome/index.es.js","webpack:///./node_modules/@fortawesome/free-solid-svg-icons/faSun.js","webpack:///./node_modules/axios/lib/adapters/xhr.js","webpack:///./node_modules/axios/index.js","webpack:///./node_modules/@fortawesome/free-solid-svg-icons/faLeaf.js","webpack:///./node_modules/@fortawesome/free-solid-svg-icons/index.es.js","webpack:///./node_modules/axios/lib/helpers/parseHeaders.js","webpack:///./node_modules/axios/lib/core/transformData.js","webpack:///./node_modules/axios/lib/utils.js","webpack:///./node_modules/@fortawesome/free-solid-svg-icons/faBatteryThreeQuarters.js","webpack:///./node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/axios/lib/axios.js","webpack:///./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack:///./node_modules/path-browserify/index.js","webpack:///./node_modules/axios/lib/helpers/combineURLs.js","webpack:///./node_modules/@fortawesome/fontawesome-svg-core/index.es.js","webpack:///./node_modules/popper.js/dist/esm/popper.js","webpack:///./node_modules/@fortawesome/free-solid-svg-icons/faTemperatureHigh.js","webpack:///./node_modules/axios/lib/core/InterceptorManager.js","webpack:///./node_modules/@fortawesome/free-solid-svg-icons/faThermometerHalf.js"],"names":["utils","buildURL","InterceptorManager","dispatchRequest","mergeConfig","Axios","instanceConfig","this","defaults","interceptors","request","response","prototype","config","arguments","url","method","toLowerCase","chain","undefined","promise","Promise","resolve","forEach","interceptor","unshift","fulfilled","rejected","push","length","then","shift","getUri","params","paramsSerializer","replace","data","module","exports","callback","arr","apply","global","factory","document","w","Error","window","noGlobal","getProto","Object","getPrototypeOf","slice","flat","array","call","concat","indexOf","class2type","toString","hasOwn","hasOwnProperty","fnToString","ObjectFunctionString","support","isFunction","obj","nodeType","isWindow","preservedScriptAttributes","type","src","nonce","noModule","DOMEval","code","node","doc","i","val","script","createElement","text","getAttribute","setAttribute","head","appendChild","parentNode","removeChild","toType","version","jQuery","selector","context","fn","init","isArrayLike","jquery","constructor","toArray","get","num","pushStack","elems","ret","merge","prevObject","each","map","elem","first","eq","last","even","grep","_elem","odd","len","j","end","sort","splice","extend","options","name","copy","copyIsArray","clone","target","deep","isPlainObject","Array","isArray","expando","Math","random","isReady","error","msg","noop","proto","Ctor","isEmptyObject","globalEval","makeArray","results","inArray","second","invert","callbackInverse","matches","callbackExpect","arg","value","guid","Symbol","iterator","split","_i","Sizzle","Expr","getText","isXML","tokenize","compile","select","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","contains","Date","preferredDoc","dirruns","done","classCache","createCache","tokenCache","compilerCache","nonnativeSelectorCache","sortOrder","a","b","pop","pushNative","list","booleans","whitespace","identifier","attributes","pseudos","rwhitespace","RegExp","rtrim","rcomma","rcombinators","rdescend","rpseudo","ridentifier","matchExpr","rhtml","rinputs","rheader","rnative","rquickExpr","rsibling","runescape","funescape","escape","nonHex","high","String","fromCharCode","rcssescape","fcssescape","ch","asCodePoint","charCodeAt","unloadHandler","inDisabledFieldset","addCombinator","disabled","nodeName","dir","next","childNodes","e","els","seed","m","nid","match","groups","newSelector","newContext","ownerDocument","exec","getElementById","id","getElementsByTagName","getElementsByClassName","qsa","test","testContext","scope","toSelector","join","querySelectorAll","qsaError","removeAttribute","keys","cache","key","cacheLength","markFunction","assert","el","addHandle","attrs","handler","attrHandle","siblingCheck","cur","diff","sourceIndex","nextSibling","createInputPseudo","createButtonPseudo","createDisabledPseudo","isDisabled","createPositionalPseudo","argument","matchIndexes","namespace","namespaceURI","documentElement","hasCompare","subWindow","defaultView","top","addEventListener","attachEvent","className","createComment","getById","getElementsByName","filter","attrId","find","getAttributeNode","tag","tmp","input","innerHTML","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","expr","elements","attr","specified","sel","uniqueSort","duplicates","detectDuplicates","sortStable","textContent","firstChild","nodeValue","selectors","createPseudo","relative","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","check","result","what","_argument","simple","forward","ofType","_context","xml","uniqueCache","outerCache","nodeIndex","start","parent","useCache","lastChild","uniqueID","pseudo","args","setFilters","idx","matched","matcher","unmatched","lang","elemLang","hash","location","activeElement","hasFocus","href","tabIndex","checked","selected","selectedIndex","_matchIndexes","radio","checkbox","file","password","image","submit","reset","tokens","combinator","base","skip","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","multipleContexts","contexts","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","matcherFromGroupMatchers","elementMatchers","setMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","filters","parseOnly","soFar","preFilters","cached","token","compiled","_name","defaultValue","unique","isXMLDoc","escapeSelector","until","truncate","is","siblings","n","rneedsContext","needsContext","rsingleTag","winnow","qualifier","not","self","rootjQuery","root","parseHTML","ready","rparentsprev","guaranteedUnique","children","contents","prev","sibling","has","targets","l","closest","index","prevAll","add","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","content","reverse","rnothtmlwhite","createOptions","object","_","flag","Identity","v","Thrower","ex","adoptValue","reject","noValue","fail","Callbacks","firing","memory","fired","locked","queue","firingIndex","fire","once","stopOnFalse","remove","empty","disable","lock","fireWith","Deferred","func","tuples","state","always","deferred","pipe","fns","newDefer","tuple","returned","progress","notify","onFulfilled","onRejected","onProgress","maxDepth","depth","special","that","mightThrow","TypeError","notifyWith","resolveWith","process","exceptionHook","stackTrace","rejectWith","getStackHook","setTimeout","stateString","when","singleValue","remaining","resolveContexts","resolveValues","master","updateFunc","rerrorNames","stack","console","warn","message","readyException","readyList","completed","removeEventListener","catch","readyWait","wait","readyState","doScroll","access","chainable","emptyGet","raw","bulk","_key","rmsPrefix","rdashAlpha","fcamelCase","_all","letter","toUpperCase","camelCase","string","acceptData","owner","Data","uid","defineProperty","configurable","set","prop","hasData","dataPriv","dataUser","rbrace","rmultiDash","getData","JSON","parse","dataAttr","removeData","_data","_removeData","dequeue","startLength","hooks","_queueHooks","stop","setter","clearQueue","count","defer","pnum","source","rcssNum","cssExpand","isAttached","composed","getRootNode","isHiddenWithinTree","style","display","css","adjustCSS","valueParts","tween","adjusted","scale","maxIterations","currentValue","initial","unit","cssNumber","initialInUnit","defaultDisplayMap","getDefaultDisplay","body","showHide","show","values","hide","toggle","rcheckableType","rtagName","rscriptType","fragment","createDocumentFragment","div","checkClone","cloneNode","noCloneChecked","option","wrapMap","thead","col","tr","td","_default","getAll","setGlobalEval","refElements","tbody","tfoot","colgroup","caption","th","optgroup","buildFragment","scripts","selection","ignored","wrap","attached","nodes","htmlPrefilter","createTextNode","rkeyEvent","rmouseEvent","rtypenamespace","returnTrue","returnFalse","expectSync","safeActiveElement","err","on","types","one","origFn","event","off","leverageNative","notAsync","saved","isTrigger","delegateType","stopPropagation","stopImmediatePropagation","preventDefault","trigger","Event","handleObjIn","eventHandle","events","t","handleObj","handlers","namespaces","origType","elemData","create","handle","triggered","dispatch","bindType","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","nativeEvent","handlerQueue","fix","delegateTarget","preDispatch","isPropagationStopped","currentTarget","isImmediatePropagationStopped","rnamespace","postDispatch","matchedHandlers","matchedSelectors","button","addProp","hook","enumerable","originalEvent","writable","load","noBubble","click","beforeunload","returnValue","props","isDefaultPrevented","defaultPrevented","relatedTarget","timeStamp","now","isSimulated","altKey","bubbles","cancelable","changedTouches","ctrlKey","detail","eventPhase","metaKey","pageX","pageY","shiftKey","view","charCode","keyCode","buttons","clientX","clientY","offsetX","offsetY","pointerId","pointerType","screenX","screenY","targetTouches","toElement","touches","which","focus","blur","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","dest","pdataOld","udataOld","udataCur","fixInput","domManip","collection","hasScripts","iNoClone","valueIsFunction","html","_evalUrl","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","detach","append","prepend","insertBefore","before","after","replaceWith","replaceChild","appendTo","prependTo","insertAfter","replaceAll","original","insert","rnumnonpx","getStyles","opener","getComputedStyle","swap","old","rboxStyle","curCSS","computed","width","minWidth","maxWidth","getPropertyValue","pixelBoxStyles","addGetHookIf","conditionFn","hookFn","computeStyleTests","container","cssText","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","marginLeft","right","pixelBoxStylesVal","boxSizingReliableVal","position","scrollboxSizeVal","offsetWidth","measure","round","parseFloat","reliableTrDimensionsVal","backgroundClip","clearCloneStyle","boxSizingReliable","pixelPosition","reliableMarginLeft","scrollboxSize","reliableTrDimensions","table","trChild","trStyle","height","parseInt","cssPrefixes","emptyStyle","vendorProps","vendorPropName","capName","finalPropName","final","cssProps","rdisplayswap","rcustomProp","cssShow","visibility","cssNormalTransform","letterSpacing","fontWeight","setPositiveNumber","subtract","max","boxModelAdjustment","dimension","box","isBorderBox","styles","computedVal","extra","delta","ceil","getWidthOrHeight","boxSizingNeeded","valueIsBorderBox","offsetProp","getClientRects","Tween","easing","cssHooks","opacity","origName","isCustomProp","setProperty","isFinite","getBoundingClientRect","scrollboxSizeBuggy","left","margin","padding","border","prefix","suffix","expand","expanded","parts","propHooks","run","percent","eased","duration","pos","step","fx","scrollTop","scrollLeft","linear","p","swing","cos","PI","fxNow","inProgress","rfxtypes","rrun","schedule","hidden","requestAnimationFrame","interval","tick","createFxNow","genFx","includeWidth","createTween","animation","Animation","tweeners","defaultPrefilter","opts","oldfire","propTween","restoreDisplay","isBox","anim","dataShow","unqueued","overflow","overflowX","overflowY","propFilter","specialEasing","properties","stopped","prefilters","currentTime","startTime","tweens","originalProperties","originalOptions","gotoEnd","bind","complete","timer","tweener","prefilter","speed","opt","speeds","fadeTo","to","animate","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","slow","fast","delay","time","timeout","clearTimeout","checkOn","optSelected","radioValue","boolHook","removeAttr","nType","attrHooks","bool","attrNames","getter","lowercaseName","rfocusable","rclickable","stripAndCollapse","getClass","classesToArray","removeProp","propFix","tabindex","addClass","classes","curValue","clazz","finalValue","removeClass","toggleClass","stateVal","isValidValue","classNames","hasClass","rreturn","valHooks","optionSet","focusin","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","parentWindow","simulate","triggerHandler","attaches","rquery","parseXML","DOMParser","parseFromString","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","param","s","valueOrFunction","encodeURIComponent","serialize","serializeArray","r20","rhash","rantiCache","rheaders","rlocalProtocol","rnoContent","rprotocol","transports","allTypes","originAnchor","addToPrefiltersOrTransports","structure","dataTypeExpression","dataType","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","ajaxHandleResponses","responses","ct","finalDataType","firstDataType","mimeType","getResponseHeader","converters","ajaxConvert","isSuccess","conv2","current","conv","responseFields","dataFilter","throws","active","lastModified","etag","isLocal","protocol","processData","async","contentType","accepts","json","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","ajax","transport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","urlAnchor","fireGlobals","uncached","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getAllResponseHeaders","setRequestHeader","overrideMimeType","status","abort","statusText","finalText","crossDomain","host","hasContent","ifModified","headers","beforeSend","success","send","nativeStatusText","modified","getJSON","getScript","wrapAll","firstElementChild","wrapInner","htmlIsFunction","unwrap","visible","offsetHeight","xhr","XMLHttpRequest","xhrSuccessStatus","0","1223","xhrSupported","cors","errorCallback","open","username","xhrFields","onload","onerror","onabort","ontimeout","onreadystatechange","responseType","responseText","binary","scriptAttrs","charset","scriptCharset","evt","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","createHTMLDocument","implementation","keepScripts","parsed","animated","offset","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","calculatePosition","curElem","using","rect","win","pageYOffset","pageXOffset","offsetParent","parentOffset","scrollTo","Height","Width","defaultExtra","funcName","unbind","delegate","undelegate","hover","fnOver","fnOut","proxy","holdReady","hold","parseJSON","isNumeric","isNaN","trim","_jQuery","_$","$","noConflict","thisArg","normalizeHeaderName","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","isUndefined","getDefaultAdapter","adapter","transformRequest","isFormData","isArrayBuffer","isBuffer","isStream","isFile","isBlob","isArrayBufferView","buffer","isURLSearchParams","isObject","stringify","transformResponse","xsrfCookieName","xsrfHeaderName","maxContentLength","maxBodyLength","validateStatus","common","normalizeComponent","scriptExports","render","staticRenderFns","functionalTemplate","injectStyles","scopeId","moduleIdentifier","shadowMode","_compiled","functional","_scopeId","$vnode","ssrContext","__VUE_SSR_CONTEXT__","_registeredComponents","_ssrRegister","$root","$options","shadowRoot","_injectStyles","originalRender","h","existing","beforeCreate","emptyObject","freeze","isUndef","isDef","isTrue","isFalse","isPrimitive","_toString","isRegExp","isValidArrayIndex","floor","isPromise","toNumber","makeMap","str","expectsLowerCase","isReservedAttribute","item","hit","camelizeRE","camelize","c","capitalize","charAt","hyphenateRE","hyphenate","polyfillBind","ctx","boundFn","_length","nativeBind","Function","_from","toObject","res","no","identity","looseEqual","isObjectA","isObjectB","isArrayA","isArrayB","every","getTime","keysA","keysB","looseIndexOf","called","SSR_ATTR","ASSET_TYPES","LIFECYCLE_HOOKS","optionMergeStrategies","silent","productionTip","devtools","performance","errorHandler","warnHandler","ignoredElements","keyCodes","isReservedTag","isReservedAttr","isUnknownElement","getTagNamespace","parsePlatformTagName","mustUseProp","_lifecycleHooks","unicodeRegExp","isReserved","def","bailRE","parsePath","path","segments","_isServer","hasProto","inBrowser","inWeex","WXEnvironment","platform","weexPlatform","UA","navigator","userAgent","isIE","isIE9","isEdge","isIOS","isFF","nativeWatch","watch","supportsPassive","isServerRendering","env","VUE_ENV","__VUE_DEVTOOLS_GLOBAL_HOOK__","isNative","_Set","hasSymbol","Reflect","ownKeys","Set","clear","Dep","subs","addSub","sub","removeSub","depend","addDep","update","targetStack","pushTarget","popTarget","VNode","elm","componentOptions","asyncFactory","ns","fnContext","fnOptions","fnScopeId","componentInstance","isStatic","isRootInsert","isComment","isCloned","isOnce","asyncMeta","isAsyncPlaceholder","prototypeAccessors","child","defineProperties","createEmptyVNode","createTextVNode","cloneVNode","vnode","cloned","arrayProto","arrayMethods","methodsToPatch","inserted","ob","__ob__","observeArray","dep","arrayKeys","getOwnPropertyNames","shouldObserve","toggleObserving","Observer","vmCount","protoAugment","copyAugment","walk","__proto__","observe","asRootData","isExtensible","_isVue","defineReactive$$1","customSetter","shallow","property","getOwnPropertyDescriptor","childOb","dependArray","newVal","del","items","strats","mergeData","from","toVal","fromVal","mergeDataOrFn","parentVal","childVal","vm","instanceData","defaultData","mergeHook","dedupeHooks","mergeAssets","key$1","methods","inject","provide","defaultStrat","normalizeProps","normalizeInject","normalized","normalizeDirectives","dirs","directives","def$$1","mergeOptions","_base","extends","mixins","mergeField","strat","resolveAsset","warnMissing","assets","camelizedId","PascalCaseId","validateProp","propOptions","propsData","absent","booleanIndex","getTypeIndex","Boolean","stringIndex","getPropDefaultValue","prevShouldObserve","default","_props","getType","isSameType","expectedTypes","handleError","info","$parent","errorCaptured","capture","globalHandleError","invokeWithErrorHandling","_handled","logError","timerFunc","isUsingMicroTask","callbacks","pending","flushCallbacks","copies","MutationObserver","setImmediate","counter","observer","textNode","characterData","nextTick","cb","_resolve","seenObjects","traverse","_traverse","seen","isA","isFrozen","depId","normalizeEvent","passive","once$$1","createFnInvoker","invoker","arguments$1","updateListeners","oldOn","remove$$1","createOnceHandler","mergeVNodeHook","hookKey","oldHook","wrappedHook","merged","extractPropsFromVNodeData","checkProp","preserve","simpleNormalizeChildren","normalizeChildren","normalizeArrayChildren","isTextNode","nestedIndex","lastIndex","_isVList","initProvide","_provided","initInjections","resolveInject","provideKey","provideDefault","resolveSlots","slots","slot","name$1","isWhitespace","normalizeScopedSlots","normalSlots","prevSlots","hasNormalSlots","isStable","$stable","$key","_normalized","$hasNormal","normalizeScopedSlot","key$2","proxyNormalSlot","renderList","renderSlot","fallback","bindObject","scopedSlotFn","$scopedSlots","$slots","$createElement","resolveFilter","isKeyNotMatch","expect","actual","checkKeyCodes","eventKeyCode","builtInKeyCode","eventKeyName","builtInKeyName","mappedKeyCode","bindObjectProps","asProp","isSync","loop","domProps","camelizedKey","hyphenatedKey","$event","renderStatic","isInFor","_staticTrees","tree","_renderProxy","markStatic","markOnce","markStaticNode","bindObjectListeners","ours","resolveScopedSlots","hasDynamicKeys","contentHashKey","bindDynamicKeys","baseObj","prependModifier","symbol","installRenderHelpers","_o","_n","_s","_l","_t","_q","_m","_f","_k","_b","_v","_e","_u","_g","_d","_p","FunctionalRenderContext","contextVm","this$1","_original","isCompiled","needNormalization","listeners","injections","scopedSlots","_c","d","createFunctionalComponent","mergeProps","renderContext","cloneAndMarkFunctionalResult","vnodes","componentVNodeHooks","hydrating","_isDestroyed","keepAlive","mountedNode","prepatch","createComponentInstanceForVnode","activeInstance","$mount","oldVnode","updateChildComponent","_isMounted","callHook","queueActivatedComponent","activateChildComponent","destroy","deactivateChildComponent","$destroy","hooksToMerge","createComponent","baseCtor","cid","resolveAsyncComponent","createAsyncPlaceholder","resolveConstructorOptions","model","transformModel","nativeOn","abstract","installComponentHooks","_isComponent","_parentVnode","inlineTemplate","toMerge","_merged","mergeHook$1","f1","f2","SIMPLE_NORMALIZE","ALWAYS_NORMALIZE","normalizationType","alwaysNormalize","_createElement","pre","applyNS","registerDeepBindings","force","class","initRender","_vnode","parentVnode","_renderChildren","parentData","_parentListeners","currentRenderingInstance","renderMixin","Vue","$nextTick","_render","ref","ensureCtor","comp","__esModule","toStringTag","errorComp","resolved","owners","loading","loadingComp","sync","timerLoading","timerTimeout","$on","forceRender","renderCompleted","$forceUpdate","reason","component","getFirstComponentChild","initEvents","_events","_hasHookEvent","updateComponentListeners","remove$1","$off","_target","onceHandler","oldListeners","eventsMixin","hookRE","$once","i$1","cbs","$emit","setActiveInstance","prevActiveInstance","initLifecycle","$children","$refs","_watcher","_inactive","_directInactive","_isBeingDestroyed","lifecycleMixin","_update","prevEl","$el","prevVnode","restoreActiveInstance","__patch__","__vue__","_watchers","mountComponent","updateComponent","Watcher","renderChildren","newScopedSlots","oldScopedSlots","hasDynamicScopedSlot","needsForceUpdate","$attrs","$listeners","propKeys","_propKeys","isInInactiveTree","direct","activatedChildren","waiting","flushing","resetSchedulerState","currentFlushTimestamp","getNow","createEvent","flushSchedulerQueue","watcher","activatedQueue","updatedQueue","callActivatedHooks","callUpdatedHooks","emit","queueWatcher","uid$2","expOrFn","isRenderWatcher","user","lazy","dirty","deps","newDeps","depIds","newDepIds","expression","cleanupDeps","oldValue","evaluate","sharedPropertyDefinition","sourceKey","initState","initProps","initMethods","initData","initComputed","initWatch","propsOptions","isRoot","computedWatcherOptions","watchers","_computedWatchers","isSSR","userDef","defineComputed","shouldCache","createComputedGetter","createGetterInvoker","createWatcher","$watch","stateMixin","dataDef","propsDef","$set","$delete","immediate","uid$3","initMixin","_init","_uid","initInternalComponent","_self","vnodeComponentOptions","_componentTag","super","superOptions","cachedSuperOptions","modifiedOptions","resolveModifiedOptions","extendOptions","components","latest","sealed","sealedOptions","initUse","use","plugin","installedPlugins","_installedPlugins","install","initMixin$1","mixin","initExtend","Super","SuperId","cachedCtors","_Ctor","Sub","initProps$1","initComputed$1","Comp","initAssetRegisters","definition","getComponentName","pruneCache","keepAliveInstance","cachedNode","pruneCacheEntry","cached$$1","patternTypes","KeepAlive","include","exclude","Number","created","destroyed","mounted","ref$1","builtInComponents","initGlobalAPI","configDef","util","defineReactive","delete","observable","acceptValue","isEnumeratedAttr","isValidContentEditableValue","convertEnumeratedValue","isFalsyAttrValue","isBooleanAttr","xlinkNS","isXlink","getXlinkProp","genClassForVnode","childNode","mergeClassData","renderClass","staticClass","dynamicClass","stringifyClass","stringifyArray","stringifyObject","stringified","namespaceMap","svg","math","isHTMLTag","isSVG","unknownElementCache","HTMLUnknownElement","HTMLElement","isTextInputType","query","querySelector","createElement$1","tagName","multiple","createElementNS","newNode","referenceNode","setTextContent","setStyleScope","nodeOps","registerRef","isRemoval","refs","refInFor","emptyNode","sameVnode","sameInputType","typeA","typeB","createKeyToOldIdx","beginIdx","endIdx","createPatchFunction","backend","modules","emptyNodeAt","createRmCb","childElm","removeNode","createElm","insertedVnodeQueue","parentElm","refElm","nested","ownerArray","setScope","createChildren","invokeCreateHooks","isReactivated","initComponent","reactivateComponent","pendingInsert","isPatchable","innerNode","transition","activate","ref$$1","ancestor","addVnodes","startIdx","invokeDestroyHook","removeVnodes","removeAndInvokeRemoveHook","rm","updateChildren","oldCh","newCh","removeOnly","oldKeyToIdx","idxInOld","vnodeToMove","oldStartIdx","newStartIdx","oldEndIdx","oldStartVnode","oldEndVnode","newEndIdx","newStartVnode","newEndVnode","canMove","patchVnode","findIdxInOld","hydrate","postpatch","invokeInsertHook","isRenderedModule","inVPre","hasChildNodes","childrenMatch","fullInvoke","isInitialPatch","isRealElement","hasAttribute","oldElm","_leaveCb","patchable","i$2","updateDirectives","oldDir","isCreate","isDestroy","oldDirs","normalizeDirectives$1","newDirs","dirsWithInsert","dirsWithPostpatch","oldArg","callHook$1","componentUpdated","callInsert","emptyModifiers","modifiers","getRawDirName","rawName","baseModules","updateAttrs","inheritAttrs","oldAttrs","setAttr","removeAttributeNS","baseSetAttr","setAttributeNS","__ieph","blocker","updateClass","oldData","cls","transitionClass","_transitionClasses","_prevClass","target$1","klass","RANGE_TOKEN","CHECKBOX_RADIO_TOKEN","normalizeEvents","change","createOnceHandler$1","remove$2","useMicrotaskFix","add$1","attachedTimestamp","_wrapper","updateDOMListeners","svgContainer","updateDOMProps","oldProps","_value","strCur","shouldUpdateValue","checkVal","composing","isNotInFocusAndDirty","isDirtyWithModifiers","notInFocus","_vModifiers","number","parseStyleText","listDelimiter","propertyDelimiter","normalizeStyleData","normalizeStyleBinding","staticStyle","bindingStyle","getStyle","checkChild","styleData","cssVarRE","importantRE","setProp","normalizedName","normalize","vendorNames","updateStyle","oldStaticStyle","oldStyleBinding","normalizedStyle","oldStyle","newStyle","whitespaceRE","classList","tar","resolveTransition","autoCssTransition","enterClass","enterToClass","enterActiveClass","leaveClass","leaveToClass","leaveActiveClass","hasTransition","TRANSITION","ANIMATION","transitionProp","transitionEndEvent","animationProp","animationEndEvent","ontransitionend","onwebkittransitionend","onanimationend","onwebkitanimationend","raf","nextFrame","addTransitionClass","transitionClasses","removeTransitionClass","whenTransitionEnds","expectedType","getTransitionInfo","propCount","ended","onEnd","transformRE","transitionDelays","transitionDurations","transitionTimeout","getTimeout","animationDelays","animationDurations","animationTimeout","hasTransform","delays","durations","toMs","enter","toggleDisplay","cancelled","_enterCb","appearClass","appearToClass","appearActiveClass","beforeEnter","afterEnter","enterCancelled","beforeAppear","appear","afterAppear","appearCancelled","transitionNode","isAppear","startClass","activeClass","toClass","beforeEnterHook","enterHook","afterEnterHook","enterCancelledHook","explicitEnterDuration","expectsCSS","userWantsControl","getHookArgumentsLength","pendingNode","_pending","isValidDuration","leave","beforeLeave","afterLeave","leaveCancelled","delayLeave","explicitLeaveDuration","performLeave","invokerFns","_enter","platformModules","patch","vmodel","directive","binding","_vOptions","setSelected","getValue","onCompositionStart","onCompositionEnd","prevOptions","curOptions","some","o","needReset","hasNoMatchingOption","actuallySetSelected","isMultiple","initEvent","dispatchEvent","locateNode","transition$$1","originalDisplay","__vOriginalDisplay","platformDirectives","transitionProps","mode","getRealChild","compOptions","extractTransitionData","placeholder","rawChild","hasParentTransition","isSameChild","oldChild","isNotTextNode","isVShowDirective","Transition","_leaving","oldRawChild","delayedLeave","moveClass","TransitionGroup","beforeMount","kept","prevChildren","rawChildren","transitionData","removed","c$1","updated","hasMove","callPendingCbs","recordPosition","applyTranslation","_reflow","moved","transform","WebkitTransform","transitionDuration","_moveCb","propertyName","_hasMove","newPos","oldPos","dx","dy","platformComponents","enhanceError","__CANCEL__","encode","serializedParams","isDate","toISOString","hashmarkIndex","isAxiosError","toJSON","description","fileName","lineNumber","columnNumber","isStandardBrowserEnv","originURL","msie","urlParsingNode","resolveURL","search","hostname","port","pathname","requestURL","isString","iconName","ligatures","unicode","svgPathData","icon","faBatteryFull","arch","execPath","title","pid","browser","argv","cwd","chdir","exit","kill","umask","dlopen","uptime","memoryUsage","uvCounters","features","createError","Popper","_interopDefaultLegacy","$__default","Popper__default","_defineProperties","descriptor","_createClass","Constructor","protoProps","staticProps","_extends","assign","_inheritsLoose","subClass","superClass","TRANSITION_END","MAX_UID","MILLISECONDS_MULTIPLIER","getSpecialTransitionEndEvent","transitionEndEmulator","_this","Util","triggerTransitionEnd","setTransitionEndSupport","emulateTransitionEnd","getUID","getSelectorFromElement","element","hrefAttr","getTransitionDurationFromElement","transitionDelay","floatTransitionDuration","floatTransitionDelay","reflow","supportsTransitionEnd","isElement","typeCheckConfig","componentName","configTypes","valueType","findShadowRoot","attachShadow","ShadowRoot","jQueryDetection","minMajor","ltMajor","minMinor","minPatch","maxMajor","NAME","VERSION","DATA_KEY","EVENT_KEY","DATA_API_KEY","JQUERY_NO_CONFLICT","SELECTOR_DISMISS","EVENT_CLOSE","EVENT_CLOSED","EVENT_CLICK_DATA_API","CLASS_NAME_ALERT","CLASS_NAME_FADE","CLASS_NAME_SHOW","Alert","_element","_proto","close","rootElement","_getRootElement","customEvent","_triggerCloseEvent","_removeElement","dispose","closeEvent","_destroyElement","_jQueryInterface","$element","_handleDismiss","alertInstance","NAME$1","VERSION$1","DATA_KEY$1","EVENT_KEY$1","DATA_API_KEY$1","JQUERY_NO_CONFLICT$1","CLASS_NAME_ACTIVE","CLASS_NAME_BUTTON","CLASS_NAME_FOCUS","SELECTOR_DATA_TOGGLE_CARROT","SELECTOR_DATA_TOGGLES","SELECTOR_DATA_TOGGLE","SELECTOR_DATA_TOGGLES_BUTTONS","SELECTOR_INPUT","SELECTOR_ACTIVE","SELECTOR_BUTTON","EVENT_CLICK_DATA_API$1","EVENT_FOCUS_BLUR_DATA_API","EVENT_LOAD_DATA_API","Button","shouldAvoidTriggerChange","triggerChangeEvent","addAriaPressed","avoidTriggerChange","initialButton","inputBtn","_len","_button","NAME$2","VERSION$2","DATA_KEY$2","EVENT_KEY$2","DATA_API_KEY$2","JQUERY_NO_CONFLICT$2","ARROW_LEFT_KEYCODE","ARROW_RIGHT_KEYCODE","TOUCHEVENT_COMPAT_WAIT","SWIPE_THRESHOLD","Default","keyboard","slide","pause","touch","DefaultType","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$2","CLASS_NAME_CAROUSEL","CLASS_NAME_ACTIVE$1","CLASS_NAME_SLIDE","CLASS_NAME_RIGHT","CLASS_NAME_LEFT","CLASS_NAME_NEXT","CLASS_NAME_PREV","CLASS_NAME_POINTER_EVENT","SELECTOR_ACTIVE$1","SELECTOR_ACTIVE_ITEM","SELECTOR_ITEM","SELECTOR_ITEM_IMG","SELECTOR_NEXT_PREV","SELECTOR_INDICATORS","SELECTOR_DATA_SLIDE","SELECTOR_DATA_RIDE","PointerType","TOUCH","PEN","Carousel","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","touchStartX","touchDeltaX","_config","_getConfig","_indicatorsElement","_touchSupported","maxTouchPoints","_pointerEvent","PointerEvent","MSPointerEvent","_addEventListeners","_slide","nextWhenVisible","cycle","clearInterval","setInterval","visibilityState","activeIndex","_getItemIndex","direction","_handleSwipe","absDeltax","abs","_this2","_keydown","_addTouchEventListeners","_this3","move","_getItemByDirection","isNextDirection","isPrevDirection","lastItemIndex","isGoingToWrap","itemIndex","_triggerSlideEvent","eventDirectionName","targetIndex","fromIndex","slideEvent","_setActiveIndicatorElement","indicators","nextIndicator","directionalClassName","orderClassName","_this4","activeElementIndex","nextElement","nextElementIndex","isCycling","slidEvent","nextElementInterval","defaultInterval","action","ride","_dataApiClickHandler","slideIndex","carousels","$carousel","NAME$3","VERSION$3","DATA_KEY$3","EVENT_KEY$3","DATA_API_KEY$3","JQUERY_NO_CONFLICT$3","Default$1","DefaultType$1","EVENT_SHOW","EVENT_SHOWN","EVENT_HIDE","EVENT_HIDDEN","EVENT_CLICK_DATA_API$3","CLASS_NAME_SHOW$1","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_COLLAPSED","DIMENSION_WIDTH","DIMENSION_HEIGHT","SELECTOR_ACTIVES","SELECTOR_DATA_TOGGLE$1","Collapse","_isTransitioning","_triggerArray","toggleList","filterElement","foundElem","_selector","_parent","_getParent","_addAriaAndCollapsedClass","actives","activesData","startEvent","_getDimension","setTransitioning","capitalizedDimension","scrollSize","triggerArrayLength","$elem","isTransitioning","hasWidth","_getTargetFromElement","triggerArray","isOpen","$trigger","$target","NAME$4","VERSION$4","DATA_KEY$4","EVENT_KEY$4","DATA_API_KEY$4","JQUERY_NO_CONFLICT$4","ESCAPE_KEYCODE","SPACE_KEYCODE","TAB_KEYCODE","ARROW_UP_KEYCODE","ARROW_DOWN_KEYCODE","RIGHT_MOUSE_BUTTON_WHICH","REGEXP_KEYDOWN","EVENT_HIDE$1","EVENT_HIDDEN$1","EVENT_SHOW$1","EVENT_SHOWN$1","EVENT_CLICK","EVENT_CLICK_DATA_API$4","EVENT_KEYDOWN_DATA_API","EVENT_KEYUP_DATA_API","CLASS_NAME_DISABLED","CLASS_NAME_SHOW$2","CLASS_NAME_DROPUP","CLASS_NAME_DROPRIGHT","CLASS_NAME_DROPLEFT","CLASS_NAME_MENURIGHT","CLASS_NAME_POSITION_STATIC","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$2","flip","boundary","reference","popperConfig","DefaultType$2","Dropdown","_popper","_menu","_getMenuElement","_inNavbar","_detectNavbar","isActive","_clearMenus","usePopper","showEvent","_getParentFromElement","referenceElement","_getPopperConfig","hideEvent","scheduleUpdate","_getPlacement","$parentDropdown","placement","_getOffset","offsets","enabled","preventOverflow","boundariesElement","applyStyle","toggles","clickEvent","dropdownMenu","_dataApiKeydownHandler","NAME$5","VERSION$5","DATA_KEY$5","EVENT_KEY$5","DATA_API_KEY$5","JQUERY_NO_CONFLICT$5","ESCAPE_KEYCODE$1","Default$3","backdrop","DefaultType$3","EVENT_HIDE$2","EVENT_HIDE_PREVENTED","EVENT_HIDDEN$2","EVENT_SHOW$2","EVENT_SHOWN$2","EVENT_FOCUSIN","EVENT_RESIZE","EVENT_CLICK_DISMISS","EVENT_KEYDOWN_DISMISS","EVENT_MOUSEUP_DISMISS","EVENT_MOUSEDOWN_DISMISS","EVENT_CLICK_DATA_API$5","CLASS_NAME_SCROLLABLE","CLASS_NAME_SCROLLBAR_MEASURER","CLASS_NAME_BACKDROP","CLASS_NAME_OPEN","CLASS_NAME_FADE$1","CLASS_NAME_SHOW$3","CLASS_NAME_STATIC","SELECTOR_DIALOG","SELECTOR_MODAL_BODY","SELECTOR_DATA_TOGGLE$3","SELECTOR_DATA_DISMISS","SELECTOR_FIXED_CONTENT","SELECTOR_STICKY_CONTENT","Modal","_dialog","_backdrop","_isShown","_isBodyOverflowing","_ignoreBackdropClick","_scrollbarWidth","_checkScrollbar","_setScrollbar","_adjustDialog","_setEscapeEvent","_setResizeEvent","_showBackdrop","_showElement","_hideModal","htmlElement","handleUpdate","_triggerBackdropTransition","hideEventPrevented","isModalOverflowing","scrollHeight","clientHeight","modalTransitionDuration","modalBody","Node","ELEMENT_NODE","_enforceFocus","shownEvent","transitionComplete","_this5","_this6","_this7","_this8","_resetAdjustments","_resetScrollbar","_removeBackdrop","_this9","backdropTransitionDuration","callbackRemove","_backdropTransitionDuration","paddingLeft","paddingRight","innerWidth","_getScrollbarWidth","_this10","fixedContent","stickyContent","actualPadding","calculatedPadding","actualMargin","marginRight","calculatedMargin","scrollDiv","scrollbarWidth","clientWidth","_this11","uriAttrs","ARIA_ATTRIBUTE_PATTERN","DefaultWhitelist","area","br","em","hr","h1","h2","h3","h4","h5","h6","img","li","ol","small","span","sup","strong","u","ul","SAFE_URL_PATTERN","DATA_URL_PATTERN","allowedAttribute","allowedAttributeList","attrName","regExp","attrRegex","sanitizeHtml","unsafeHtml","whiteList","sanitizeFn","domParser","createdDocument","whitelistKeys","_loop","elName","attributeList","whitelistedAttributes","NAME$6","VERSION$6","DATA_KEY$6","EVENT_KEY$6","JQUERY_NO_CONFLICT$6","CLASS_PREFIX","BSCLS_PREFIX_REGEX","DISALLOWED_ATTRIBUTES","DefaultType$4","template","fallbackPlacement","sanitize","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","Default$4","HOVER_STATE_SHOW","HOVER_STATE_OUT","HIDE","HIDDEN","SHOW","SHOWN","INSERTED","CLICK","FOCUSIN","FOCUSOUT","MOUSEENTER","MOUSELEAVE","CLASS_NAME_FADE$2","CLASS_NAME_SHOW$4","SELECTOR_TOOLTIP_INNER","SELECTOR_ARROW","TRIGGER_HOVER","TRIGGER_FOCUS","TRIGGER_CLICK","TRIGGER_MANUAL","Tooltip","_isEnabled","_timeout","_hoverState","_activeTrigger","tip","_setListeners","enable","toggleEnabled","dataKey","_getDelegateConfig","_isWithActiveTrigger","_leave","getTipElement","_hideModalHandler","isWithContent","isInTheDom","tipId","setContent","attachment","_getAttachment","addAttachmentClass","_getContainer","_fixTransition","prevHoverState","_cleanTipClass","getTitle","setElementContent","defaultBsConfig","behavior","arrow","onCreate","originalPlacement","_handlePopperPlacementChange","onUpdate","triggers","eventIn","eventOut","_fixTitle","titleType","dataAttributes","$tip","tabClass","popperData","instance","popper","initConfigAnimation","NAME$7","VERSION$7","DATA_KEY$7","EVENT_KEY$7","JQUERY_NO_CONFLICT$7","CLASS_PREFIX$1","BSCLS_PREFIX_REGEX$1","Default$5","DefaultType$5","CLASS_NAME_FADE$3","CLASS_NAME_SHOW$5","SELECTOR_TITLE","SELECTOR_CONTENT","Event$1","Popover","_Tooltip","_getContent","NAME$8","VERSION$8","DATA_KEY$8","EVENT_KEY$8","DATA_API_KEY$6","JQUERY_NO_CONFLICT$8","Default$6","DefaultType$6","EVENT_ACTIVATE","EVENT_SCROLL","EVENT_LOAD_DATA_API$2","CLASS_NAME_DROPDOWN_ITEM","CLASS_NAME_ACTIVE$2","SELECTOR_DATA_SPY","SELECTOR_NAV_LIST_GROUP","SELECTOR_NAV_LINKS","SELECTOR_NAV_ITEMS","SELECTOR_LIST_ITEMS","SELECTOR_DROPDOWN","SELECTOR_DROPDOWN_ITEMS","SELECTOR_DROPDOWN_TOGGLE","METHOD_OFFSET","METHOD_POSITION","ScrollSpy","_scrollElement","_offsets","_targets","_activeTarget","_scrollHeight","_process","refresh","autoMethod","offsetMethod","offsetBase","_getScrollTop","_getScrollHeight","targetSelector","targetBCR","_getOffsetHeight","innerHeight","maxScroll","_activate","_clear","isActiveTarget","queries","$link","scrollSpys","scrollSpysLength","$spy","NAME$9","VERSION$9","DATA_KEY$9","EVENT_KEY$9","DATA_API_KEY$7","JQUERY_NO_CONFLICT$9","EVENT_HIDE$3","EVENT_HIDDEN$3","EVENT_SHOW$3","EVENT_SHOWN$3","EVENT_CLICK_DATA_API$6","CLASS_NAME_DROPDOWN_MENU","CLASS_NAME_ACTIVE$3","CLASS_NAME_DISABLED$1","CLASS_NAME_FADE$4","CLASS_NAME_SHOW$6","SELECTOR_DROPDOWN$1","SELECTOR_NAV_LIST_GROUP$1","SELECTOR_ACTIVE$2","SELECTOR_ACTIVE_UL","SELECTOR_DATA_TOGGLE$4","SELECTOR_DROPDOWN_TOGGLE$1","SELECTOR_DROPDOWN_ACTIVE_CHILD","Tab","previous","listElement","itemSelector","hiddenEvent","activeElements","_transitionComplete","dropdownChild","dropdownElement","dropdownToggleList","$this","NAME$a","VERSION$a","DATA_KEY$a","EVENT_KEY$a","JQUERY_NO_CONFLICT$a","EVENT_CLICK_DISMISS$1","EVENT_HIDE$4","EVENT_HIDDEN$4","EVENT_SHOW$4","EVENT_SHOWN$4","CLASS_NAME_FADE$5","CLASS_NAME_HIDE","CLASS_NAME_SHOW$7","CLASS_NAME_SHOWING","DefaultType$7","autohide","Default$7","SELECTOR_DATA_DISMISS$1","Toast","_clearTimeout","_close","Scrollspy","config1","config2","valueFromConfig2Keys","mergeDeepPropertiesKeys","defaultToConfig2Keys","directMergeKeys","getMergedValue","mergeDeepProperties","axiosKeys","otherKeys","transformData","isCancel","throwIfCancellationRequested","cancelToken","throwIfRequested","payload","faTemperatureLow","Cancel","write","expires","domain","secure","cookie","isNumber","toGMTString","read","decodeURIComponent","faBatteryQuarter","isAbsoluteURL","combineURLs","baseURL","requestedURL","faBatteryEmpty","faExclamationTriangle","faChevronDown","faBatteryHalf","condition","encodeReserveRE","encodeReserveReplacer","commaRE","decode","resolveQuery","extraQuery","_parseQuery","parsedQuery","parseQuery","castQueryParamValue","stringifyQuery","val2","x","trailingSlashRE","createRoute","record","redirectedFrom","router","route","meta","fullPath","getFullPath","formatMatch","START","_stringifyQuery","isSameRoute","isObjectEqual","aKeys","bKeys","aVal","bKey","bVal","isIncludedRoute","queryIncludes","handleRouteEntered","instances","enteredCbs","View","routerView","$route","_routerViewCache","inactive","_routerRoot","vnodeData","routerViewDepth","cachedData","cachedComponent","configProps","fillPropsinData","registerRouteInstance","propsToPass","resolveProps","resolvePath","firstChar","segment","hashIndex","queryIndex","cleanPath","isarray","pathToRegexp_1","pathToRegexp","parse_1","compile_1","tokensToFunction_1","tokensToFunction","tokensToRegExp_1","tokensToRegExp","PATH_REGEXP","defaultDelimiter","delimiter","escaped","group","modifier","asterisk","partial","repeat","optional","escapeGroup","escapeString","substr","encodeURIComponentPretty","encodeURI","encodeAsterisk","flags","pretty","attachKeys","re","sensitive","regexpToRegexp","arrayToRegexp","regexp","stringToRegexp","strict","endsWithDelimiter","regexpCompileCache","fillParams","routeMsg","filler","pathMatch","normalizeLocation","params$1","rawPath","parsedPath","basePath","_Vue","toTypes","eventTypes","Link","required","exact","exactActiveClass","ariaCurrentValue","$router","globalActiveClass","linkActiveClass","globalExactActiveClass","linkExactActiveClass","activeClassFallback","exactActiveClassFallback","compareTarget","guardEvent","scopedSlot","navigate","isExactActive","findAnchor","aData","handler$1","event$1","aAttrs","installed","registerInstance","callVal","_router","history","_route","beforeRouteEnter","beforeRouteLeave","beforeRouteUpdate","createRouteMap","routes","oldPathList","oldPathMap","oldNameMap","pathList","pathMap","nameMap","addRouteRecord","matchAs","pathToRegexpOptions","normalizedPath","normalizePath","caseSensitive","regex","compileRouteRegex","redirect","childMatchAs","alias","aliases","aliasRoute","createMatcher","addRoutes","currentRoute","_createRoute","paramNames","record$1","matchRoute","originalRedirect","resolveRecordPath","resolvedPath","aliasedPath","aliasedMatch","aliasedRecord","Time","genStateKey","toFixed","getStateKey","setStateKey","positionStore","setupScroll","scrollRestoration","protocolAndPath","absolutePath","stateCopy","replaceState","handlePopState","handleScroll","isPop","app","scrollBehavior","getScrollPosition","shouldScroll","scrollToPosition","saveScrollPosition","y","getElementPosition","docEl","docRect","elRect","isValidPosition","normalizePosition","normalizeOffset","hashStartsWithNumberRE","supportsPushState","ua","pushState","runQueue","NavigationFailureType","redirected","aborted","duplicated","createNavigationRedirectedError","createRouterError","stringifyRoute","createNavigationDuplicatedError","createNavigationCancelledError","createNavigationAbortedError","_isRouter","propertiesToLog","isError","isNavigationFailure","errorType","resolveAsyncComponents","hasAsync","flatMapComponents","resolvedDef","isESModule","flatten","History","normalizeBase","readyCbs","readyErrorCbs","errorCbs","baseEl","resolveQueue","activated","deactivated","extractGuards","records","guards","guard","extractGuard","extractLeaveGuards","bindGuard","extractUpdateHooks","extractEnterGuards","bindEnterGuard","listen","onReady","errorCb","onError","transitionTo","onComplete","onAbort","confirmTransition","updateRoute","ensureURL","afterHooks","lastRouteIndex","lastCurrentIndex","beforeHooks","enterGuards","resolveHooks","setupListeners","cleanupListener","HTML5History","_startLocation","getLocation","expectScroll","supportsScroll","handleRoutingEvent","go","fromRoute","getCurrentLocation","HashHistory","checkFallback","ensureSlash","getHash","replaceHash","eventType","pushHash","getUrl","AbstractHistory","VueRouter","apps","registerHook","createHref","handleInitialScroll","routeOrError","beforeEach","beforeResolve","afterEach","back","getMatchedComponents","normalizedTo","CancelToken","executor","resolvePromise","cancel","faArrowUp","faChevronUp","faArrowDown","commonjsGlobal","createCommonjsModule","humps","_processKeys","convert","_isObject","_isDate","_isRegExp","_isBoolean","_isFunction","output","_isArray","separateWords","separator","_isNumerical","chr","pascalize","camelized","decamelize","_processor","depascalize","camelizeKeys","decamelizeKeys","pascalizeKeys","depascalizeKeys","_typeof","objectWithoutProperties","toConsumableArray","arr2","styleToObject","reduce","acc","pair","classToObject","combineClassObjects","objs","_data$class","dClass","_data$style","dStyle","_data$attrs","dAttrs","remainingData","PRODUCTION","log","_console","objectWithKey","_classes","spin","pulse","fixedWidth","listItem","inverse","size","rotation","pull","swapOpacity","addStaticClass","normalizeIconArgs","icon$$1","FontAwesomeIcon","validator","mask","iconArgs","maskArgs","renderedIcon","convertCurry","faSun","settle","cookies","buildFullPath","parseHeaders","isURLSameOrigin","requestData","auth","unescape","Authorization","btoa","responseURL","responseData","timeoutErrorMessage","xsrfValue","withCredentials","onDownloadProgress","onUploadProgress","upload","faLeaf","faClock","ignoreDuplicateOf","line","FormData","ArrayBuffer","isView","URLSearchParams","product","assignValue","stripBOM","faBatteryThreeQuarters","g","createInstance","defaultConfig","axios","all","promises","spread","normalizeArray","allowAboveRoot","up","basename","matchedSlash","xs","f","resolvedAbsolute","isAbsolute","trailingSlash","paths","fromParts","toParts","min","samePartsLength","outputParts","sep","dirname","hasRoot","ext","extname","startDot","startPart","preDotState","relativeURL","_classCallCheck","_defineProperty","_objectSpread","getOwnPropertySymbols","sym","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_nonIterableRest","_toConsumableArray","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","iter","_arr","_WINDOW","_DOCUMENT","_PERFORMANCE","mark","_ref","_ref$userAgent","WINDOW","DOCUMENT","PERFORMANCE","IS_DOM","IS_IE","NAMESPACE_IDENTIFIER","UNITS_IN_GRID","DEFAULT_FAMILY_PREFIX","DEFAULT_REPLACEMENT_CLASS","DATA_FA_I2SVG","oneToTen","oneToTwenty","DUOTONE_CLASSES","GROUP","SWAP_OPACITY","PRIMARY","SECONDARY","FontAwesomeConfig","getAttrConfig","coerce","_ref2","familyPrefix","replacementClass","autoReplaceSvg","autoAddCss","autoA11y","searchPseudoElements","observeMutations","mutateApproach","keepOriginalSource","measurePerformance","showMissingIcons","shims","functions","listener","loaded","asyncTimer","PENDING","SETTLED","FULFILLED","REJECTED","NOOP","isNode","asyncSetTimer","asyncQueue","asyncFlush","asyncCall","invokeResolver","resolver","rejectPromise","invokeCallback","subscriber","settled","_state","handleThenable","fulfill","publishFulfillment","publishRejection","publish","_then","notifyRejectionHandled","P","onFulfillment","onRejection","race","meaninglessTransform","rotate","flipX","flipY","insertCss","headChildren","beforeChild","idPool","nextUniqueId","htmlEscape","joinAttributes","attributeName","joinStyles","styleName","transformIsMeaningful","transformForSvg","containerWidth","iconWidth","outer","innerTranslate","innerScale","innerRotate","inner","transformForCss","_ref2$width","_ref2$height","_ref2$startCentered","startCentered","ALL_SPACE","fillBlack","fill","deGroup","makeIconMasking","main","explicitMaskId","maskId","mainWidth","mainPath","maskWidth","maskPath","trans","maskRect","maskInnerGroupChildrenMixin","maskInnerGroup","maskOuterGroup","clipId","maskTag","maskUnits","maskContentUnits","defs","makeIconStandard","styleString","asIcon","found","asSymbol","makeInlineSvgAbstract","_params$icons","icons","titleId","_params$watchable","watchable","isUploadedIcon","widthClass","attrClass","role","uploadedIconWidthStyle","makeLayersTextAbstract","_params$watchable2","noop$1","bindInternal4","thisContext","subject","initialValue","defineIcons","_params$skipHooks","skipHooks","addPack","build","lookup","reducer","ligature","hasRegular","shim","oldName","iconFromMapping","mapping","toHtml","abstractNodes","_abstractNodes$attrib","_abstractNodes$childr","parseTransformString","transformString","rest","MissingIcon","FILL","ANIMATION_BASE","attributeType","repeatCount","dur","OPACITY_ANIMATE","cx","cy","r","asFoundIcon","_icon$slice","_icon$slice2","vectorData","baseStyles","dfp","drc","fp","rc","dPatt","customPropPatt","rPatt","Library","definitions","additions","_pullDefinitions","_normalized$key","ensureCss","_cssInserted","apiObject","abstractCreator","findIconDefinition","iconLookup","_iconLookup$prefix","library","resolveIcons","maybeIconDefinition","iconDefinition","_params$transform","_params$symbol","_params$mask","_params$maskId","_params$title","_params$titleId","_params$classes","_params$attributes","_params$styles","_params$transform2","_params$title2","_params$classes2","_params$attributes2","_params$styles2","isBrowser","timeoutDuration","longerTimeoutBrowsers","microtaskDebounce","taskDebounce","scheduled","supportsMicroTasks","debounce","functionToCheck","getStyleComputedProperty","getParentNode","getScrollParent","_getStyleComputedProp","getReferenceNode","isIE11","MSInputMethodContext","documentMode","isIE10","getOffsetParent","noOffsetParent","nextElementSibling","isOffsetContainer","getRoot","findCommonOffsetParent","element1","element2","order","DOCUMENT_POSITION_FOLLOWING","range","createRange","setStart","setEnd","commonAncestorContainer","element1root","getScroll","side","upperSide","scrollingElement","includeScroll","bottom","getBordersSize","axis","sideA","sideB","getSize","computedStyle","getWindowSizes","classCallCheck","createClass","getClientRect","sizes","horizScrollbar","vertScrollbar","getOffsetRectRelativeToArbitraryNode","fixedPosition","isHTML","childrenRect","parentRect","scrollParent","borderTopWidth","borderLeftWidth","marginTop","getViewportOffsetRectRelativeToArtbitraryNode","excludeScroll","relativeOffset","isFixed","getFixedPositionOffsetParent","parentElement","getBoundaries","boundaries","boundariesNode","_getWindowSizes","isPaddingNumber","getArea","computeAutoPlacement","refRect","rects","sortedAreas","filteredAreas","computedPlacement","variation","getReferenceOffsets","commonOffsetParent","getOuterSizes","marginBottom","getOppositePlacement","getPopperOffsets","referenceOffsets","popperRect","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","findIndex","runModifiers","ends","modifiersToRun","isDestroyed","arrowStyles","flipped","positionFixed","isCreated","isModifierEnabled","modifierName","getSupportedPropertyName","prefixes","upperProp","toCheck","willChange","disableEventListeners","removeOnDestroy","getWindow","attachToScrollParents","scrollParents","isBody","setupEventListeners","updateBound","scrollElement","eventsEnabled","enableEventListeners","removeEventListeners","cancelAnimationFrame","setStyles","setAttributes","arrowElement","applyStyleOnLoad","modifierOptions","getRoundedOffsets","shouldRound","_data$offsets","noRound","referenceWidth","popperWidth","isVertical","isVariation","sameWidthParity","bothOddWidth","horizontalToInteger","verticalToInteger","isFirefox","computeStyle","legacyGpuAccelerationOption","gpuAcceleration","offsetParentRect","devicePixelRatio","prefixedProperty","invertTop","invertLeft","isModifierRequired","requestingName","requestedName","requesting","isRequired","_requesting","requested","_data$offsets$arrow","sideCapitalized","altSide","opSide","arrowElementSize","center","popperMarginSide","popperBorderSide","sideValue","getOppositeVariation","placements","validPlacements","clockwise","BEHAVIORS","FLIP","CLOCKWISE","COUNTERCLOCKWISE","placementOpposite","flipOrder","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariationByRef","flipVariations","flippedVariationByContent","flipVariationsByContent","flippedVariation","keepTogether","toValue","parseOffset","basePlacement","useHeight","fragments","frag","divider","splitRegex","ops","op","mergeWithPrevious","index2","transformProp","popperStyles","priority","primary","escapeWithReference","secondary","shiftvariation","shiftOffsets","bound","subtractLength","onLoad","Defaults","Utils","PopperUtils","faTemperatureHigh","eject","faThermometerHalf"],"mappings":"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","file":"js/chunk-vendors.7c84295f.js","sourcesContent":["'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n // Hook up interceptors middleware\n var chain = [dispatchRequest, undefined];\n var promise = Promise.resolve(config);\n\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n chain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n chain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","/*!\n * jQuery JavaScript Library v3.5.1\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2020-05-04T22:49Z\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 #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 // Support: Chrome <=57, Firefox <=52\n // In some browsers, typeof returns \"function\" for HTML elements\n // (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n // We don't want to classify *any* DOM node as a function.\n return typeof obj === \"function\" && typeof obj.nodeType !== \"number\";\n };\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\n\tversion = \"3.5.1\",\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\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[ 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\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( \" \" ),\nfunction( _i, name ) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n} );\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}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.3.5\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://js.foundation/\n *\n * Date: 2020-03-14\n */\n( function( window ) {\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\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\t// Instance methods\n\thasOwn = ( {} ).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpushNative = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\n\t// Use a stripped-down indexOf as it's faster than native\n\t// https://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[ i ] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|\" +\n\t\t\"ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\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: http://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]\n\t\t// 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\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" +\n\t\twhitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace +\n\t\t\"*\" ),\n\trdescend = new RegExp( whitespace + \"|>\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" +\n\t\t\twhitespace + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" +\n\t\t\twhitespace + \"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": 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\t\"needsContext\": 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\trhtml = /HTML$/i,\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\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// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace + \"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\", \"g\" ),\n\tfunescape = function( escape, nonHex ) {\n\t\tvar high = \"0x\" + escape.slice( 1 ) - 0x10000;\n\n\t\treturn nonHex ?\n\n\t\t\t// Strip the backslash prefix from a non-hex escape sequence\n\t\t\tnonHex :\n\n\t\t\t// Replace a hexadecimal escape sequence with the encoded Unicode code point\n\t\t\t// Support: IE <=11+\n\t\t\t// For values outside the Basic Multilingual Plane (BMP), manually construct a\n\t\t\t// surrogate pair\n\t\t\thigh < 0 ?\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// CSS string/identifier serialization\n\t// https://drafts.csswg.org/cssom/#common-serializing-idioms\n\trcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,\n\tfcssescape = function( ch, asCodePoint ) {\n\t\tif ( asCodePoint ) {\n\n\t\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\t\tif ( ch === \"\\0\" ) {\n\t\t\t\treturn \"\\uFFFD\";\n\t\t\t}\n\n\t\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\t\treturn ch.slice( 0, -1 ) + \"\\\\\" +\n\t\t\t\tch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t\t}\n\n\t\t// Other potentially-special ASCII characters get backslash-escaped\n\t\treturn \"\\\\\" + ch;\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tinDisabledFieldset = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && elem.nodeName.toLowerCase() === \"fieldset\";\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\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 = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpushNative.apply( target, slice.call( els ) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( ( target[ j++ ] = els[ i++ ] ) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( 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, Opera, Webkit\n\t\t\t\t\t\t\t// TODO: identify versions\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\tresults.push( 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, Opera, Webkit\n\t\t\t\t\t\t// TODO: identify versions\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\tcontains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tresults.push( 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 ] ) && support.getElementsByClassName &&\n\t\t\t\t\tcontext.getElementsByClassName ) {\n\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 ( support.qsa &&\n\t\t\t\t!nonnativeSelectorCache[ selector + \" \" ] &&\n\t\t\t\t( !rbuggyQSA || !rbuggyQSA.test( selector ) ) &&\n\n\t\t\t\t// Support: IE 8 only\n\t\t\t\t// Exclude object elements\n\t\t\t\t( nodeType !== 1 || context.nodeName.toLowerCase() !== \"object\" ) ) {\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 ) || rcombinators.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\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 = nid.replace( rcssescape, fcssescape );\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( rtrim, \"$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 (see Issue #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 Sizzle\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 * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split( \"|\" ),\n\t\ti = arr.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[ i ] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\ta.sourceIndex - b.sourceIndex;\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( ( cur = cur.nextSibling ) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\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\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"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\tvar name = elem.nodeName.toLowerCase();\n\t\treturn ( name === \"input\" || name === \"button\" ) && elem.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\t/* jshint -W018 */\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\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 Sizzle 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// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\tvar namespace = elem.namespaceURI,\n\t\tdocElem = ( elem.ownerDocument || elem ).documentElement;\n\n\t// Support: IE <=8\n\t// Assume HTML when documentElement doesn't yet exist, such as inside loading iframes\n\t// https://bugs.jquery.com/ticket/4833\n\treturn !rhtml.test( namespace || docElem && docElem.nodeName || \"HTML\" );\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, 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\tdocElem = document.documentElement;\n\tdocumentIsHTML = !isXML( document );\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\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 ( preferredDoc != document &&\n\t\t( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 11, Edge\n\t\tif ( subWindow.addEventListener ) {\n\t\t\tsubWindow.addEventListener( \"unload\", unloadHandler, false );\n\n\t\t// Support: IE 9 - 10 only\n\t\t} else if ( subWindow.attachEvent ) {\n\t\t\tsubWindow.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t// Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only,\n\t// Safari 4 - 5 only, Opera <=11.6 - 12.x only\n\t// IE/Edge & older browsers don't support the :scope pseudo-class.\n\t// Support: Safari 6.0 only\n\t// Safari 6.0 supports :scope but it's an alias of :root there.\n\tsupport.scope = assert( function( el ) {\n\t\tdocElem.appendChild( el ).appendChild( document.createElement( \"div\" ) );\n\t\treturn typeof el.querySelectorAll !== \"undefined\" &&\n\t\t\t!el.querySelectorAll( \":scope fieldset div\" ).length;\n\t} );\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert( function( el ) {\n\t\tel.className = \"i\";\n\t\treturn !el.getAttribute( \"className\" );\n\t} );\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert( function( el ) {\n\t\tel.appendChild( document.createComment( \"\" ) );\n\t\treturn !el.getElementsByTagName( \"*\" ).length;\n\t} );\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\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\tdocElem.appendChild( el ).id = expando;\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\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\" ] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[ \"CLASS\" ] = support.getElementsByClassName && 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\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See https://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) {\n\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert( function( el ) {\n\n\t\t\tvar input;\n\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// https://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( el ).innerHTML = \"\" +\n\t\t\t\t\"\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( el.querySelectorAll( \"[msallowcapture^='']\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !el.querySelectorAll( \"[selected]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\t\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"~=\" );\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 15 - 18+\n\t\t\t// IE 11/Edge don't find elements on a `[name='']` query in some cases.\n\t\t\t// Adding a temporary attribute to the document before the selection works\n\t\t\t// around the issue.\n\t\t\t// Interestingly, IE 10 & older don't seem to have the issue.\n\t\t\tinput = document.createElement( \"input\" );\n\t\t\tinput.setAttribute( \"name\", \"\" );\n\t\t\tel.appendChild( input );\n\t\t\tif ( !el.querySelectorAll( \"[name='']\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*name\" + whitespace + \"*=\" +\n\t\t\t\t\twhitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !el.querySelectorAll( \":checked\" ).length ) {\n\t\t\t\trbuggyQSA.push( \":checked\" );\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push( \".#.+[+~]\" );\n\t\t\t}\n\n\t\t\t// Support: Firefox <=3.6 - 5 only\n\t\t\t// Old Firefox doesn't throw on a badly-escaped identifier.\n\t\t\tel.querySelectorAll( \"\\\\\\f\" );\n\t\t\trbuggyQSA.push( \"[\\\\r\\\\n\\\\f]\" );\n\t\t} );\n\n\t\tassert( function( el ) {\n\t\t\tel.innerHTML = \"\" +\n\t\t\t\t\"\";\n\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = document.createElement( \"input\" );\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( el.querySelectorAll( \"[name=d]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( el.querySelectorAll( \":enabled\" ).length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: IE9-11+\n\t\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t\tdocElem.appendChild( el ).disabled = true;\n\t\t\tif ( el.querySelectorAll( \":disabled\" ).length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: Opera 10 - 11 only\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tel.querySelectorAll( \"*,:x\" );\n\t\t\trbuggyQSA.push( \",.*:\" );\n\t\t} );\n\t}\n\n\tif ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector ) ) ) ) {\n\n\t\tassert( function( el ) {\n\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( el, \"*\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( el, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t} );\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( \"|\" ) );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( \"|\" ) );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully self-exclusive\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t) );\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( ( b = b.parentNode ) ) {\n\t\t\t\t\tif ( b === a ) {\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\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( 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\tcontains( 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\tcontains( 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( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\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 eqeqeq */\n\t\t\treturn a == document ? -1 :\n\t\t\t\tb == document ? 1 :\n\t\t\t\t/* eslint-enable eqeqeq */\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( ( cur = cur.parentNode ) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( ( cur = cur.parentNode ) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[ i ] === bp[ i ] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[ i ], bp[ i ] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\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 eqeqeq */\n\t\t\tap[ i ] == preferredDoc ? -1 :\n\t\t\tbp[ i ] == preferredDoc ? 1 :\n\t\t\t/* eslint-enable eqeqeq */\n\t\t\t0;\n\t};\n\n\treturn document;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\tsetDocument( elem );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t!nonnativeSelectorCache[ expr + \" \" ] &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( 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// As well, disconnected nodes are said to be in a document\n\t\t\t\t// fragment in IE 9\n\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 Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.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 contains( context, elem );\n};\n\nSizzle.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 (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t( val = elem.getAttributeNode( name ) ) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.escape = function( sel ) {\n\treturn ( sel + \"\" ).replace( rcssescape, fcssescape );\n};\n\nSizzle.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 */\nSizzle.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\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( 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\tresults.splice( 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\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( ( node = elem[ i++ ] ) ) {\n\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\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\t\"ATTR\": 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 ] ||\n\t\t\t\tmatch[ 5 ] || \"\" ).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\t\"CHILD\": 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\tSizzle.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\tmatch[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === \"odd\" );\n\n\t\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[ 3 ] ) {\n\t\t\t\tSizzle.error( match[ 0 ] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": 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\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = 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 elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t( pattern = new RegExp( \"(^|\" + whitespace +\n\t\t\t\t\t\")\" + className + \"(\" + whitespace + \"|$)\" ) ) && classCache(\n\t\t\t\t\t\tclassName, function( elem ) {\n\t\t\t\t\t\t\treturn pattern.test(\n\t\t\t\t\t\t\t\ttypeof elem.className === \"string\" && elem.className ||\n\t\t\t\t\t\t\t\ttypeof elem.getAttribute !== \"undefined\" &&\n\t\t\t\t\t\t\t\t\telem.getAttribute( \"class\" ) ||\n\t\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t\t\t);\n\t\t\t\t} );\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.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\t/* eslint-disable max-len */\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t\t/* eslint-enable max-len */\n\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": 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, uniqueCache, 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\tnode.nodeName.toLowerCase() === 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\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\tnode = parent;\n\t\t\t\t\t\t\touterCache = node[ expando ] || ( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\tcache = uniqueCache[ 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\tuniqueCache[ 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\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || ( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\t\tcache = uniqueCache[ 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\tnode.nodeName.toLowerCase() === 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\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ 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\t\"PSEUDO\": function( pseudo, argument ) {\n\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://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\tSizzle.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 Sizzle 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( 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\t\"not\": 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( rtrim, \"$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 (issue #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\t\"has\": markFunction( function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t} ),\n\n\t\t\"contains\": markFunction( function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || getText( 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// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": 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\tSizzle.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\t\"target\": 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\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement &&\n\t\t\t\t( !document.hasFocus || document.hasFocus() ) &&\n\t\t\t\t!!( elem.type || elem.href || ~elem.tabIndex );\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": createDisabledPseudo( false ),\n\t\t\"disabled\": createDisabledPseudo( true ),\n\n\t\t\"checked\": function( elem ) {\n\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn ( nodeName === \"input\" && !!elem.checked ) ||\n\t\t\t\t( nodeName === \"option\" && !!elem.selected );\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\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\t\"empty\": function( elem ) {\n\n\t\t\t// http://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\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[ \"empty\" ]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear 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\t\"first\": createPositionalPseudo( function() {\n\t\t\treturn [ 0 ];\n\t\t} ),\n\n\t\t\"last\": createPositionalPseudo( function( _matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t} ),\n\n\t\t\"eq\": createPositionalPseudo( function( _matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t} ),\n\n\t\t\"even\": 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\t\"odd\": 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\t\"lt\": createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ?\n\t\t\t\targument + length :\n\t\t\t\targument > length ?\n\t\t\t\t\tlength :\n\t\t\t\t\targument;\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\t\"gt\": 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\ntokenize = Sizzle.tokenize = function( 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 = rcombinators.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( rtrim, \" \" )\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\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\n\t\t\t// Cache the tokens\n\t\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, uniqueCache, 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\t// Support: IE <9 only\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] ||\n\t\t\t\t\t\t\t( outerCache[ elem.uniqueID ] = {} );\n\n\t\t\t\t\t\tif ( skip && skip === elem.nodeName.toLowerCase() ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( ( oldCache = uniqueCache[ 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\tuniqueCache[ 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\tSizzle( 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,\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 || multipleContexts(\n\t\t\t\tselector || \"*\",\n\t\t\t\tcontext.nodeType ? [ context ] : context,\n\t\t\t\t[]\n\t\t\t),\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\t\tmatcherOut = matcher ?\n\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\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( 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( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\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 (issue #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// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\ttokens\n\t\t\t\t\t\t.slice( 0, i - 1 )\n\t\t\t\t\t\t.concat( { value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" } )\n\t\t\t\t\t).replace( rtrim, \"$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: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: ) matching elements by id\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\tresults.push( 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\tSizzle.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\ncompile = Sizzle.compile = function( 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(\n\t\t\tselector,\n\t\t\tmatcherFromGroupMatchers( elementMatchers, setMatchers )\n\t\t);\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 Sizzle's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( 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\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {\n\n\t\t\tcontext = ( Expr.find[ \"ID\" ]( token.matches[ 0 ]\n\t\t\t\t.replace( runescape, funescape ), context ) || [] )[ 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 ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext\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// Sort stability\nsupport.sortStable = expando.split( \"\" ).sort( sortOrder ).join( \"\" ) === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\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\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert( function( el ) {\n\tel.innerHTML = \"\";\n\treturn el.firstChild.getAttribute( \"href\" ) === \"#\";\n} ) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t} );\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert( function( el ) {\n\tel.innerHTML = \"\";\n\tel.firstChild.setAttribute( \"value\", \"\" );\n\treturn el.firstChild.getAttribute( \"value\" ) === \"\";\n} ) ) {\n\taddHandle( \"value\", function( elem, _name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t} );\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert( function( el ) {\n\treturn el.getAttribute( \"disabled\" ) == null;\n} ) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t( val = elem.getAttributeNode( name ) ) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\t\tnull;\n\t\t}\n\t} );\n}\n\nreturn Sizzle;\n\n} )( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\njQuery.escapeSelector = Sizzle.escape;\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\n\n\nfunction nodeName( elem, name ) {\n\n return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\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 to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#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 Sizzle\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// 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.stackTrace );\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 stack, 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.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.stackTrace = 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 master Deferred\n\t\t\tmaster = 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\tmaster.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, master.done( updateFunc( i ) ).resolve, master.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 ( master.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn master.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 ), master.reject );\n\t\t}\n\n\t\treturn master.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\njQuery.Deferred.exceptionHook = function( error, stack ) {\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, error.stack, stack );\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 #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\tvalue :\n\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 (#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 #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 (#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 (#11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (#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 = \"\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n\n\t// Support: IE <=9 only\n\t// IE <=9 replaces \";\n\tsupport.option = !!div.lastChild;\n} )();\n\n\n// We have to close these tags to support XHTML (#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 or other required elements.\n\tthead: [ 1, \"\", \"
\" ],\n\tcol: [ 2, \"\", \"
\" ],\n\ttr: [ 2, \"\", \"
\" ],\n\ttd: [ 3, \"\", \"
\" ],\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, \"\" ];\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 (#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 (#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\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,\n\trtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\n// Support: IE <=9 - 11+\n// focus() and blur() are asynchronous, except when they are no-op.\n// So expect focus to be synchronous when the element is already active,\n// and blur to be synchronous when the element is not already active.\n// (focus and blur are always synchronous in other supported browsers,\n// this just defines when we can count on it).\nfunction expectSync( elem, type ) {\n\treturn ( elem === safeActiveElement() ) === ( type === \"focus\" );\n}\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\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\t\tdataPriv.get( this, \"events\" ) || Object.create( null )\n\t\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 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 (#13208)\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #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 (#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\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\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\", returnTrue );\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, expectSync ) {\n\n\t// Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !expectSync ) {\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 notAsync, 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\t// Saved data should be false in such cases, but might be a leftover capture object\n\t\t\t\t// from an async native handler (gh-4350)\n\t\t\t\tif ( !saved.length ) {\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\t// Support: IE <=9 - 11+\n\t\t\t\t\t// focus() and blur() are asynchronous\n\t\t\t\t\tnotAsync = expectSync( this, type );\n\t\t\t\t\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tif ( saved !== result || notAsync ) {\n\t\t\t\t\t\tdataPriv.set( this, type, false );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult = {};\n\t\t\t\t\t}\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\t\t\t\t\t\treturn result.value;\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 the\n\t\t\t\t// 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.length ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, {\n\t\t\t\t\tvalue: jQuery.event.trigger(\n\n\t\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t\t// Extend with the prototype to reset the above stopImmediatePropagation()\n\t\t\t\t\t\tjQuery.extend( saved[ 0 ], jQuery.Event.prototype ),\n\t\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\t\tthis\n\t\t\t\t\t)\n\t\t\t\t} );\n\n\t\t\t\t// Abort handling of the native event\n\t\t\t\tevent.stopImmediatePropagation();\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 (#504, #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\n\twhich: function( event ) {\n\t\tvar button = event.button;\n\n\t\t// Add which for key events\n\t\tif ( event.which == null && rkeyEvent.test( event.type ) ) {\n\t\t\treturn event.charCode != null ? event.charCode : event.keyCode;\n\t\t}\n\n\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\tif ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) {\n\t\t\tif ( button & 1 ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\tif ( button & 2 ) {\n\t\t\t\treturn 3;\n\t\t\t}\n\n\t\t\tif ( button & 4 ) {\n\t\t\t\treturn 2;\n\t\t\t}\n\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn event.which;\n\t}\n}, jQuery.event.addProp );\n\njQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( type, delegateType ) {\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\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, expectSync );\n\n\t\t\t// Return false to allow normal processing in the caller\n\t\t\treturn false;\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\tdelegateType: delegateType\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 = /\\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 (#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// Reenable 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\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 Sizzle here for performance reasons: 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 getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (#15098, #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 (#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\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\";\n\t\t\t\ttr.style.height = \"1px\";\n\t\t\t\ttrChild.style.height = \"9px\";\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 ) > 3;\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\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, #12537)\n\t// .css('--customProperty) (#3144)\n\tif ( computed ) {\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\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\trcustomProp = /^--/,\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\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\tif ( box === \"margin\" ) {\n\t\t\tdelta += 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;\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\t\"animationIterationCount\": true,\n\t\t\"columnCount\": true,\n\t\t\"fillOpacity\": true,\n\t\t\"flexGrow\": true,\n\t\t\"flexShrink\": true,\n\t\t\"fontWeight\": true,\n\t\t\"gridArea\": true,\n\t\t\"gridColumn\": true,\n\t\t\"gridColumnEnd\": true,\n\t\t\"gridColumnStart\": true,\n\t\t\"gridRow\": true,\n\t\t\"gridRowEnd\": true,\n\t\t\"gridRowStart\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"order\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": 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 (#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 #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 (#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\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t\t} ) :\n\t\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\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\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/* 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 )` (#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\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\t\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.\n// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/\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// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\t// Use proper attribute retrieval(#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 classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\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\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + clazz + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += clazz + \" \";\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\telem.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 classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\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\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + clazz + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + clazz + \" \", \" \" );\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\telem.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 type = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\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\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\treturn this.each( function() {\n\t\t\tvar className, i, self, classNames;\n\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\ti = 0;\n\t\t\t\tself = jQuery( this );\n\t\t\t\tclassNames = classesToArray( value );\n\n\t\t\t\twhile ( ( className = 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\"\" :\n\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\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 (#14686, #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 (#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\n\n\nsupport.focusin = \"onfocusin\" in window;\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 (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#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 = (\n\t\t\t\t\tdataPriv.get( cur, \"events\" ) || Object.create( null )\n\t\t\t\t)[ 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 (#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\n// Support: Firefox <=44\n// Firefox doesn't have focus(in | out) events\n// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n//\n// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n// focus(in | out) events fire after focus & blur events,\n// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\nif ( !support.focusin ) {\n\tjQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = function( event ) {\n\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );\n\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\n\t\t\t\t// Handle: regular nodes (via `this.ownerDocument`), window\n\t\t\t\t// (via `this.document`) & document (via `this`).\n\t\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.access( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tdataPriv.remove( doc, fix );\n\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.access( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t} );\n}\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;\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\t\txml = undefined;\n\t}\n\n\tif ( !xml || xml.getElementsByTagName( \"parsererror\" ).length ) {\n\t\tjQuery.error( \"Invalid XML: \" + data );\n\t}\n\treturn xml;\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} )\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} )\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// #7653, #8125, #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 (#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\toriginAnchor.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 #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\t\tjQuery( callbackContext ) :\n\t\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 (#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 #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 (#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// #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\n\t\t\tif ( !isSuccess && jQuery.inArray( \"script\", s.dataTypes ) > -1 ) {\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 (#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// #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 #8605, #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// #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( \"\n if (val === '') return true;\n if (val === 'false') return false;\n if (val === 'true') return true;\n return val;\n}\n\nif (DOCUMENT && typeof DOCUMENT.querySelector === 'function') {\n var attrs = [['data-family-prefix', 'familyPrefix'], ['data-replacement-class', 'replacementClass'], ['data-auto-replace-svg', 'autoReplaceSvg'], ['data-auto-add-css', 'autoAddCss'], ['data-auto-a11y', 'autoA11y'], ['data-search-pseudo-elements', 'searchPseudoElements'], ['data-observe-mutations', 'observeMutations'], ['data-mutate-approach', 'mutateApproach'], ['data-keep-original-source', 'keepOriginalSource'], ['data-measure-performance', 'measurePerformance'], ['data-show-missing-icons', 'showMissingIcons']];\n attrs.forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n attr = _ref2[0],\n key = _ref2[1];\n\n var val = coerce(getAttrConfig(attr));\n\n if (val !== undefined && val !== null) {\n initial[key] = val;\n }\n });\n}\n\nvar _default = {\n familyPrefix: DEFAULT_FAMILY_PREFIX,\n replacementClass: DEFAULT_REPLACEMENT_CLASS,\n autoReplaceSvg: true,\n autoAddCss: true,\n autoA11y: true,\n searchPseudoElements: false,\n observeMutations: true,\n mutateApproach: 'async',\n keepOriginalSource: true,\n measurePerformance: false,\n showMissingIcons: true\n};\n\nvar _config = _objectSpread({}, _default, initial);\n\nif (!_config.autoReplaceSvg) _config.observeMutations = false;\n\nvar config = _objectSpread({}, _config);\n\nWINDOW.FontAwesomeConfig = config;\n\nvar w = WINDOW || {};\nif (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {};\nif (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {};\nif (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {};\nif (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = [];\nvar namespace = w[NAMESPACE_IDENTIFIER];\n\nvar functions = [];\n\nvar listener = function listener() {\n DOCUMENT.removeEventListener('DOMContentLoaded', listener);\n loaded = 1;\n functions.map(function (fn) {\n return fn();\n });\n};\n\nvar loaded = false;\n\nif (IS_DOM) {\n loaded = (DOCUMENT.documentElement.doScroll ? /^loaded|^c/ : /^loaded|^i|^c/).test(DOCUMENT.readyState);\n if (!loaded) DOCUMENT.addEventListener('DOMContentLoaded', listener);\n}\n\nfunction domready (fn) {\n if (!IS_DOM) return;\n loaded ? setTimeout(fn, 0) : functions.push(fn);\n}\n\nvar PENDING = 'pending';\nvar SETTLED = 'settled';\nvar FULFILLED = 'fulfilled';\nvar REJECTED = 'rejected';\n\nvar NOOP = function NOOP() {};\n\nvar isNode = typeof global !== 'undefined' && typeof global.process !== 'undefined' && typeof global.process.emit === 'function';\nvar asyncSetTimer = typeof setImmediate === 'undefined' ? setTimeout : setImmediate;\nvar asyncQueue = [];\nvar asyncTimer;\n\nfunction asyncFlush() {\n // run promise callbacks\n for (var i = 0; i < asyncQueue.length; i++) {\n asyncQueue[i][0](asyncQueue[i][1]);\n } // reset async asyncQueue\n\n\n asyncQueue = [];\n asyncTimer = false;\n}\n\nfunction asyncCall(callback, arg) {\n asyncQueue.push([callback, arg]);\n\n if (!asyncTimer) {\n asyncTimer = true;\n asyncSetTimer(asyncFlush, 0);\n }\n}\n\nfunction invokeResolver(resolver, promise) {\n function resolvePromise(value) {\n resolve(promise, value);\n }\n\n function rejectPromise(reason) {\n reject(promise, reason);\n }\n\n try {\n resolver(resolvePromise, rejectPromise);\n } catch (e) {\n rejectPromise(e);\n }\n}\n\nfunction invokeCallback(subscriber) {\n var owner = subscriber.owner;\n var settled = owner._state;\n var value = owner._data;\n var callback = subscriber[settled];\n var promise = subscriber.then;\n\n if (typeof callback === 'function') {\n settled = FULFILLED;\n\n try {\n value = callback(value);\n } catch (e) {\n reject(promise, e);\n }\n }\n\n if (!handleThenable(promise, value)) {\n if (settled === FULFILLED) {\n resolve(promise, value);\n }\n\n if (settled === REJECTED) {\n reject(promise, value);\n }\n }\n}\n\nfunction handleThenable(promise, value) {\n var resolved;\n\n try {\n if (promise === value) {\n throw new TypeError('A promises callback cannot return that same promise.');\n }\n\n if (value && (typeof value === 'function' || _typeof(value) === 'object')) {\n // then should be retrieved only once\n var then = value.then;\n\n if (typeof then === 'function') {\n then.call(value, function (val) {\n if (!resolved) {\n resolved = true;\n\n if (value === val) {\n fulfill(promise, val);\n } else {\n resolve(promise, val);\n }\n }\n }, function (reason) {\n if (!resolved) {\n resolved = true;\n reject(promise, reason);\n }\n });\n return true;\n }\n }\n } catch (e) {\n if (!resolved) {\n reject(promise, e);\n }\n\n return true;\n }\n\n return false;\n}\n\nfunction resolve(promise, value) {\n if (promise === value || !handleThenable(promise, value)) {\n fulfill(promise, value);\n }\n}\n\nfunction fulfill(promise, value) {\n if (promise._state === PENDING) {\n promise._state = SETTLED;\n promise._data = value;\n asyncCall(publishFulfillment, promise);\n }\n}\n\nfunction reject(promise, reason) {\n if (promise._state === PENDING) {\n promise._state = SETTLED;\n promise._data = reason;\n asyncCall(publishRejection, promise);\n }\n}\n\nfunction publish(promise) {\n promise._then = promise._then.forEach(invokeCallback);\n}\n\nfunction publishFulfillment(promise) {\n promise._state = FULFILLED;\n publish(promise);\n}\n\nfunction publishRejection(promise) {\n promise._state = REJECTED;\n publish(promise);\n\n if (!promise._handled && isNode) {\n global.process.emit('unhandledRejection', promise._data, promise);\n }\n}\n\nfunction notifyRejectionHandled(promise) {\n global.process.emit('rejectionHandled', promise);\n}\n/**\n * @class\n */\n\n\nfunction P(resolver) {\n if (typeof resolver !== 'function') {\n throw new TypeError('Promise resolver ' + resolver + ' is not a function');\n }\n\n if (this instanceof P === false) {\n throw new TypeError('Failed to construct \\'Promise\\': Please use the \\'new\\' operator, this object constructor cannot be called as a function.');\n }\n\n this._then = [];\n invokeResolver(resolver, this);\n}\n\nP.prototype = {\n constructor: P,\n _state: PENDING,\n _then: null,\n _data: undefined,\n _handled: false,\n then: function then(onFulfillment, onRejection) {\n var subscriber = {\n owner: this,\n then: new this.constructor(NOOP),\n fulfilled: onFulfillment,\n rejected: onRejection\n };\n\n if ((onRejection || onFulfillment) && !this._handled) {\n this._handled = true;\n\n if (this._state === REJECTED && isNode) {\n asyncCall(notifyRejectionHandled, this);\n }\n }\n\n if (this._state === FULFILLED || this._state === REJECTED) {\n // already resolved, call callback async\n asyncCall(invokeCallback, subscriber);\n } else {\n // subscribe\n this._then.push(subscriber);\n }\n\n return subscriber.then;\n },\n catch: function _catch(onRejection) {\n return this.then(null, onRejection);\n }\n};\n\nP.all = function (promises) {\n if (!Array.isArray(promises)) {\n throw new TypeError('You must pass an array to Promise.all().');\n }\n\n return new P(function (resolve, reject) {\n var results = [];\n var remaining = 0;\n\n function resolver(index) {\n remaining++;\n return function (value) {\n results[index] = value;\n\n if (! --remaining) {\n resolve(results);\n }\n };\n }\n\n for (var i = 0, promise; i < promises.length; i++) {\n promise = promises[i];\n\n if (promise && typeof promise.then === 'function') {\n promise.then(resolver(i), reject);\n } else {\n results[i] = promise;\n }\n }\n\n if (!remaining) {\n resolve(results);\n }\n });\n};\n\nP.race = function (promises) {\n if (!Array.isArray(promises)) {\n throw new TypeError('You must pass an array to Promise.race().');\n }\n\n return new P(function (resolve, reject) {\n for (var i = 0, promise; i < promises.length; i++) {\n promise = promises[i];\n\n if (promise && typeof promise.then === 'function') {\n promise.then(resolve, reject);\n } else {\n resolve(promise);\n }\n }\n });\n};\n\nP.resolve = function (value) {\n if (value && _typeof(value) === 'object' && value.constructor === P) {\n return value;\n }\n\n return new P(function (resolve) {\n resolve(value);\n });\n};\n\nP.reject = function (reason) {\n return new P(function (resolve, reject) {\n reject(reason);\n });\n};\n\nvar picked = typeof Promise === 'function' ? Promise : P;\n\nvar d = UNITS_IN_GRID;\nvar meaninglessTransform = {\n size: 16,\n x: 0,\n y: 0,\n rotate: 0,\n flipX: false,\n flipY: false\n};\n\nfunction isReserved(name) {\n return ~RESERVED_CLASSES.indexOf(name);\n}\nfunction insertCss(css) {\n if (!css || !IS_DOM) {\n return;\n }\n\n var style = DOCUMENT.createElement('style');\n style.setAttribute('type', 'text/css');\n style.innerHTML = css;\n var headChildren = DOCUMENT.head.childNodes;\n var beforeChild = null;\n\n for (var i = headChildren.length - 1; i > -1; i--) {\n var child = headChildren[i];\n var tagName = (child.tagName || '').toUpperCase();\n\n if (['STYLE', 'LINK'].indexOf(tagName) > -1) {\n beforeChild = child;\n }\n }\n\n DOCUMENT.head.insertBefore(style, beforeChild);\n return css;\n}\nvar idPool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\nfunction nextUniqueId() {\n var size = 12;\n var id = '';\n\n while (size-- > 0) {\n id += idPool[Math.random() * 62 | 0];\n }\n\n return id;\n}\nfunction toArray(obj) {\n var array = [];\n\n for (var i = (obj || []).length >>> 0; i--;) {\n array[i] = obj[i];\n }\n\n return array;\n}\nfunction classArray(node) {\n if (node.classList) {\n return toArray(node.classList);\n } else {\n return (node.getAttribute('class') || '').split(' ').filter(function (i) {\n return i;\n });\n }\n}\nfunction getIconName(familyPrefix, cls) {\n var parts = cls.split('-');\n var prefix = parts[0];\n var iconName = parts.slice(1).join('-');\n\n if (prefix === familyPrefix && iconName !== '' && !isReserved(iconName)) {\n return iconName;\n } else {\n return null;\n }\n}\nfunction htmlEscape(str) {\n return \"\".concat(str).replace(/&/g, '&').replace(/\"/g, '"').replace(/'/g, ''').replace(//g, '>');\n}\nfunction joinAttributes(attributes) {\n return Object.keys(attributes || {}).reduce(function (acc, attributeName) {\n return acc + \"\".concat(attributeName, \"=\\\"\").concat(htmlEscape(attributes[attributeName]), \"\\\" \");\n }, '').trim();\n}\nfunction joinStyles(styles) {\n return Object.keys(styles || {}).reduce(function (acc, styleName) {\n return acc + \"\".concat(styleName, \": \").concat(styles[styleName], \";\");\n }, '');\n}\nfunction transformIsMeaningful(transform) {\n return transform.size !== meaninglessTransform.size || transform.x !== meaninglessTransform.x || transform.y !== meaninglessTransform.y || transform.rotate !== meaninglessTransform.rotate || transform.flipX || transform.flipY;\n}\nfunction transformForSvg(_ref) {\n var transform = _ref.transform,\n containerWidth = _ref.containerWidth,\n iconWidth = _ref.iconWidth;\n var outer = {\n transform: \"translate(\".concat(containerWidth / 2, \" 256)\")\n };\n var innerTranslate = \"translate(\".concat(transform.x * 32, \", \").concat(transform.y * 32, \") \");\n var innerScale = \"scale(\".concat(transform.size / 16 * (transform.flipX ? -1 : 1), \", \").concat(transform.size / 16 * (transform.flipY ? -1 : 1), \") \");\n var innerRotate = \"rotate(\".concat(transform.rotate, \" 0 0)\");\n var inner = {\n transform: \"\".concat(innerTranslate, \" \").concat(innerScale, \" \").concat(innerRotate)\n };\n var path = {\n transform: \"translate(\".concat(iconWidth / 2 * -1, \" -256)\")\n };\n return {\n outer: outer,\n inner: inner,\n path: path\n };\n}\nfunction transformForCss(_ref2) {\n var transform = _ref2.transform,\n _ref2$width = _ref2.width,\n width = _ref2$width === void 0 ? UNITS_IN_GRID : _ref2$width,\n _ref2$height = _ref2.height,\n height = _ref2$height === void 0 ? UNITS_IN_GRID : _ref2$height,\n _ref2$startCentered = _ref2.startCentered,\n startCentered = _ref2$startCentered === void 0 ? false : _ref2$startCentered;\n var val = '';\n\n if (startCentered && IS_IE) {\n val += \"translate(\".concat(transform.x / d - width / 2, \"em, \").concat(transform.y / d - height / 2, \"em) \");\n } else if (startCentered) {\n val += \"translate(calc(-50% + \".concat(transform.x / d, \"em), calc(-50% + \").concat(transform.y / d, \"em)) \");\n } else {\n val += \"translate(\".concat(transform.x / d, \"em, \").concat(transform.y / d, \"em) \");\n }\n\n val += \"scale(\".concat(transform.size / d * (transform.flipX ? -1 : 1), \", \").concat(transform.size / d * (transform.flipY ? -1 : 1), \") \");\n val += \"rotate(\".concat(transform.rotate, \"deg) \");\n return val;\n}\n\nvar ALL_SPACE = {\n x: 0,\n y: 0,\n width: '100%',\n height: '100%'\n};\n\nfunction fillBlack(abstract) {\n var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n if (abstract.attributes && (abstract.attributes.fill || force)) {\n abstract.attributes.fill = 'black';\n }\n\n return abstract;\n}\n\nfunction deGroup(abstract) {\n if (abstract.tag === 'g') {\n return abstract.children;\n } else {\n return [abstract];\n }\n}\n\nfunction makeIconMasking (_ref) {\n var children = _ref.children,\n attributes = _ref.attributes,\n main = _ref.main,\n mask = _ref.mask,\n explicitMaskId = _ref.maskId,\n transform = _ref.transform;\n var mainWidth = main.width,\n mainPath = main.icon;\n var maskWidth = mask.width,\n maskPath = mask.icon;\n var trans = transformForSvg({\n transform: transform,\n containerWidth: maskWidth,\n iconWidth: mainWidth\n });\n var maskRect = {\n tag: 'rect',\n attributes: _objectSpread({}, ALL_SPACE, {\n fill: 'white'\n })\n };\n var maskInnerGroupChildrenMixin = mainPath.children ? {\n children: mainPath.children.map(fillBlack)\n } : {};\n var maskInnerGroup = {\n tag: 'g',\n attributes: _objectSpread({}, trans.inner),\n children: [fillBlack(_objectSpread({\n tag: mainPath.tag,\n attributes: _objectSpread({}, mainPath.attributes, trans.path)\n }, maskInnerGroupChildrenMixin))]\n };\n var maskOuterGroup = {\n tag: 'g',\n attributes: _objectSpread({}, trans.outer),\n children: [maskInnerGroup]\n };\n var maskId = \"mask-\".concat(explicitMaskId || nextUniqueId());\n var clipId = \"clip-\".concat(explicitMaskId || nextUniqueId());\n var maskTag = {\n tag: 'mask',\n attributes: _objectSpread({}, ALL_SPACE, {\n id: maskId,\n maskUnits: 'userSpaceOnUse',\n maskContentUnits: 'userSpaceOnUse'\n }),\n children: [maskRect, maskOuterGroup]\n };\n var defs = {\n tag: 'defs',\n children: [{\n tag: 'clipPath',\n attributes: {\n id: clipId\n },\n children: deGroup(maskPath)\n }, maskTag]\n };\n children.push(defs, {\n tag: 'rect',\n attributes: _objectSpread({\n fill: 'currentColor',\n 'clip-path': \"url(#\".concat(clipId, \")\"),\n mask: \"url(#\".concat(maskId, \")\")\n }, ALL_SPACE)\n });\n return {\n children: children,\n attributes: attributes\n };\n}\n\nfunction makeIconStandard (_ref) {\n var children = _ref.children,\n attributes = _ref.attributes,\n main = _ref.main,\n transform = _ref.transform,\n styles = _ref.styles;\n var styleString = joinStyles(styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n if (transformIsMeaningful(transform)) {\n var trans = transformForSvg({\n transform: transform,\n containerWidth: main.width,\n iconWidth: main.width\n });\n children.push({\n tag: 'g',\n attributes: _objectSpread({}, trans.outer),\n children: [{\n tag: 'g',\n attributes: _objectSpread({}, trans.inner),\n children: [{\n tag: main.icon.tag,\n children: main.icon.children,\n attributes: _objectSpread({}, main.icon.attributes, trans.path)\n }]\n }]\n });\n } else {\n children.push(main.icon);\n }\n\n return {\n children: children,\n attributes: attributes\n };\n}\n\nfunction asIcon (_ref) {\n var children = _ref.children,\n main = _ref.main,\n mask = _ref.mask,\n attributes = _ref.attributes,\n styles = _ref.styles,\n transform = _ref.transform;\n\n if (transformIsMeaningful(transform) && main.found && !mask.found) {\n var width = main.width,\n height = main.height;\n var offset = {\n x: width / height / 2,\n y: 0.5\n };\n attributes['style'] = joinStyles(_objectSpread({}, styles, {\n 'transform-origin': \"\".concat(offset.x + transform.x / 16, \"em \").concat(offset.y + transform.y / 16, \"em\")\n }));\n }\n\n return [{\n tag: 'svg',\n attributes: attributes,\n children: children\n }];\n}\n\nfunction asSymbol (_ref) {\n var prefix = _ref.prefix,\n iconName = _ref.iconName,\n children = _ref.children,\n attributes = _ref.attributes,\n symbol = _ref.symbol;\n var id = symbol === true ? \"\".concat(prefix, \"-\").concat(config.familyPrefix, \"-\").concat(iconName) : symbol;\n return [{\n tag: 'svg',\n attributes: {\n style: 'display: none;'\n },\n children: [{\n tag: 'symbol',\n attributes: _objectSpread({}, attributes, {\n id: id\n }),\n children: children\n }]\n }];\n}\n\nfunction makeInlineSvgAbstract(params) {\n var _params$icons = params.icons,\n main = _params$icons.main,\n mask = _params$icons.mask,\n prefix = params.prefix,\n iconName = params.iconName,\n transform = params.transform,\n symbol = params.symbol,\n title = params.title,\n maskId = params.maskId,\n titleId = params.titleId,\n extra = params.extra,\n _params$watchable = params.watchable,\n watchable = _params$watchable === void 0 ? false : _params$watchable;\n\n var _ref = mask.found ? mask : main,\n width = _ref.width,\n height = _ref.height;\n\n var isUploadedIcon = prefix === 'fak';\n var widthClass = isUploadedIcon ? '' : \"fa-w-\".concat(Math.ceil(width / height * 16));\n var attrClass = [config.replacementClass, iconName ? \"\".concat(config.familyPrefix, \"-\").concat(iconName) : '', widthClass].filter(function (c) {\n return extra.classes.indexOf(c) === -1;\n }).filter(function (c) {\n return c !== '' || !!c;\n }).concat(extra.classes).join(' ');\n var content = {\n children: [],\n attributes: _objectSpread({}, extra.attributes, {\n 'data-prefix': prefix,\n 'data-icon': iconName,\n 'class': attrClass,\n 'role': extra.attributes.role || 'img',\n 'xmlns': 'http://www.w3.org/2000/svg',\n 'viewBox': \"0 0 \".concat(width, \" \").concat(height)\n })\n };\n var uploadedIconWidthStyle = isUploadedIcon && !~extra.classes.indexOf('fa-fw') ? {\n width: \"\".concat(width / height * 16 * 0.0625, \"em\")\n } : {};\n\n if (watchable) {\n content.attributes[DATA_FA_I2SVG] = '';\n }\n\n if (title) content.children.push({\n tag: 'title',\n attributes: {\n id: content.attributes['aria-labelledby'] || \"title-\".concat(titleId || nextUniqueId())\n },\n children: [title]\n });\n\n var args = _objectSpread({}, content, {\n prefix: prefix,\n iconName: iconName,\n main: main,\n mask: mask,\n maskId: maskId,\n transform: transform,\n symbol: symbol,\n styles: _objectSpread({}, uploadedIconWidthStyle, extra.styles)\n });\n\n var _ref2 = mask.found && main.found ? makeIconMasking(args) : makeIconStandard(args),\n children = _ref2.children,\n attributes = _ref2.attributes;\n\n args.children = children;\n args.attributes = attributes;\n\n if (symbol) {\n return asSymbol(args);\n } else {\n return asIcon(args);\n }\n}\nfunction makeLayersTextAbstract(params) {\n var content = params.content,\n width = params.width,\n height = params.height,\n transform = params.transform,\n title = params.title,\n extra = params.extra,\n _params$watchable2 = params.watchable,\n watchable = _params$watchable2 === void 0 ? false : _params$watchable2;\n\n var attributes = _objectSpread({}, extra.attributes, title ? {\n 'title': title\n } : {}, {\n 'class': extra.classes.join(' ')\n });\n\n if (watchable) {\n attributes[DATA_FA_I2SVG] = '';\n }\n\n var styles = _objectSpread({}, extra.styles);\n\n if (transformIsMeaningful(transform)) {\n styles['transform'] = transformForCss({\n transform: transform,\n startCentered: true,\n width: width,\n height: height\n });\n styles['-webkit-transform'] = styles['transform'];\n }\n\n var styleString = joinStyles(styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n var val = [];\n val.push({\n tag: 'span',\n attributes: attributes,\n children: [content]\n });\n\n if (title) {\n val.push({\n tag: 'span',\n attributes: {\n class: 'sr-only'\n },\n children: [title]\n });\n }\n\n return val;\n}\nfunction makeLayersCounterAbstract(params) {\n var content = params.content,\n title = params.title,\n extra = params.extra;\n\n var attributes = _objectSpread({}, extra.attributes, title ? {\n 'title': title\n } : {}, {\n 'class': extra.classes.join(' ')\n });\n\n var styleString = joinStyles(extra.styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n var val = [];\n val.push({\n tag: 'span',\n attributes: attributes,\n children: [content]\n });\n\n if (title) {\n val.push({\n tag: 'span',\n attributes: {\n class: 'sr-only'\n },\n children: [title]\n });\n }\n\n return val;\n}\n\nvar noop$1 = function noop() {};\n\nvar p = config.measurePerformance && PERFORMANCE && PERFORMANCE.mark && PERFORMANCE.measure ? PERFORMANCE : {\n mark: noop$1,\n measure: noop$1\n};\nvar preamble = \"FA \\\"5.15.1\\\"\";\n\nvar begin = function begin(name) {\n p.mark(\"\".concat(preamble, \" \").concat(name, \" begins\"));\n return function () {\n return end(name);\n };\n};\n\nvar end = function end(name) {\n p.mark(\"\".concat(preamble, \" \").concat(name, \" ends\"));\n p.measure(\"\".concat(preamble, \" \").concat(name), \"\".concat(preamble, \" \").concat(name, \" begins\"), \"\".concat(preamble, \" \").concat(name, \" ends\"));\n};\n\nvar perf = {\n begin: begin,\n end: end\n};\n\n/**\n * Internal helper to bind a function known to have 4 arguments\n * to a given context.\n */\n\nvar bindInternal4 = function bindInternal4(func, thisContext) {\n return function (a, b, c, d) {\n return func.call(thisContext, a, b, c, d);\n };\n};\n\n/**\n * # Reduce\n *\n * A fast object `.reduce()` implementation.\n *\n * @param {Object} subject The object to reduce over.\n * @param {Function} fn The reducer function.\n * @param {mixed} initialValue The initial value for the reducer, defaults to subject[0].\n * @param {Object} thisContext The context for the reducer.\n * @return {mixed} The final result.\n */\n\n\nvar reduce = function fastReduceObject(subject, fn, initialValue, thisContext) {\n var keys = Object.keys(subject),\n length = keys.length,\n iterator = thisContext !== undefined ? bindInternal4(fn, thisContext) : fn,\n i,\n key,\n result;\n\n if (initialValue === undefined) {\n i = 1;\n result = subject[keys[0]];\n } else {\n i = 0;\n result = initialValue;\n }\n\n for (; i < length; i++) {\n key = keys[i];\n result = iterator(result, subject[key], key, subject);\n }\n\n return result;\n};\n\nfunction toHex(unicode) {\n var result = '';\n\n for (var i = 0; i < unicode.length; i++) {\n var hex = unicode.charCodeAt(i).toString(16);\n result += ('000' + hex).slice(-4);\n }\n\n return result;\n}\nfunction codePointAt(string, index) {\n /*! https://mths.be/codepointat v0.2.0 by @mathias */\n var size = string.length;\n var first = string.charCodeAt(index);\n var second;\n\n if (first >= 0xD800 && first <= 0xDBFF && size > index + 1) {\n second = string.charCodeAt(index + 1);\n\n if (second >= 0xDC00 && second <= 0xDFFF) {\n return (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n }\n }\n\n return first;\n}\n/**\n * Used to check that the character is between the E000..F8FF private unicode\n * range\n */\n\nfunction isPrivateUnicode(iconName) {\n if (iconName.length !== 1) {\n return false;\n } else {\n var cp = codePointAt(iconName, 0);\n return cp >= 57344 && cp <= 63743;\n }\n}\n\nfunction defineIcons(prefix, icons) {\n var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var _params$skipHooks = params.skipHooks,\n skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks;\n var normalized = Object.keys(icons).reduce(function (acc, iconName) {\n var icon = icons[iconName];\n var expanded = !!icon.icon;\n\n if (expanded) {\n acc[icon.iconName] = icon.icon;\n } else {\n acc[iconName] = icon;\n }\n\n return acc;\n }, {});\n\n if (typeof namespace.hooks.addPack === 'function' && !skipHooks) {\n namespace.hooks.addPack(prefix, normalized);\n } else {\n namespace.styles[prefix] = _objectSpread({}, namespace.styles[prefix] || {}, normalized);\n }\n /**\n * Font Awesome 4 used the prefix of `fa` for all icons. With the introduction\n * of new styles we needed to differentiate between them. Prefix `fa` is now an alias\n * for `fas` so we'll easy the upgrade process for our users by automatically defining\n * this as well.\n */\n\n\n if (prefix === 'fas') {\n defineIcons('fa', icons);\n }\n}\n\nvar styles = namespace.styles,\n shims = namespace.shims;\nvar _byUnicode = {};\nvar _byLigature = {};\nvar _byOldName = {};\nvar build = function build() {\n var lookup = function lookup(reducer) {\n return reduce(styles, function (o, style, prefix) {\n o[prefix] = reduce(style, reducer, {});\n return o;\n }, {});\n };\n\n _byUnicode = lookup(function (acc, icon, iconName) {\n if (icon[3]) {\n acc[icon[3]] = iconName;\n }\n\n return acc;\n });\n _byLigature = lookup(function (acc, icon, iconName) {\n var ligatures = icon[2];\n acc[iconName] = iconName;\n ligatures.forEach(function (ligature) {\n acc[ligature] = iconName;\n });\n return acc;\n });\n var hasRegular = 'far' in styles;\n _byOldName = reduce(shims, function (acc, shim) {\n var oldName = shim[0];\n var prefix = shim[1];\n var iconName = shim[2];\n\n if (prefix === 'far' && !hasRegular) {\n prefix = 'fas';\n }\n\n acc[oldName] = {\n prefix: prefix,\n iconName: iconName\n };\n return acc;\n }, {});\n};\nbuild();\nfunction byUnicode(prefix, unicode) {\n return (_byUnicode[prefix] || {})[unicode];\n}\nfunction byLigature(prefix, ligature) {\n return (_byLigature[prefix] || {})[ligature];\n}\nfunction byOldName(name) {\n return _byOldName[name] || {\n prefix: null,\n iconName: null\n };\n}\n\nvar styles$1 = namespace.styles;\nvar emptyCanonicalIcon = function emptyCanonicalIcon() {\n return {\n prefix: null,\n iconName: null,\n rest: []\n };\n};\nfunction getCanonicalIcon(values) {\n return values.reduce(function (acc, cls) {\n var iconName = getIconName(config.familyPrefix, cls);\n\n if (styles$1[cls]) {\n acc.prefix = cls;\n } else if (config.autoFetchSvg && Object.keys(PREFIX_TO_STYLE).indexOf(cls) > -1) {\n acc.prefix = cls;\n } else if (iconName) {\n var shim = acc.prefix === 'fa' ? byOldName(iconName) : {};\n acc.iconName = shim.iconName || iconName;\n acc.prefix = shim.prefix || acc.prefix;\n } else if (cls !== config.replacementClass && cls.indexOf('fa-w-') !== 0) {\n acc.rest.push(cls);\n }\n\n return acc;\n }, emptyCanonicalIcon());\n}\nfunction iconFromMapping(mapping, prefix, iconName) {\n if (mapping && mapping[prefix] && mapping[prefix][iconName]) {\n return {\n prefix: prefix,\n iconName: iconName,\n icon: mapping[prefix][iconName]\n };\n }\n}\n\nfunction toHtml(abstractNodes) {\n var tag = abstractNodes.tag,\n _abstractNodes$attrib = abstractNodes.attributes,\n attributes = _abstractNodes$attrib === void 0 ? {} : _abstractNodes$attrib,\n _abstractNodes$childr = abstractNodes.children,\n children = _abstractNodes$childr === void 0 ? [] : _abstractNodes$childr;\n\n if (typeof abstractNodes === 'string') {\n return htmlEscape(abstractNodes);\n } else {\n return \"<\".concat(tag, \" \").concat(joinAttributes(attributes), \">\").concat(children.map(toHtml).join(''), \"\");\n }\n}\n\nvar noop$2 = function noop() {};\n\nfunction isWatched(node) {\n var i2svg = node.getAttribute ? node.getAttribute(DATA_FA_I2SVG) : null;\n return typeof i2svg === 'string';\n}\n\nfunction getMutator() {\n if (config.autoReplaceSvg === true) {\n return mutators.replace;\n }\n\n var mutator = mutators[config.autoReplaceSvg];\n return mutator || mutators.replace;\n}\n\nvar mutators = {\n replace: function replace(mutation) {\n var node = mutation[0];\n var abstract = mutation[1];\n var newOuterHTML = abstract.map(function (a) {\n return toHtml(a);\n }).join('\\n');\n\n if (node.parentNode && node.outerHTML) {\n node.outerHTML = newOuterHTML + (config.keepOriginalSource && node.tagName.toLowerCase() !== 'svg' ? \"\") : '');\n } else if (node.parentNode) {\n var newNode = document.createElement('span');\n node.parentNode.replaceChild(newNode, node);\n newNode.outerHTML = newOuterHTML;\n }\n },\n nest: function nest(mutation) {\n var node = mutation[0];\n var abstract = mutation[1]; // If we already have a replaced node we do not want to continue nesting within it.\n // Short-circuit to the standard replacement\n\n if (~classArray(node).indexOf(config.replacementClass)) {\n return mutators.replace(mutation);\n }\n\n var forSvg = new RegExp(\"\".concat(config.familyPrefix, \"-.*\"));\n delete abstract[0].attributes.style;\n delete abstract[0].attributes.id;\n var splitClasses = abstract[0].attributes.class.split(' ').reduce(function (acc, cls) {\n if (cls === config.replacementClass || cls.match(forSvg)) {\n acc.toSvg.push(cls);\n } else {\n acc.toNode.push(cls);\n }\n\n return acc;\n }, {\n toNode: [],\n toSvg: []\n });\n abstract[0].attributes.class = splitClasses.toSvg.join(' ');\n var newInnerHTML = abstract.map(function (a) {\n return toHtml(a);\n }).join('\\n');\n node.setAttribute('class', splitClasses.toNode.join(' '));\n node.setAttribute(DATA_FA_I2SVG, '');\n node.innerHTML = newInnerHTML;\n }\n};\n\nfunction performOperationSync(op) {\n op();\n}\n\nfunction perform(mutations, callback) {\n var callbackFunction = typeof callback === 'function' ? callback : noop$2;\n\n if (mutations.length === 0) {\n callbackFunction();\n } else {\n var frame = performOperationSync;\n\n if (config.mutateApproach === MUTATION_APPROACH_ASYNC) {\n frame = WINDOW.requestAnimationFrame || performOperationSync;\n }\n\n frame(function () {\n var mutator = getMutator();\n var mark = perf.begin('mutate');\n mutations.map(mutator);\n mark();\n callbackFunction();\n });\n }\n}\nvar disabled = false;\nfunction disableObservation() {\n disabled = true;\n}\nfunction enableObservation() {\n disabled = false;\n}\nvar mo = null;\nfunction observe(options) {\n if (!MUTATION_OBSERVER) {\n return;\n }\n\n if (!config.observeMutations) {\n return;\n }\n\n var treeCallback = options.treeCallback,\n nodeCallback = options.nodeCallback,\n pseudoElementsCallback = options.pseudoElementsCallback,\n _options$observeMutat = options.observeMutationsRoot,\n observeMutationsRoot = _options$observeMutat === void 0 ? DOCUMENT : _options$observeMutat;\n mo = new MUTATION_OBSERVER(function (objects) {\n if (disabled) return;\n toArray(objects).forEach(function (mutationRecord) {\n if (mutationRecord.type === 'childList' && mutationRecord.addedNodes.length > 0 && !isWatched(mutationRecord.addedNodes[0])) {\n if (config.searchPseudoElements) {\n pseudoElementsCallback(mutationRecord.target);\n }\n\n treeCallback(mutationRecord.target);\n }\n\n if (mutationRecord.type === 'attributes' && mutationRecord.target.parentNode && config.searchPseudoElements) {\n pseudoElementsCallback(mutationRecord.target.parentNode);\n }\n\n if (mutationRecord.type === 'attributes' && isWatched(mutationRecord.target) && ~ATTRIBUTES_WATCHED_FOR_MUTATION.indexOf(mutationRecord.attributeName)) {\n if (mutationRecord.attributeName === 'class') {\n var _getCanonicalIcon = getCanonicalIcon(classArray(mutationRecord.target)),\n prefix = _getCanonicalIcon.prefix,\n iconName = _getCanonicalIcon.iconName;\n\n if (prefix) mutationRecord.target.setAttribute('data-prefix', prefix);\n if (iconName) mutationRecord.target.setAttribute('data-icon', iconName);\n } else {\n nodeCallback(mutationRecord.target);\n }\n }\n });\n });\n if (!IS_DOM) return;\n mo.observe(observeMutationsRoot, {\n childList: true,\n attributes: true,\n characterData: true,\n subtree: true\n });\n}\nfunction disconnect() {\n if (!mo) return;\n mo.disconnect();\n}\n\nfunction styleParser (node) {\n var style = node.getAttribute('style');\n var val = [];\n\n if (style) {\n val = style.split(';').reduce(function (acc, style) {\n var styles = style.split(':');\n var prop = styles[0];\n var value = styles.slice(1);\n\n if (prop && value.length > 0) {\n acc[prop] = value.join(':').trim();\n }\n\n return acc;\n }, {});\n }\n\n return val;\n}\n\nfunction classParser (node) {\n var existingPrefix = node.getAttribute('data-prefix');\n var existingIconName = node.getAttribute('data-icon');\n var innerText = node.innerText !== undefined ? node.innerText.trim() : '';\n var val = getCanonicalIcon(classArray(node));\n\n if (existingPrefix && existingIconName) {\n val.prefix = existingPrefix;\n val.iconName = existingIconName;\n }\n\n if (val.prefix && innerText.length > 1) {\n val.iconName = byLigature(val.prefix, node.innerText);\n } else if (val.prefix && innerText.length === 1) {\n val.iconName = byUnicode(val.prefix, toHex(node.innerText));\n }\n\n return val;\n}\n\nvar parseTransformString = function parseTransformString(transformString) {\n var transform = {\n size: 16,\n x: 0,\n y: 0,\n flipX: false,\n flipY: false,\n rotate: 0\n };\n\n if (!transformString) {\n return transform;\n } else {\n return transformString.toLowerCase().split(' ').reduce(function (acc, n) {\n var parts = n.toLowerCase().split('-');\n var first = parts[0];\n var rest = parts.slice(1).join('-');\n\n if (first && rest === 'h') {\n acc.flipX = true;\n return acc;\n }\n\n if (first && rest === 'v') {\n acc.flipY = true;\n return acc;\n }\n\n rest = parseFloat(rest);\n\n if (isNaN(rest)) {\n return acc;\n }\n\n switch (first) {\n case 'grow':\n acc.size = acc.size + rest;\n break;\n\n case 'shrink':\n acc.size = acc.size - rest;\n break;\n\n case 'left':\n acc.x = acc.x - rest;\n break;\n\n case 'right':\n acc.x = acc.x + rest;\n break;\n\n case 'up':\n acc.y = acc.y - rest;\n break;\n\n case 'down':\n acc.y = acc.y + rest;\n break;\n\n case 'rotate':\n acc.rotate = acc.rotate + rest;\n break;\n }\n\n return acc;\n }, transform);\n }\n};\nfunction transformParser (node) {\n return parseTransformString(node.getAttribute('data-fa-transform'));\n}\n\nfunction symbolParser (node) {\n var symbol = node.getAttribute('data-fa-symbol');\n return symbol === null ? false : symbol === '' ? true : symbol;\n}\n\nfunction attributesParser (node) {\n var extraAttributes = toArray(node.attributes).reduce(function (acc, attr) {\n if (acc.name !== 'class' && acc.name !== 'style') {\n acc[attr.name] = attr.value;\n }\n\n return acc;\n }, {});\n var title = node.getAttribute('title');\n var titleId = node.getAttribute('data-fa-title-id');\n\n if (config.autoA11y) {\n if (title) {\n extraAttributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(titleId || nextUniqueId());\n } else {\n extraAttributes['aria-hidden'] = 'true';\n extraAttributes['focusable'] = 'false';\n }\n }\n\n return extraAttributes;\n}\n\nfunction maskParser (node) {\n var mask = node.getAttribute('data-fa-mask');\n\n if (!mask) {\n return emptyCanonicalIcon();\n } else {\n return getCanonicalIcon(mask.split(' ').map(function (i) {\n return i.trim();\n }));\n }\n}\n\nfunction blankMeta() {\n return {\n iconName: null,\n title: null,\n titleId: null,\n prefix: null,\n transform: meaninglessTransform,\n symbol: false,\n mask: null,\n maskId: null,\n extra: {\n classes: [],\n styles: {},\n attributes: {}\n }\n };\n}\nfunction parseMeta(node) {\n var _classParser = classParser(node),\n iconName = _classParser.iconName,\n prefix = _classParser.prefix,\n extraClasses = _classParser.rest;\n\n var extraStyles = styleParser(node);\n var transform = transformParser(node);\n var symbol = symbolParser(node);\n var extraAttributes = attributesParser(node);\n var mask = maskParser(node);\n return {\n iconName: iconName,\n title: node.getAttribute('title'),\n titleId: node.getAttribute('data-fa-title-id'),\n prefix: prefix,\n transform: transform,\n symbol: symbol,\n mask: mask,\n maskId: node.getAttribute('data-fa-mask-id'),\n extra: {\n classes: extraClasses,\n styles: extraStyles,\n attributes: extraAttributes\n }\n };\n}\n\nfunction MissingIcon(error) {\n this.name = 'MissingIcon';\n this.message = error || 'Icon unavailable';\n this.stack = new Error().stack;\n}\nMissingIcon.prototype = Object.create(Error.prototype);\nMissingIcon.prototype.constructor = MissingIcon;\n\nvar FILL = {\n fill: 'currentColor'\n};\nvar ANIMATION_BASE = {\n attributeType: 'XML',\n repeatCount: 'indefinite',\n dur: '2s'\n};\nvar RING = {\n tag: 'path',\n attributes: _objectSpread({}, FILL, {\n d: 'M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z'\n })\n};\n\nvar OPACITY_ANIMATE = _objectSpread({}, ANIMATION_BASE, {\n attributeName: 'opacity'\n});\n\nvar DOT = {\n tag: 'circle',\n attributes: _objectSpread({}, FILL, {\n cx: '256',\n cy: '364',\n r: '28'\n }),\n children: [{\n tag: 'animate',\n attributes: _objectSpread({}, ANIMATION_BASE, {\n attributeName: 'r',\n values: '28;14;28;28;14;28;'\n })\n }, {\n tag: 'animate',\n attributes: _objectSpread({}, OPACITY_ANIMATE, {\n values: '1;0;1;1;0;1;'\n })\n }]\n};\nvar QUESTION = {\n tag: 'path',\n attributes: _objectSpread({}, FILL, {\n opacity: '1',\n d: 'M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z'\n }),\n children: [{\n tag: 'animate',\n attributes: _objectSpread({}, OPACITY_ANIMATE, {\n values: '1;0;0;0;0;1;'\n })\n }]\n};\nvar EXCLAMATION = {\n tag: 'path',\n attributes: _objectSpread({}, FILL, {\n opacity: '0',\n d: 'M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z'\n }),\n children: [{\n tag: 'animate',\n attributes: _objectSpread({}, OPACITY_ANIMATE, {\n values: '0;0;1;1;0;0;'\n })\n }]\n};\nvar missing = {\n tag: 'g',\n children: [RING, DOT, QUESTION, EXCLAMATION]\n};\n\nvar styles$2 = namespace.styles;\nfunction resolveCustomIconVersion() {\n var kitConfig = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var iconName = arguments.length > 1 ? arguments[1] : undefined;\n\n if (iconName && isPrivateUnicode(iconName)) {\n if (kitConfig && kitConfig.iconUploads) {\n var iconUploads = kitConfig.iconUploads;\n var descriptiveIconName = Object.keys(iconUploads).find(function (key) {\n return iconUploads[key] && iconUploads[key].u && iconUploads[key].u === toHex(iconName);\n });\n\n if (descriptiveIconName) {\n return iconUploads[descriptiveIconName].v;\n }\n }\n } else {\n if (kitConfig && kitConfig.iconUploads && kitConfig.iconUploads[iconName] && kitConfig.iconUploads[iconName].v) {\n return kitConfig.iconUploads[iconName].v;\n }\n }\n}\nfunction asFoundIcon(icon) {\n var width = icon[0];\n var height = icon[1];\n\n var _icon$slice = icon.slice(4),\n _icon$slice2 = _slicedToArray(_icon$slice, 1),\n vectorData = _icon$slice2[0];\n\n var element = null;\n\n if (Array.isArray(vectorData)) {\n element = {\n tag: 'g',\n attributes: {\n class: \"\".concat(config.familyPrefix, \"-\").concat(DUOTONE_CLASSES.GROUP)\n },\n children: [{\n tag: 'path',\n attributes: {\n class: \"\".concat(config.familyPrefix, \"-\").concat(DUOTONE_CLASSES.SECONDARY),\n fill: 'currentColor',\n d: vectorData[0]\n }\n }, {\n tag: 'path',\n attributes: {\n class: \"\".concat(config.familyPrefix, \"-\").concat(DUOTONE_CLASSES.PRIMARY),\n fill: 'currentColor',\n d: vectorData[1]\n }\n }]\n };\n } else {\n element = {\n tag: 'path',\n attributes: {\n fill: 'currentColor',\n d: vectorData\n }\n };\n }\n\n return {\n found: true,\n width: width,\n height: height,\n icon: element\n };\n}\nfunction findIcon(iconName, prefix) {\n return new picked(function (resolve, reject) {\n var val = {\n found: false,\n width: 512,\n height: 512,\n icon: missing\n };\n\n if (iconName && prefix && styles$2[prefix] && styles$2[prefix][iconName]) {\n var icon = styles$2[prefix][iconName];\n return resolve(asFoundIcon(icon));\n }\n var kitToken = null;\n var iconVersion = resolveCustomIconVersion(WINDOW.FontAwesomeKitConfig, iconName);\n\n if (WINDOW.FontAwesomeKitConfig && WINDOW.FontAwesomeKitConfig.token) {\n kitToken = WINDOW.FontAwesomeKitConfig.token;\n }\n\n if (iconName && prefix && !config.showMissingIcons) {\n reject(new MissingIcon(\"Icon is missing for prefix \".concat(prefix, \" with icon name \").concat(iconName)));\n } else {\n resolve(val);\n }\n });\n}\n\nvar styles$3 = namespace.styles;\n\nfunction generateSvgReplacementMutation(node, nodeMeta) {\n var iconName = nodeMeta.iconName,\n title = nodeMeta.title,\n titleId = nodeMeta.titleId,\n prefix = nodeMeta.prefix,\n transform = nodeMeta.transform,\n symbol = nodeMeta.symbol,\n mask = nodeMeta.mask,\n maskId = nodeMeta.maskId,\n extra = nodeMeta.extra;\n return new picked(function (resolve, reject) {\n picked.all([findIcon(iconName, prefix), findIcon(mask.iconName, mask.prefix)]).then(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n main = _ref2[0],\n mask = _ref2[1];\n\n resolve([node, makeInlineSvgAbstract({\n icons: {\n main: main,\n mask: mask\n },\n prefix: prefix,\n iconName: iconName,\n transform: transform,\n symbol: symbol,\n mask: mask,\n maskId: maskId,\n title: title,\n titleId: titleId,\n extra: extra,\n watchable: true\n })]);\n });\n });\n}\n\nfunction generateLayersText(node, nodeMeta) {\n var title = nodeMeta.title,\n transform = nodeMeta.transform,\n extra = nodeMeta.extra;\n var width = null;\n var height = null;\n\n if (IS_IE) {\n var computedFontSize = parseInt(getComputedStyle(node).fontSize, 10);\n var boundingClientRect = node.getBoundingClientRect();\n width = boundingClientRect.width / computedFontSize;\n height = boundingClientRect.height / computedFontSize;\n }\n\n if (config.autoA11y && !title) {\n extra.attributes['aria-hidden'] = 'true';\n }\n\n return picked.resolve([node, makeLayersTextAbstract({\n content: node.innerHTML,\n width: width,\n height: height,\n transform: transform,\n title: title,\n extra: extra,\n watchable: true\n })]);\n}\n\nfunction generateMutation(node) {\n var nodeMeta = parseMeta(node);\n\n if (~nodeMeta.extra.classes.indexOf(LAYERS_TEXT_CLASSNAME)) {\n return generateLayersText(node, nodeMeta);\n } else {\n return generateSvgReplacementMutation(node, nodeMeta);\n }\n}\n\nfunction onTree(root) {\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n if (!IS_DOM) return;\n var htmlClassList = DOCUMENT.documentElement.classList;\n\n var hclAdd = function hclAdd(suffix) {\n return htmlClassList.add(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n };\n\n var hclRemove = function hclRemove(suffix) {\n return htmlClassList.remove(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n };\n\n var prefixes = config.autoFetchSvg ? Object.keys(PREFIX_TO_STYLE) : Object.keys(styles$3);\n var prefixesDomQuery = [\".\".concat(LAYERS_TEXT_CLASSNAME, \":not([\").concat(DATA_FA_I2SVG, \"])\")].concat(prefixes.map(function (p) {\n return \".\".concat(p, \":not([\").concat(DATA_FA_I2SVG, \"])\");\n })).join(', ');\n\n if (prefixesDomQuery.length === 0) {\n return;\n }\n\n var candidates = [];\n\n try {\n candidates = toArray(root.querySelectorAll(prefixesDomQuery));\n } catch (e) {// noop\n }\n\n if (candidates.length > 0) {\n hclAdd('pending');\n hclRemove('complete');\n } else {\n return;\n }\n\n var mark = perf.begin('onTree');\n var mutations = candidates.reduce(function (acc, node) {\n try {\n var mutation = generateMutation(node);\n\n if (mutation) {\n acc.push(mutation);\n }\n } catch (e) {\n if (!PRODUCTION) {\n if (e instanceof MissingIcon) {\n console.error(e);\n }\n }\n }\n\n return acc;\n }, []);\n return new picked(function (resolve, reject) {\n picked.all(mutations).then(function (resolvedMutations) {\n perform(resolvedMutations, function () {\n hclAdd('active');\n hclAdd('complete');\n hclRemove('pending');\n if (typeof callback === 'function') callback();\n mark();\n resolve();\n });\n }).catch(function () {\n mark();\n reject();\n });\n });\n}\nfunction onNode(node) {\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n generateMutation(node).then(function (mutation) {\n if (mutation) {\n perform([mutation], callback);\n }\n });\n}\n\nfunction replaceForPosition(node, position) {\n var pendingAttribute = \"\".concat(DATA_FA_PSEUDO_ELEMENT_PENDING).concat(position.replace(':', '-'));\n return new picked(function (resolve, reject) {\n if (node.getAttribute(pendingAttribute) !== null) {\n // This node is already being processed\n return resolve();\n }\n\n var children = toArray(node.children);\n var alreadyProcessedPseudoElement = children.filter(function (c) {\n return c.getAttribute(DATA_FA_PSEUDO_ELEMENT) === position;\n })[0];\n var styles = WINDOW.getComputedStyle(node, position);\n var fontFamily = styles.getPropertyValue('font-family').match(FONT_FAMILY_PATTERN);\n var fontWeight = styles.getPropertyValue('font-weight');\n var content = styles.getPropertyValue('content');\n\n if (alreadyProcessedPseudoElement && !fontFamily) {\n // If we've already processed it but the current computed style does not result in a font-family,\n // that probably means that a class name that was previously present to make the icon has been\n // removed. So we now should delete the icon.\n node.removeChild(alreadyProcessedPseudoElement);\n return resolve();\n } else if (fontFamily && content !== 'none' && content !== '') {\n var _content = styles.getPropertyValue('content');\n\n var prefix = ~['Solid', 'Regular', 'Light', 'Duotone', 'Brands', 'Kit'].indexOf(fontFamily[2]) ? STYLE_TO_PREFIX[fontFamily[2].toLowerCase()] : FONT_WEIGHT_TO_PREFIX[fontWeight];\n var hexValue = toHex(_content.length === 3 ? _content.substr(1, 1) : _content);\n var iconName = byUnicode(prefix, hexValue);\n var iconIdentifier = iconName; // Only convert the pseudo element in this :before/:after position into an icon if we haven't\n // already done so with the same prefix and iconName\n\n if (iconName && (!alreadyProcessedPseudoElement || alreadyProcessedPseudoElement.getAttribute(DATA_PREFIX) !== prefix || alreadyProcessedPseudoElement.getAttribute(DATA_ICON) !== iconIdentifier)) {\n node.setAttribute(pendingAttribute, iconIdentifier);\n\n if (alreadyProcessedPseudoElement) {\n // Delete the old one, since we're replacing it with a new one\n node.removeChild(alreadyProcessedPseudoElement);\n }\n\n var meta = blankMeta();\n var extra = meta.extra;\n extra.attributes[DATA_FA_PSEUDO_ELEMENT] = position;\n findIcon(iconName, prefix).then(function (main) {\n var abstract = makeInlineSvgAbstract(_objectSpread({}, meta, {\n icons: {\n main: main,\n mask: emptyCanonicalIcon()\n },\n prefix: prefix,\n iconName: iconIdentifier,\n extra: extra,\n watchable: true\n }));\n var element = DOCUMENT.createElement('svg');\n\n if (position === ':before') {\n node.insertBefore(element, node.firstChild);\n } else {\n node.appendChild(element);\n }\n\n element.outerHTML = abstract.map(function (a) {\n return toHtml(a);\n }).join('\\n');\n node.removeAttribute(pendingAttribute);\n resolve();\n }).catch(reject);\n } else {\n resolve();\n }\n } else {\n resolve();\n }\n });\n}\n\nfunction replace(node) {\n return picked.all([replaceForPosition(node, ':before'), replaceForPosition(node, ':after')]);\n}\n\nfunction processable(node) {\n return node.parentNode !== document.head && !~TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS.indexOf(node.tagName.toUpperCase()) && !node.getAttribute(DATA_FA_PSEUDO_ELEMENT) && (!node.parentNode || node.parentNode.tagName !== 'svg');\n}\n\nfunction searchPseudoElements (root) {\n if (!IS_DOM) return;\n return new picked(function (resolve, reject) {\n var operations = toArray(root.querySelectorAll('*')).filter(processable).map(replace);\n var end = perf.begin('searchPseudoElements');\n disableObservation();\n picked.all(operations).then(function () {\n end();\n enableObservation();\n resolve();\n }).catch(function () {\n end();\n enableObservation();\n reject();\n });\n });\n}\n\nvar baseStyles = \"svg:not(:root).svg-inline--fa {\\n overflow: visible;\\n}\\n\\n.svg-inline--fa {\\n display: inline-block;\\n font-size: inherit;\\n height: 1em;\\n overflow: visible;\\n vertical-align: -0.125em;\\n}\\n.svg-inline--fa.fa-lg {\\n vertical-align: -0.225em;\\n}\\n.svg-inline--fa.fa-w-1 {\\n width: 0.0625em;\\n}\\n.svg-inline--fa.fa-w-2 {\\n width: 0.125em;\\n}\\n.svg-inline--fa.fa-w-3 {\\n width: 0.1875em;\\n}\\n.svg-inline--fa.fa-w-4 {\\n width: 0.25em;\\n}\\n.svg-inline--fa.fa-w-5 {\\n width: 0.3125em;\\n}\\n.svg-inline--fa.fa-w-6 {\\n width: 0.375em;\\n}\\n.svg-inline--fa.fa-w-7 {\\n width: 0.4375em;\\n}\\n.svg-inline--fa.fa-w-8 {\\n width: 0.5em;\\n}\\n.svg-inline--fa.fa-w-9 {\\n width: 0.5625em;\\n}\\n.svg-inline--fa.fa-w-10 {\\n width: 0.625em;\\n}\\n.svg-inline--fa.fa-w-11 {\\n width: 0.6875em;\\n}\\n.svg-inline--fa.fa-w-12 {\\n width: 0.75em;\\n}\\n.svg-inline--fa.fa-w-13 {\\n width: 0.8125em;\\n}\\n.svg-inline--fa.fa-w-14 {\\n width: 0.875em;\\n}\\n.svg-inline--fa.fa-w-15 {\\n width: 0.9375em;\\n}\\n.svg-inline--fa.fa-w-16 {\\n width: 1em;\\n}\\n.svg-inline--fa.fa-w-17 {\\n width: 1.0625em;\\n}\\n.svg-inline--fa.fa-w-18 {\\n width: 1.125em;\\n}\\n.svg-inline--fa.fa-w-19 {\\n width: 1.1875em;\\n}\\n.svg-inline--fa.fa-w-20 {\\n width: 1.25em;\\n}\\n.svg-inline--fa.fa-pull-left {\\n margin-right: 0.3em;\\n width: auto;\\n}\\n.svg-inline--fa.fa-pull-right {\\n margin-left: 0.3em;\\n width: auto;\\n}\\n.svg-inline--fa.fa-border {\\n height: 1.5em;\\n}\\n.svg-inline--fa.fa-li {\\n width: 2em;\\n}\\n.svg-inline--fa.fa-fw {\\n width: 1.25em;\\n}\\n\\n.fa-layers svg.svg-inline--fa {\\n bottom: 0;\\n left: 0;\\n margin: auto;\\n position: absolute;\\n right: 0;\\n top: 0;\\n}\\n\\n.fa-layers {\\n display: inline-block;\\n height: 1em;\\n position: relative;\\n text-align: center;\\n vertical-align: -0.125em;\\n width: 1em;\\n}\\n.fa-layers svg.svg-inline--fa {\\n -webkit-transform-origin: center center;\\n transform-origin: center center;\\n}\\n\\n.fa-layers-counter, .fa-layers-text {\\n display: inline-block;\\n position: absolute;\\n text-align: center;\\n}\\n\\n.fa-layers-text {\\n left: 50%;\\n top: 50%;\\n -webkit-transform: translate(-50%, -50%);\\n transform: translate(-50%, -50%);\\n -webkit-transform-origin: center center;\\n transform-origin: center center;\\n}\\n\\n.fa-layers-counter {\\n background-color: #ff253a;\\n border-radius: 1em;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n color: #fff;\\n height: 1.5em;\\n line-height: 1;\\n max-width: 5em;\\n min-width: 1.5em;\\n overflow: hidden;\\n padding: 0.25em;\\n right: 0;\\n text-overflow: ellipsis;\\n top: 0;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: top right;\\n transform-origin: top right;\\n}\\n\\n.fa-layers-bottom-right {\\n bottom: 0;\\n right: 0;\\n top: auto;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: bottom right;\\n transform-origin: bottom right;\\n}\\n\\n.fa-layers-bottom-left {\\n bottom: 0;\\n left: 0;\\n right: auto;\\n top: auto;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: bottom left;\\n transform-origin: bottom left;\\n}\\n\\n.fa-layers-top-right {\\n right: 0;\\n top: 0;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: top right;\\n transform-origin: top right;\\n}\\n\\n.fa-layers-top-left {\\n left: 0;\\n right: auto;\\n top: 0;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: top left;\\n transform-origin: top left;\\n}\\n\\n.fa-lg {\\n font-size: 1.3333333333em;\\n line-height: 0.75em;\\n vertical-align: -0.0667em;\\n}\\n\\n.fa-xs {\\n font-size: 0.75em;\\n}\\n\\n.fa-sm {\\n font-size: 0.875em;\\n}\\n\\n.fa-1x {\\n font-size: 1em;\\n}\\n\\n.fa-2x {\\n font-size: 2em;\\n}\\n\\n.fa-3x {\\n font-size: 3em;\\n}\\n\\n.fa-4x {\\n font-size: 4em;\\n}\\n\\n.fa-5x {\\n font-size: 5em;\\n}\\n\\n.fa-6x {\\n font-size: 6em;\\n}\\n\\n.fa-7x {\\n font-size: 7em;\\n}\\n\\n.fa-8x {\\n font-size: 8em;\\n}\\n\\n.fa-9x {\\n font-size: 9em;\\n}\\n\\n.fa-10x {\\n font-size: 10em;\\n}\\n\\n.fa-fw {\\n text-align: center;\\n width: 1.25em;\\n}\\n\\n.fa-ul {\\n list-style-type: none;\\n margin-left: 2.5em;\\n padding-left: 0;\\n}\\n.fa-ul > li {\\n position: relative;\\n}\\n\\n.fa-li {\\n left: -2em;\\n position: absolute;\\n text-align: center;\\n width: 2em;\\n line-height: inherit;\\n}\\n\\n.fa-border {\\n border: solid 0.08em #eee;\\n border-radius: 0.1em;\\n padding: 0.2em 0.25em 0.15em;\\n}\\n\\n.fa-pull-left {\\n float: left;\\n}\\n\\n.fa-pull-right {\\n float: right;\\n}\\n\\n.fa.fa-pull-left,\\n.fas.fa-pull-left,\\n.far.fa-pull-left,\\n.fal.fa-pull-left,\\n.fab.fa-pull-left {\\n margin-right: 0.3em;\\n}\\n.fa.fa-pull-right,\\n.fas.fa-pull-right,\\n.far.fa-pull-right,\\n.fal.fa-pull-right,\\n.fab.fa-pull-right {\\n margin-left: 0.3em;\\n}\\n\\n.fa-spin {\\n -webkit-animation: fa-spin 2s infinite linear;\\n animation: fa-spin 2s infinite linear;\\n}\\n\\n.fa-pulse {\\n -webkit-animation: fa-spin 1s infinite steps(8);\\n animation: fa-spin 1s infinite steps(8);\\n}\\n\\n@-webkit-keyframes fa-spin {\\n 0% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n\\n@keyframes fa-spin {\\n 0% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n.fa-rotate-90 {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)\\\";\\n -webkit-transform: rotate(90deg);\\n transform: rotate(90deg);\\n}\\n\\n.fa-rotate-180 {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)\\\";\\n -webkit-transform: rotate(180deg);\\n transform: rotate(180deg);\\n}\\n\\n.fa-rotate-270 {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)\\\";\\n -webkit-transform: rotate(270deg);\\n transform: rotate(270deg);\\n}\\n\\n.fa-flip-horizontal {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)\\\";\\n -webkit-transform: scale(-1, 1);\\n transform: scale(-1, 1);\\n}\\n\\n.fa-flip-vertical {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\\\";\\n -webkit-transform: scale(1, -1);\\n transform: scale(1, -1);\\n}\\n\\n.fa-flip-both, .fa-flip-horizontal.fa-flip-vertical {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\\\";\\n -webkit-transform: scale(-1, -1);\\n transform: scale(-1, -1);\\n}\\n\\n:root .fa-rotate-90,\\n:root .fa-rotate-180,\\n:root .fa-rotate-270,\\n:root .fa-flip-horizontal,\\n:root .fa-flip-vertical,\\n:root .fa-flip-both {\\n -webkit-filter: none;\\n filter: none;\\n}\\n\\n.fa-stack {\\n display: inline-block;\\n height: 2em;\\n position: relative;\\n width: 2.5em;\\n}\\n\\n.fa-stack-1x,\\n.fa-stack-2x {\\n bottom: 0;\\n left: 0;\\n margin: auto;\\n position: absolute;\\n right: 0;\\n top: 0;\\n}\\n\\n.svg-inline--fa.fa-stack-1x {\\n height: 1em;\\n width: 1.25em;\\n}\\n.svg-inline--fa.fa-stack-2x {\\n height: 2em;\\n width: 2.5em;\\n}\\n\\n.fa-inverse {\\n color: #fff;\\n}\\n\\n.sr-only {\\n border: 0;\\n clip: rect(0, 0, 0, 0);\\n height: 1px;\\n margin: -1px;\\n overflow: hidden;\\n padding: 0;\\n position: absolute;\\n width: 1px;\\n}\\n\\n.sr-only-focusable:active, .sr-only-focusable:focus {\\n clip: auto;\\n height: auto;\\n margin: 0;\\n overflow: visible;\\n position: static;\\n width: auto;\\n}\\n\\n.svg-inline--fa .fa-primary {\\n fill: var(--fa-primary-color, currentColor);\\n opacity: 1;\\n opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa .fa-secondary {\\n fill: var(--fa-secondary-color, currentColor);\\n opacity: 0.4;\\n opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-primary {\\n opacity: 0.4;\\n opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-secondary {\\n opacity: 1;\\n opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa mask .fa-primary,\\n.svg-inline--fa mask .fa-secondary {\\n fill: black;\\n}\\n\\n.fad.fa-inverse {\\n color: #fff;\\n}\";\n\nfunction css () {\n var dfp = DEFAULT_FAMILY_PREFIX;\n var drc = DEFAULT_REPLACEMENT_CLASS;\n var fp = config.familyPrefix;\n var rc = config.replacementClass;\n var s = baseStyles;\n\n if (fp !== dfp || rc !== drc) {\n var dPatt = new RegExp(\"\\\\.\".concat(dfp, \"\\\\-\"), 'g');\n var customPropPatt = new RegExp(\"\\\\--\".concat(dfp, \"\\\\-\"), 'g');\n var rPatt = new RegExp(\"\\\\.\".concat(drc), 'g');\n s = s.replace(dPatt, \".\".concat(fp, \"-\")).replace(customPropPatt, \"--\".concat(fp, \"-\")).replace(rPatt, \".\".concat(rc));\n }\n\n return s;\n}\n\nvar Library =\n/*#__PURE__*/\nfunction () {\n function Library() {\n _classCallCheck(this, Library);\n\n this.definitions = {};\n }\n\n _createClass(Library, [{\n key: \"add\",\n value: function add() {\n var _this = this;\n\n for (var _len = arguments.length, definitions = new Array(_len), _key = 0; _key < _len; _key++) {\n definitions[_key] = arguments[_key];\n }\n\n var additions = definitions.reduce(this._pullDefinitions, {});\n Object.keys(additions).forEach(function (key) {\n _this.definitions[key] = _objectSpread({}, _this.definitions[key] || {}, additions[key]);\n defineIcons(key, additions[key]);\n build();\n });\n }\n }, {\n key: \"reset\",\n value: function reset() {\n this.definitions = {};\n }\n }, {\n key: \"_pullDefinitions\",\n value: function _pullDefinitions(additions, definition) {\n var normalized = definition.prefix && definition.iconName && definition.icon ? {\n 0: definition\n } : definition;\n Object.keys(normalized).map(function (key) {\n var _normalized$key = normalized[key],\n prefix = _normalized$key.prefix,\n iconName = _normalized$key.iconName,\n icon = _normalized$key.icon;\n if (!additions[prefix]) additions[prefix] = {};\n additions[prefix][iconName] = icon;\n });\n return additions;\n }\n }]);\n\n return Library;\n}();\n\nfunction ensureCss() {\n if (config.autoAddCss && !_cssInserted) {\n insertCss(css());\n\n _cssInserted = true;\n }\n}\n\nfunction apiObject(val, abstractCreator) {\n Object.defineProperty(val, 'abstract', {\n get: abstractCreator\n });\n Object.defineProperty(val, 'html', {\n get: function get() {\n return val.abstract.map(function (a) {\n return toHtml(a);\n });\n }\n });\n Object.defineProperty(val, 'node', {\n get: function get() {\n if (!IS_DOM) return;\n var container = DOCUMENT.createElement('div');\n container.innerHTML = val.html;\n return container.children;\n }\n });\n return val;\n}\n\nfunction findIconDefinition(iconLookup) {\n var _iconLookup$prefix = iconLookup.prefix,\n prefix = _iconLookup$prefix === void 0 ? 'fa' : _iconLookup$prefix,\n iconName = iconLookup.iconName;\n if (!iconName) return;\n return iconFromMapping(library.definitions, prefix, iconName) || iconFromMapping(namespace.styles, prefix, iconName);\n}\n\nfunction resolveIcons(next) {\n return function (maybeIconDefinition) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var iconDefinition = (maybeIconDefinition || {}).icon ? maybeIconDefinition : findIconDefinition(maybeIconDefinition || {});\n var mask = params.mask;\n\n if (mask) {\n mask = (mask || {}).icon ? mask : findIconDefinition(mask || {});\n }\n\n return next(iconDefinition, _objectSpread({}, params, {\n mask: mask\n }));\n };\n}\n\nvar library = new Library();\nvar noAuto = function noAuto() {\n config.autoReplaceSvg = false;\n config.observeMutations = false;\n disconnect();\n};\nvar _cssInserted = false;\nvar dom = {\n i2svg: function i2svg() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (IS_DOM) {\n ensureCss();\n var _params$node = params.node,\n node = _params$node === void 0 ? DOCUMENT : _params$node,\n _params$callback = params.callback,\n callback = _params$callback === void 0 ? function () {} : _params$callback;\n\n if (config.searchPseudoElements) {\n searchPseudoElements(node);\n }\n\n return onTree(node, callback);\n } else {\n return picked.reject('Operation requires a DOM of some kind.');\n }\n },\n css: css,\n insertCss: function insertCss$$1() {\n if (!_cssInserted) {\n insertCss(css());\n\n _cssInserted = true;\n }\n },\n watch: function watch() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var autoReplaceSvgRoot = params.autoReplaceSvgRoot,\n observeMutationsRoot = params.observeMutationsRoot;\n\n if (config.autoReplaceSvg === false) {\n config.autoReplaceSvg = true;\n }\n\n config.observeMutations = true;\n domready(function () {\n autoReplace({\n autoReplaceSvgRoot: autoReplaceSvgRoot\n });\n observe({\n treeCallback: onTree,\n nodeCallback: onNode,\n pseudoElementsCallback: searchPseudoElements,\n observeMutationsRoot: observeMutationsRoot\n });\n });\n }\n};\nvar parse = {\n transform: function transform(transformString) {\n return parseTransformString(transformString);\n }\n};\nvar icon = resolveIcons(function (iconDefinition) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$transform = params.transform,\n transform = _params$transform === void 0 ? meaninglessTransform : _params$transform,\n _params$symbol = params.symbol,\n symbol = _params$symbol === void 0 ? false : _params$symbol,\n _params$mask = params.mask,\n mask = _params$mask === void 0 ? null : _params$mask,\n _params$maskId = params.maskId,\n maskId = _params$maskId === void 0 ? null : _params$maskId,\n _params$title = params.title,\n title = _params$title === void 0 ? null : _params$title,\n _params$titleId = params.titleId,\n titleId = _params$titleId === void 0 ? null : _params$titleId,\n _params$classes = params.classes,\n classes = _params$classes === void 0 ? [] : _params$classes,\n _params$attributes = params.attributes,\n attributes = _params$attributes === void 0 ? {} : _params$attributes,\n _params$styles = params.styles,\n styles = _params$styles === void 0 ? {} : _params$styles;\n if (!iconDefinition) return;\n var prefix = iconDefinition.prefix,\n iconName = iconDefinition.iconName,\n icon = iconDefinition.icon;\n return apiObject(_objectSpread({\n type: 'icon'\n }, iconDefinition), function () {\n ensureCss();\n\n if (config.autoA11y) {\n if (title) {\n attributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(titleId || nextUniqueId());\n } else {\n attributes['aria-hidden'] = 'true';\n attributes['focusable'] = 'false';\n }\n }\n\n return makeInlineSvgAbstract({\n icons: {\n main: asFoundIcon(icon),\n mask: mask ? asFoundIcon(mask.icon) : {\n found: false,\n width: null,\n height: null,\n icon: {}\n }\n },\n prefix: prefix,\n iconName: iconName,\n transform: _objectSpread({}, meaninglessTransform, transform),\n symbol: symbol,\n title: title,\n maskId: maskId,\n titleId: titleId,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: classes\n }\n });\n });\n});\nvar text = function text(content) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$transform2 = params.transform,\n transform = _params$transform2 === void 0 ? meaninglessTransform : _params$transform2,\n _params$title2 = params.title,\n title = _params$title2 === void 0 ? null : _params$title2,\n _params$classes2 = params.classes,\n classes = _params$classes2 === void 0 ? [] : _params$classes2,\n _params$attributes2 = params.attributes,\n attributes = _params$attributes2 === void 0 ? {} : _params$attributes2,\n _params$styles2 = params.styles,\n styles = _params$styles2 === void 0 ? {} : _params$styles2;\n return apiObject({\n type: 'text',\n content: content\n }, function () {\n ensureCss();\n return makeLayersTextAbstract({\n content: content,\n transform: _objectSpread({}, meaninglessTransform, transform),\n title: title,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: [\"\".concat(config.familyPrefix, \"-layers-text\")].concat(_toConsumableArray(classes))\n }\n });\n });\n};\nvar counter = function counter(content) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$title3 = params.title,\n title = _params$title3 === void 0 ? null : _params$title3,\n _params$classes3 = params.classes,\n classes = _params$classes3 === void 0 ? [] : _params$classes3,\n _params$attributes3 = params.attributes,\n attributes = _params$attributes3 === void 0 ? {} : _params$attributes3,\n _params$styles3 = params.styles,\n styles = _params$styles3 === void 0 ? {} : _params$styles3;\n return apiObject({\n type: 'counter',\n content: content\n }, function () {\n ensureCss();\n return makeLayersCounterAbstract({\n content: content.toString(),\n title: title,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: [\"\".concat(config.familyPrefix, \"-layers-counter\")].concat(_toConsumableArray(classes))\n }\n });\n });\n};\nvar layer = function layer(assembler) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$classes4 = params.classes,\n classes = _params$classes4 === void 0 ? [] : _params$classes4;\n return apiObject({\n type: 'layer'\n }, function () {\n ensureCss();\n var children = [];\n assembler(function (args) {\n Array.isArray(args) ? args.map(function (a) {\n children = children.concat(a.abstract);\n }) : children = children.concat(args.abstract);\n });\n return [{\n tag: 'span',\n attributes: {\n class: [\"\".concat(config.familyPrefix, \"-layers\")].concat(_toConsumableArray(classes)).join(' ')\n },\n children: children\n }];\n });\n};\nvar api = {\n noAuto: noAuto,\n config: config,\n dom: dom,\n library: library,\n parse: parse,\n findIconDefinition: findIconDefinition,\n icon: icon,\n text: text,\n counter: counter,\n layer: layer,\n toHtml: toHtml\n};\n\nvar autoReplace = function autoReplace() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var _params$autoReplaceSv = params.autoReplaceSvgRoot,\n autoReplaceSvgRoot = _params$autoReplaceSv === void 0 ? DOCUMENT : _params$autoReplaceSv;\n if ((Object.keys(namespace.styles).length > 0 || config.autoFetchSvg) && IS_DOM && config.autoReplaceSvg) api.dom.i2svg({\n node: autoReplaceSvgRoot\n });\n};\n\nexport { icon, noAuto, config, toHtml, layer, text, counter, library, dom, parse, findIconDefinition };\n","/**!\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 for (var i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n return 1;\n }\n }\n return 0;\n}();\n\nfunction microtaskDebounce(fn) {\n var called = false;\n return function () {\n if (called) {\n return;\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/**\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*/\nvar debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce;\n\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 */\nfunction isFunction(functionToCheck) {\n var getType = {};\n return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';\n}\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 */\nfunction getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n var window = element.ownerDocument.defaultView;\n var css = window.getComputedStyle(element, null);\n return property ? css[property] : css;\n}\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 */\nfunction getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\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 */\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 case '#document':\n return element.body;\n }\n\n // Firefox want us to check `-x` and `-y` variations as well\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/**\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 */\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/**\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 */\nfunction isIE(version) {\n if (version === 11) {\n return isIE11;\n }\n if (version === 10) {\n return isIE10;\n }\n return isIE11 || isIE10;\n}\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 */\nfunction getOffsetParent(element) {\n if (!element) {\n return document.documentElement;\n }\n\n var noOffsetParent = isIE(10) ? document.body : null;\n\n // NOTE: 1 DOM access here\n var offsetParent = element.offsetParent || null;\n // Skip hidden elements which don't have an offsetParent\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 }\n\n // .offsetParent will return the closest TH, TD or TABLE in case\n // no offsetParent is present, I hate this job...\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 return nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element;\n}\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 */\nfunction getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\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 */\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 }\n\n // Here we make sure to give as \"start\" the element that comes first in the DOM\n var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING;\n var start = order ? element1 : element2;\n var end = order ? element2 : element1;\n\n // Get common ancestor container\n var range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n var commonAncestorContainer = range.commonAncestorContainer;\n\n // 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 }\n\n // one of the nodes is inside shadowDOM, find which one\n var element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\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 */\nfunction getScroll(element) {\n var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top';\n\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/*\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 */\nfunction includeScroll(rect, element) {\n var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\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/*\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\nfunction getBordersSize(styles, axis) {\n var sideA = axis === 'x' ? 'Left' : 'Top';\n var sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\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\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\n\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/**\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 */\nfunction getClientRect(offsets) {\n return _extends({}, offsets, {\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height\n });\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 */\nfunction getBoundingClientRect(element) {\n var rect = {};\n\n // 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 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 };\n\n // subtract scrollbar size from sizes\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\n var horizScrollbar = element.offsetWidth - width;\n var vertScrollbar = element.offsetHeight - height;\n\n // 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 if (horizScrollbar || vertScrollbar) {\n var styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n\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\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\n var styles = getStyleComputedProperty(parent);\n var borderTopWidth = parseFloat(styles.borderTopWidth);\n var borderLeftWidth = parseFloat(styles.borderLeftWidth);\n\n // In cases where the parent is fixed, we must ignore negative scroll in offset calc\n if (fixedPosition && isHTML) {\n parentRect.top = Math.max(parentRect.top, 0);\n parentRect.left = Math.max(parentRect.left, 0);\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;\n\n // 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 if (!isIE10 && isHTML) {\n var marginTop = parseFloat(styles.marginTop);\n var marginLeft = parseFloat(styles.marginLeft);\n\n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft;\n\n // Attach marginTop and marginLeft because in some circumstances we may need them\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\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\n var scrollTop = !excludeScroll ? getScroll(html) : 0;\n var scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\n\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\n return getClientRect(offset);\n}\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 */\nfunction isFixed(element) {\n var nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n var parentNode = getParentNode(element);\n if (!parentNode) {\n return false;\n }\n return isFixed(parentNode);\n}\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\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 var el = element.parentElement;\n while (el && getStyleComputedProperty(el, 'transform') === 'none') {\n el = el.parentElement;\n }\n return el || document.documentElement;\n}\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 */\nfunction getBoundaries(popper, reference, padding, boundariesElement) {\n var fixedPosition = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n // NOTE: 1 DOM access here\n\n var boundaries = { top: 0, left: 0 };\n var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n\n // Handle viewport case\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 if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(reference));\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);\n\n // In case of HTML, we need a different computation\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 }\n\n // Add paddings\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\n return boundaries;\n}\n\nfunction getArea(_ref) {\n var width = _ref.width,\n height = _ref.height;\n\n return width * height;\n}\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 */\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\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\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\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\n var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key;\n\n var variation = placement.split('-')[1];\n\n return computedPlacement + (variation ? '-' + variation : '');\n}\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 */\nfunction getReferenceOffsets(state, popper, reference) {\n var fixedPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);\n}\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 */\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/**\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 */\nfunction getOppositePlacement(placement) {\n var hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\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 */\nfunction getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n // Get popper node sizes\n var popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n var popperOffsets = {\n width: popperRect.width,\n height: popperRect.height\n };\n\n // depending by the popper placement we have to compute its offsets slightly differently\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\n popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2;\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/**\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 */\nfunction find(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n }\n\n // use `filter` to obtain the same behavior of `find`\n return arr.filter(check)[0];\n}\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 */\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 }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n var match = find(arr, function (obj) {\n return obj[prop] === value;\n });\n return arr.indexOf(match);\n}\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 */\nfunction runModifiers(modifiers, data, ends) {\n var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\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 var fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\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\n data = fn(data, modifier);\n }\n });\n\n return data;\n}\n\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.
\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\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 };\n\n // compute reference element offsets\n data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference, this.options.positionFixed);\n\n // 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 data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding);\n\n // store the computed placement inside `originalPlacement`\n data.originalPlacement = data.placement;\n\n data.positionFixed = this.options.positionFixed;\n\n // compute the popper offsets\n data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement);\n\n data.offsets.popper.position = this.options.positionFixed ? 'fixed' : 'absolute';\n\n // run the modifiers\n data = runModifiers(this.modifiers, data);\n\n // the first `update` will call `onCreate` callback\n // the other ones will call `onUpdate` callback\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/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\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/**\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 */\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 if (typeof document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n\n/**\n * Destroys the popper.\n * @method\n * @memberof Popper\n */\nfunction destroy() {\n this.state.isDestroyed = true;\n\n // touch DOM only if `applyStyle` modifier is enabled\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();\n\n // remove the popper if user explicitly asked for the deletion on destroy\n // do not use `remove` because IE11 doesn't support it\n if (this.options.removeOnDestroy) {\n this.popper.parentNode.removeChild(this.popper);\n }\n return this;\n}\n\n/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\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, { passive: true });\n\n if (!isBody) {\n attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents);\n }\n scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction setupEventListeners(reference, options, state, updateBound) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n // Scroll event listener on scroll parents\n var scrollElement = getScrollParent(reference);\n attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents);\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n\n return state;\n}\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 */\nfunction enableEventListeners() {\n if (!this.state.eventsEnabled) {\n this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate);\n }\n}\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound);\n\n // Remove scroll event listener on scroll parents\n state.scrollParents.forEach(function (target) {\n target.removeEventListener('scroll', state.updateBound);\n });\n\n // Reset state\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\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 */\nfunction disableEventListeners() {\n if (this.state.eventsEnabled) {\n cancelAnimationFrame(this.scheduleUpdate);\n this.state = removeEventListeners(this.reference, this.state);\n }\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 */\nfunction isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\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 */\nfunction setStyles(element, styles) {\n Object.keys(styles).forEach(function (prop) {\n var unit = '';\n // add unit if the value is numeric and is one of the following\n if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\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 */\nfunction setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function (prop) {\n var value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\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 */\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);\n\n // any property present in `data.attributes` will be applied to the popper,\n // they will be set as HTML attributes of the element\n setAttributes(data.instance.popper, data.attributes);\n\n // if arrowElement is defined and arrowStyles has some properties\n if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n setStyles(data.arrowElement, data.arrowStyles);\n }\n\n return data;\n}\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 */\nfunction applyStyleOnLoad(reference, popper, options, modifierOptions, state) {\n // compute reference element offsets\n var referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed);\n\n // 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 var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding);\n\n popper.setAttribute('x-placement', placement);\n\n // Apply `position` to popper before anything else because\n // without the position applied we can't guarantee correct computations\n setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' });\n\n return options;\n}\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 */\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\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\n var horizontalToInteger = !shouldRound ? noRound : isVertical || isVariation || sameWidthParity ? round : floor;\n var verticalToInteger = !shouldRound ? noRound : round;\n\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/**\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 */\nfunction computeStyle(data, options) {\n var x = options.x,\n y = options.y;\n var popper = data.offsets.popper;\n\n // 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 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 var gpuAcceleration = legacyGpuAccelerationOption !== undefined ? legacyGpuAccelerationOption : options.gpuAcceleration;\n\n var offsetParent = getOffsetParent(data.instance.popper);\n var offsetParentRect = getBoundingClientRect(offsetParent);\n\n // Styles\n var styles = {\n position: popper.position\n };\n\n var offsets = getRoundedOffsets(data, window.devicePixelRatio < 2 || !isFirefox);\n\n var sideA = x === 'bottom' ? 'top' : 'bottom';\n var sideB = y === 'right' ? 'left' : 'right';\n\n // 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 var prefixedProperty = getSupportedPropertyName('transform');\n\n // 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 var left = void 0,\n top = void 0;\n if (sideA === 'bottom') {\n // when offsetParent is 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 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 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 }\n\n // Attributes\n var attributes = {\n 'x-placement': data.placement\n };\n\n // Update `data` attributes, styles and arrowStyles\n data.attributes = _extends({}, attributes, data.attributes);\n data.styles = _extends({}, styles, data.styles);\n data.arrowStyles = _extends({}, data.offsets.arrow, data.arrowStyles);\n\n return data;\n}\n\n/**\n * Helper used to know if the given modifier depends from another one.
\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 */\nfunction isModifierRequired(modifiers, requestingName, requestedName) {\n var requesting = find(modifiers, function (_ref) {\n var name = _ref.name;\n return name === requestingName;\n });\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 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 return isRequired;\n}\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 */\nfunction arrow(data, options) {\n var _data$offsets$arrow;\n\n // arrow depends on keepTogether in order to work\n if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n return data;\n }\n\n var arrowElement = options.element;\n\n // if arrowElement is a string, suppose it's a CSS selector\n if (typeof arrowElement === 'string') {\n arrowElement = data.instance.popper.querySelector(arrowElement);\n\n // if arrowElement is not found, don't run the modifier\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\n var isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\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\n //\n // extends keepTogether behavior making sure the popper and its\n // reference have enough pixels in conjunction\n //\n\n // top/left side\n if (reference[opSide] - arrowElementSize < popper[side]) {\n data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize);\n }\n // bottom/right side\n if (reference[side] + arrowElementSize > popper[opSide]) {\n data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide];\n }\n data.offsets.popper = getClientRect(data.offsets.popper);\n\n // compute center of the popper\n var center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\n\n // Compute the sideValue using the updated popper offsets\n // take popper margin in account because we don't have this info available\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;\n\n // prevent arrowElement from being placed not contiguously to its popper\n sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n\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\n return data;\n}\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 */\nfunction getOppositeVariation(variation) {\n if (variation === 'end') {\n return 'start';\n } else if (variation === 'start') {\n return 'end';\n }\n return variation;\n}\n\n/**\n * List of accepted placements to use as values of the `placement` option.
\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.
\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 */\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'];\n\n// Get rid of `auto` `auto-start` and `auto-end`\nvar validPlacements = placements.slice(3);\n\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 */\nfunction clockwise(placement) {\n var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\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/**\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 */\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\n var placement = data.placement.split('-')[0];\n var placementOpposite = getOppositePlacement(placement);\n var variation = data.placement.split('-')[1] || '';\n\n var flipOrder = [];\n\n switch (options.behavior) {\n case BEHAVIORS.FLIP:\n flipOrder = [placement, placementOpposite];\n break;\n case BEHAVIORS.CLOCKWISE:\n flipOrder = clockwise(placement);\n break;\n case BEHAVIORS.COUNTERCLOCKWISE:\n flipOrder = clockwise(placement, true);\n break;\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\n var popperOffsets = data.offsets.popper;\n var refOffsets = data.offsets.reference;\n\n // using floor because the reference offsets may contain decimals we are not going to consider here\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\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\n var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom;\n\n // flip the variation if required\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n\n // flips variation if reference element overflows boundaries\n var flippedVariationByRef = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom);\n\n // flips variation if popper content overflows boundaries\n var flippedVariationByContent = !!options.flipVariationsByContent && (isVertical && variation === 'start' && overflowsRight || isVertical && variation === 'end' && overflowsLeft || !isVertical && variation === 'start' && overflowsBottom || !isVertical && variation === 'end' && overflowsTop);\n\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 : '');\n\n // this object contains `position`, we want to preserve it along with\n // any additional property we may add in the future\n data.offsets.popper = _extends({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement));\n\n data = runModifiers(data.instance.modifiers, data, 'flip');\n }\n });\n return data;\n}\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 */\nfunction keepTogether(data) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\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 if (popper[opSide] > floor(reference[side])) {\n data.offsets.popper[opSide] = floor(reference[side]);\n }\n\n return data;\n}\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 */\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];\n\n // If it's not a number it's an operator, I guess\n if (!value) {\n return str;\n }\n\n if (unit.indexOf('%') === 0) {\n var element = void 0;\n switch (unit) {\n case '%p':\n element = popperOffsets;\n break;\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 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 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/**\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 */\nfunction parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) {\n var offsets = [0, 0];\n\n // 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 var useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n\n // 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 var fragments = offset.split(/(\\+|\\-)/).map(function (frag) {\n return frag.trim();\n });\n\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 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 }\n\n // If divider is found, we divide the list of values and operands to divide\n // them by ofset X and Y.\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];\n\n // Convert the values with units to absolute pixels to allow our computations\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\n // 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 }, [])\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 });\n\n // Loop trough the offsets arrays and execute the operations\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/**\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 */\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\n var basePlacement = placement.split('-')[0];\n\n var offsets = void 0;\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/**\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 */\nfunction preventOverflow(data, options) {\n var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper);\n\n // 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 if (data.instance.reference === boundariesElement) {\n boundariesElement = getOffsetParent(boundariesElement);\n }\n\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 var transformProp = getSupportedPropertyName('transform');\n var popperStyles = data.instance.popper.style; // assignment to help minification\n var top = popperStyles.top,\n left = popperStyles.left,\n transform = popperStyles[transformProp];\n\n popperStyles.top = '';\n popperStyles.left = '';\n popperStyles[transformProp] = '';\n\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement, data.positionFixed);\n\n // NOTE: DOM access here\n // restores the original style properties after the offsets have been computed\n popperStyles.top = top;\n popperStyles.left = left;\n popperStyles[transformProp] = transform;\n\n options.boundaries = boundaries;\n\n var order = options.priority;\n var popper = data.offsets.popper;\n\n var check = {\n primary: function primary(placement) {\n var value = popper[placement];\n if (popper[placement] < boundaries[placement] && !options.escapeWithReference) {\n value = Math.max(popper[placement], boundaries[placement]);\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 if (popper[placement] > boundaries[placement] && !options.escapeWithReference) {\n value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height));\n }\n return defineProperty({}, mainSide, value);\n }\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\n data.offsets.popper = popper;\n\n return data;\n}\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 */\nfunction shift(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var shiftvariation = placement.split('-')[1];\n\n // if shift shiftvariation is specified, run the modifier\n if (shiftvariation) {\n var _data$offsets = data.offsets,\n reference = _data$offsets.reference,\n popper = _data$offsets.popper;\n\n var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n var side = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n\n var shiftOffsets = {\n start: defineProperty({}, side, reference[side]),\n end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement])\n };\n\n data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]);\n }\n\n return data;\n}\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 */\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/**\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 */\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\n var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n data.placement = getOppositePlacement(placement);\n data.offsets.popper = getClientRect(popper);\n\n return data;\n}\n\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.
\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.
\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 */\nvar modifiers = {\n /**\n * Modifier used to shift the popper on the start or end of its reference\n * element.
\n * It will read the variation of the `placement` property.
\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 /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\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.
\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.
\n * The latter is a deprecated method because it leads to confusion and will be\n * removed in v2.
\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 /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: offset,\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.
\n * We can say it has \"escaped the boundaries\" — or just \"escaped\".
\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 /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: preventOverflow,\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 * @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 * @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 /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\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 /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: arrow,\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 /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: flip,\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 * @prop {number} padding=5\n * The popper will flip if it hits the edges of the `boundariesElement`\n */\n padding: 5,\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 * @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 * @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 /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n enabled: false,\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 /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\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 /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: computeStyle,\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 * @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 * @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 /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: applyStyle,\n /** @prop {Function} */\n onLoad: applyStyleOnLoad,\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/**\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.
\n * These can be overridden using the `options` argument of Popper.js.
\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 */\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.
\n * By default, it is set to no-op.
\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.
\n * By default, it is set to no-op.
\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/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n\n// Utils\n// Methods\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 };\n\n // make update() debounced, so that it only runs at most once-per-tick\n this.update = debounce(this.update.bind(this));\n\n // with {} we create a new object with the options inside it\n this.options = _extends({}, Popper.Defaults, options);\n\n // init state\n this.state = {\n isDestroyed: false,\n isCreated: false,\n scrollParents: []\n };\n\n // get reference and popper elements (allow jQuery wrappers)\n this.reference = reference && reference.jquery ? reference[0] : reference;\n this.popper = popper && popper.jquery ? popper[0] : popper;\n\n // Deep merge modifiers options\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 });\n\n // Refactoring modifiers' list (Object => Array)\n this.modifiers = Object.keys(this.options.modifiers).map(function (name) {\n return _extends({\n name: name\n }, _this.options.modifiers[name]);\n })\n // sort the modifiers by order\n .sort(function (a, b) {\n return a.order - b.order;\n });\n\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 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 });\n\n // fire the first update to position the popper in the right place\n this.update();\n\n var eventsEnabled = this.options.eventsEnabled;\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 }\n\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 /**\n * Schedules an update. It will run on the next UI update available.\n * @method scheduleUpdate\n * @memberof Popper\n */\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/**\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.
\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;\n\nexport default Popper;\n//# sourceMappingURL=popper.js.map\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nvar prefix = 'fas';\nvar iconName = 'temperature-high';\nvar width = 512;\nvar height = 512;\nvar ligatures = [];\nvar unicode = 'f769';\nvar svgPathData = 'M416 0c-52.9 0-96 43.1-96 96s43.1 96 96 96 96-43.1 96-96-43.1-96-96-96zm0 128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm-160-16C256 50.1 205.9 0 144 0S32 50.1 32 112v166.5C12.3 303.2 0 334 0 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-34-12.3-64.9-32-89.5V112zM144 448c-44.1 0-80-35.9-80-80 0-25.5 12.2-48.9 32-63.8V112c0-26.5 21.5-48 48-48s48 21.5 48 48v192.2c19.8 14.8 32 38.3 32 63.8 0 44.1-35.9 80-80 80zm16-125.1V112c0-8.8-7.2-16-16-16s-16 7.2-16 16v210.9c-18.6 6.6-32 24.2-32 45.1 0 26.5 21.5 48 48 48s48-21.5 48-48c0-20.9-13.4-38.5-32-45.1z';\n\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [\n width,\n height,\n ligatures,\n unicode,\n svgPathData\n ]};\n\nexports.faTemperatureHigh = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = ligatures;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nvar prefix = 'fas';\nvar iconName = 'thermometer-half';\nvar width = 256;\nvar height = 512;\nvar ligatures = [];\nvar unicode = 'f2c9';\nvar svgPathData = 'M192 384c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-23.685 12.876-44.349 32-55.417V224c0-17.673 14.327-32 32-32s32 14.327 32 32v104.583c19.124 11.068 32 31.732 32 55.417zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z';\n\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [\n width,\n height,\n ligatures,\n unicode,\n svgPathData\n ]};\n\nexports.faThermometerHalf = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = ligatures;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/js/chunk-vendors.7c84295f.js b/dist/js/chunk-vendors.a1c300d6.js similarity index 92% rename from dist/js/chunk-vendors.7c84295f.js rename to dist/js/chunk-vendors.a1c300d6.js index 7fdac9d66..3d7d692f5 100644 --- a/dist/js/chunk-vendors.7c84295f.js +++ b/dist/js/chunk-vendors.a1c300d6.js @@ -22,24 +22,24 @@ * * Date: 2020-03-14 */ -function(e){var t,n,r,i,o,a,s,l,u,c,f,d,p,h,m,v,g,y,b,_="sizzle"+1*new Date,w=e.document,x=0,C=0,E=le(),T=le(),k=le(),A=le(),S=function(e,t){return e===t&&(f=!0),0},O={}.hasOwnProperty,N=[],j=N.pop,D=N.push,L=N.push,P=N.slice,I=function(e,t){for(var n=0,r=e.length;n+~]|"+M+")"+M+"*"),W=new RegExp(M+"|>"),V=new RegExp(H),X=new RegExp("^"+$+"$"),Q={ID:new RegExp("^#("+$+")"),CLASS:new RegExp("^\\.("+$+")"),TAG:new RegExp("^("+$+"|[*])"),ATTR:new RegExp("^"+q),PSEUDO:new RegExp("^"+H),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,K=/^(?:input|select|textarea|button)$/i,G=/^h\d$/i,J=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"�":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){d()},ae=_e((function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()}),{dir:"parentNode",next:"legend"});try{L.apply(N=P.call(w.childNodes),w.childNodes),N[w.childNodes.length].nodeType}catch(Ae){L={apply:N.length?function(e,t){D.apply(e,P.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(e,t,r,i){var o,s,u,c,f,h,g,y=t&&t.ownerDocument,w=t?t.nodeType:9;if(r=r||[],"string"!==typeof e||!e||1!==w&&9!==w&&11!==w)return r;if(!i&&(d(t),t=t||p,m)){if(11!==w&&(f=Z.exec(e)))if(o=f[1]){if(9===w){if(!(u=t.getElementById(o)))return r;if(u.id===o)return r.push(u),r}else if(y&&(u=y.getElementById(o))&&b(t,u)&&u.id===o)return r.push(u),r}else{if(f[2])return L.apply(r,t.getElementsByTagName(e)),r;if((o=f[3])&&n.getElementsByClassName&&t.getElementsByClassName)return L.apply(r,t.getElementsByClassName(o)),r}if(n.qsa&&!A[e+" "]&&(!v||!v.test(e))&&(1!==w||"object"!==t.nodeName.toLowerCase())){if(g=e,y=t,1===w&&(W.test(e)||U.test(e))){y=ee.test(e)&&ge(t.parentNode)||t,y===t&&n.scope||((c=t.getAttribute("id"))?c=c.replace(re,ie):t.setAttribute("id",c=_)),h=a(e),s=h.length;while(s--)h[s]=(c?"#"+c:":scope")+" "+be(h[s]);g=h.join(",")}try{return L.apply(r,y.querySelectorAll(g)),r}catch(x){A(e,!0)}finally{c===_&&t.removeAttribute("id")}}}return l(e.replace(B,"$1"),t,r,i)}function le(){var e=[];function t(n,i){return e.push(n+" ")>r.cacheLength&&delete t[e.shift()],t[n+" "]=i}return t}function ue(e){return e[_]=!0,e}function ce(e){var t=p.createElement("fieldset");try{return!!e(t)}catch(Ae){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),i=n.length;while(i--)r.attrHandle[n[i]]=t}function de(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function pe(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function he(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function me(e){return function(t){return"form"in t?t.parentNode&&!1===t.disabled?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&ae(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function ve(e){return ue((function(t){return t=+t,ue((function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))}))}))}function ge(e){return e&&"undefined"!==typeof e.getElementsByTagName&&e}for(t in n=se.support={},o=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},d=se.setDocument=function(e){var t,i,a=e?e.ownerDocument||e:w;return a!=p&&9===a.nodeType&&a.documentElement?(p=a,h=p.documentElement,m=!o(p),w!=p&&(i=p.defaultView)&&i.top!==i&&(i.addEventListener?i.addEventListener("unload",oe,!1):i.attachEvent&&i.attachEvent("onunload",oe)),n.scope=ce((function(e){return h.appendChild(e).appendChild(p.createElement("div")),"undefined"!==typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length})),n.attributes=ce((function(e){return e.className="i",!e.getAttribute("className")})),n.getElementsByTagName=ce((function(e){return e.appendChild(p.createComment("")),!e.getElementsByTagName("*").length})),n.getElementsByClassName=J.test(p.getElementsByClassName),n.getById=ce((function(e){return h.appendChild(e).id=_,!p.getElementsByName||!p.getElementsByName(_).length})),n.getById?(r.filter["ID"]=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},r.find["ID"]=function(e,t){if("undefined"!==typeof t.getElementById&&m){var n=t.getElementById(e);return n?[n]:[]}}):(r.filter["ID"]=function(e){var t=e.replace(te,ne);return function(e){var n="undefined"!==typeof e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},r.find["ID"]=function(e,t){if("undefined"!==typeof t.getElementById&&m){var n,r,i,o=t.getElementById(e);if(o){if(n=o.getAttributeNode("id"),n&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if(n=o.getAttributeNode("id"),n&&n.value===e)return[o]}return[]}}),r.find["TAG"]=n.getElementsByTagName?function(e,t){return"undefined"!==typeof t.getElementsByTagName?t.getElementsByTagName(e):n.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},r.find["CLASS"]=n.getElementsByClassName&&function(e,t){if("undefined"!==typeof t.getElementsByClassName&&m)return t.getElementsByClassName(e)},g=[],v=[],(n.qsa=J.test(p.querySelectorAll))&&(ce((function(e){var t;h.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+_+"-]").length||v.push("~="),t=p.createElement("input"),t.setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+_+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")})),ce((function(e){e.innerHTML="";var t=p.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),h.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")}))),(n.matchesSelector=J.test(y=h.matches||h.webkitMatchesSelector||h.mozMatchesSelector||h.oMatchesSelector||h.msMatchesSelector))&&ce((function(e){n.disconnectedMatch=y.call(e,"*"),y.call(e,"[s!='']:x"),g.push("!=",H)})),v=v.length&&new RegExp(v.join("|")),g=g.length&&new RegExp(g.join("|")),t=J.test(h.compareDocumentPosition),b=t||J.test(h.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},S=t?function(e,t){if(e===t)return f=!0,0;var r=!e.compareDocumentPosition-!t.compareDocumentPosition;return r||(r=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1,1&r||!n.sortDetached&&t.compareDocumentPosition(e)===r?e==p||e.ownerDocument==w&&b(w,e)?-1:t==p||t.ownerDocument==w&&b(w,t)?1:c?I(c,e)-I(c,t):0:4&r?-1:1)}:function(e,t){if(e===t)return f=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==p?-1:t==p?1:i?-1:o?1:c?I(c,e)-I(c,t):0;if(i===o)return de(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?de(a[r],s[r]):a[r]==w?-1:s[r]==w?1:0},p):p},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(d(e),n.matchesSelector&&m&&!A[t+" "]&&(!g||!g.test(t))&&(!v||!v.test(t)))try{var r=y.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(Ae){A(t,!0)}return se(t,p,null,[e]).length>0},se.contains=function(e,t){return(e.ownerDocument||e)!=p&&d(e),b(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!=p&&d(e);var i=r.attrHandle[t.toLowerCase()],o=i&&O.call(r.attrHandle,t.toLowerCase())?i(e,t,!m):void 0;return void 0!==o?o:n.attributes||!m?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,r=[],i=0,o=0;if(f=!n.detectDuplicates,c=!n.sortStable&&e.slice(0),e.sort(S),f){while(t=e[o++])t===e[o]&&(i=r.push(o));while(i--)e.splice(r[i],1)}return c=null,e},i=se.getText=function(e){var t,n="",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if("string"===typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=i(e)}else if(3===o||4===o)return e.nodeValue}else while(t=e[r++])n+=i(t);return n},r=se.selectors={cacheLength:50,createPseudo:ue,match:Q,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return Q["CHILD"].test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&V.test(n)&&(t=a(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=E[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&E(e,(function(e){return t.test("string"===typeof e.className&&e.className||"undefined"!==typeof e.getAttribute&&e.getAttribute("class")||"")}))},ATTR:function(e,t,n){return function(r){var i=se.attr(r,e);return null==i?"!="===t:!t||(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i.replace(F," ")+" ").indexOf(n)>-1:"|="===t&&(i===n||i.slice(0,n.length+1)===n+"-"))}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,l){var u,c,f,d,p,h,m=o!==a?"nextSibling":"previousSibling",v=t.parentNode,g=s&&t.nodeName.toLowerCase(),y=!l&&!s,b=!1;if(v){if(o){while(m){d=t;while(d=d[m])if(s?d.nodeName.toLowerCase()===g:1===d.nodeType)return!1;h=m="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?v.firstChild:v.lastChild],a&&y){d=v,f=d[_]||(d[_]={}),c=f[d.uniqueID]||(f[d.uniqueID]={}),u=c[e]||[],p=u[0]===x&&u[1],b=p&&u[2],d=p&&v.childNodes[p];while(d=++p&&d&&d[m]||(b=p=0)||h.pop())if(1===d.nodeType&&++b&&d===t){c[e]=[x,p,b];break}}else if(y&&(d=t,f=d[_]||(d[_]={}),c=f[d.uniqueID]||(f[d.uniqueID]={}),u=c[e]||[],p=u[0]===x&&u[1],b=p),!1===b)while(d=++p&&d&&d[m]||(b=p=0)||h.pop())if((s?d.nodeName.toLowerCase()===g:1===d.nodeType)&&++b&&(y&&(f=d[_]||(d[_]={}),c=f[d.uniqueID]||(f[d.uniqueID]={}),c[e]=[x,b]),d===t))break;return b-=i,b===r||b%r===0&&b/r>=0}}},PSEUDO:function(e,t){var n,i=r.pseudos[e]||r.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return i[_]?i(t):i.length>1?(n=[e,e,"",t],r.setFilters.hasOwnProperty(e.toLowerCase())?ue((function(e,n){var r,o=i(e,t),a=o.length;while(a--)r=I(e,o[a]),e[r]=!(n[r]=o[a])})):function(e){return i(e,0,n)}):i}},pseudos:{not:ue((function(e){var t=[],n=[],r=s(e.replace(B,"$1"));return r[_]?ue((function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))})):function(e,i,o){return t[0]=e,r(t,null,o,n),t[0]=null,!n.pop()}})),has:ue((function(e){return function(t){return se(e,t).length>0}})),contains:ue((function(e){return e=e.replace(te,ne),function(t){return(t.textContent||i(t)).indexOf(e)>-1}})),lang:ue((function(e){return X.test(e||"")||se.error("unsupported lang: "+e),e=e.replace(te,ne).toLowerCase(),function(t){var n;do{if(n=m?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-")}while((t=t.parentNode)&&1===t.nodeType);return!1}})),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===h},focus:function(e){return e===p.activeElement&&(!p.hasFocus||p.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:me(!1),disabled:me(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!r.pseudos["empty"](e)},header:function(e){return G.test(e.nodeName)},input:function(e){return K.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ve((function(){return[0]})),last:ve((function(e,t){return[t-1]})),eq:ve((function(e,t,n){return[n<0?n+t:n]})),even:ve((function(e,t){for(var n=0;nt?t:n;--r>=0;)e.push(r);return e})),gt:ve((function(e,t,n){for(var r=n<0?n+t:n;++r1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function xe(e,t,n){for(var r=0,i=t.length;r-1&&(o[u]=!(a[u]=f))}}else g=Ce(g===a?g.splice(h,g.length):g),i?i(null,a,g,l):L.apply(a,g)}))}function Te(e){for(var t,n,i,o=e.length,a=r.relative[e[0].type],s=a||r.relative[" "],l=a?1:0,c=_e((function(e){return e===t}),s,!0),f=_e((function(e){return I(t,e)>-1}),s,!0),d=[function(e,n,r){var i=!a&&(r||n!==u)||((t=n).nodeType?c(e,n,r):f(e,n,r));return t=null,i}];l1&&we(d),l>1&&be(e.slice(0,l-1).concat({value:" "===e[l-2].type?"*":""})).replace(B,"$1"),n,l0,i=e.length>0,o=function(o,a,s,l,c){var f,h,v,g=0,y="0",b=o&&[],_=[],w=u,C=o||i&&r.find["TAG"]("*",c),E=x+=null==w?1:Math.random()||.1,T=C.length;for(c&&(u=a==p||a||c);y!==T&&null!=(f=C[y]);y++){if(i&&f){h=0,a||f.ownerDocument==p||(d(f),s=!m);while(v=e[h++])if(v(f,a||p,s)){l.push(f);break}c&&(x=E)}n&&((f=!v&&f)&&g--,o&&b.push(f))}if(g+=y,n&&y!==g){h=0;while(v=t[h++])v(b,_,a,s);if(o){if(g>0)while(y--)b[y]||_[y]||(_[y]=j.call(l));_=Ce(_)}L.apply(l,_),c&&!o&&_.length>0&&g+t.length>1&&se.uniqueSort(l)}return c&&(x=E,u=w),b};return n?ue(o):o}return ye.prototype=r.filters=r.pseudos,r.setFilters=new ye,a=se.tokenize=function(e,t){var n,i,o,a,s,l,u,c=T[e+" "];if(c)return t?0:c.slice(0);s=e,l=[],u=r.preFilter;while(s){for(a in n&&!(i=z.exec(s))||(i&&(s=s.slice(i[0].length)||s),l.push(o=[])),n=!1,(i=U.exec(s))&&(n=i.shift(),o.push({value:n,type:i[0].replace(B," ")}),s=s.slice(n.length)),r.filter)!(i=Q[a].exec(s))||u[a]&&!(i=u[a](i))||(n=i.shift(),o.push({value:n,type:a,matches:i}),s=s.slice(n.length));if(!n)break}return t?s.length:s?se.error(e):T(e,l).slice(0)},s=se.compile=function(e,t){var n,r=[],i=[],o=k[e+" "];if(!o){t||(t=a(e)),n=t.length;while(n--)o=Te(t[n]),o[_]?r.push(o):i.push(o);o=k(e,ke(i,r)),o.selector=e}return o},l=se.select=function(e,t,n,i){var o,l,u,c,f,d="function"===typeof e&&e,p=!i&&a(e=d.selector||e);if(n=n||[],1===p.length){if(l=p[0]=p[0].slice(0),l.length>2&&"ID"===(u=l[0]).type&&9===t.nodeType&&m&&r.relative[l[1].type]){if(t=(r.find["ID"](u.matches[0].replace(te,ne),t)||[])[0],!t)return n;d&&(t=t.parentNode),e=e.slice(l.shift().value.length)}o=Q["needsContext"].test(e)?0:l.length;while(o--){if(u=l[o],r.relative[c=u.type])break;if((f=r.find[c])&&(i=f(u.matches[0].replace(te,ne),ee.test(l[0].type)&&ge(t.parentNode)||t))){if(l.splice(o,1),e=i.length&&be(l),!e)return L.apply(n,i),n;break}}}return(d||s(e,p))(i,t,!m,n,!t||ee.test(e)&&ge(t.parentNode)||t),n},n.sortStable=_.split("").sort(S).join("")===_,n.detectDuplicates=!!f,d(),n.sortDetached=ce((function(e){return 1&e.compareDocumentPosition(p.createElement("fieldset"))})),ce((function(e){return e.innerHTML="","#"===e.firstChild.getAttribute("href")}))||fe("type|href|height|width",(function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)})),n.attributes&&ce((function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")}))||fe("value",(function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue})),ce((function(e){return null==e.getAttribute("disabled")}))||fe(R,(function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null})),se}(n);T.find=A,T.expr=A.selectors,T.expr[":"]=T.expr.pseudos,T.uniqueSort=T.unique=A.uniqueSort,T.text=A.getText,T.isXMLDoc=A.isXML,T.contains=A.contains,T.escapeSelector=A.escape;var S=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&T(e).is(n))break;r.push(e)}return r},O=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},N=T.expr.match.needsContext;function j(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var D=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function L(e,t,n){return y(t)?T.grep(e,(function(e,r){return!!t.call(e,r,e)!==n})):t.nodeType?T.grep(e,(function(e){return e===t!==n})):"string"!==typeof t?T.grep(e,(function(e){return f.call(t,e)>-1!==n})):T.filter(t,e,n)}T.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?T.find.matchesSelector(r,e)?[r]:[]:T.find.matches(e,T.grep(t,(function(e){return 1===e.nodeType})))},T.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!==typeof e)return this.pushStack(T(e).filter((function(){for(t=0;t1?T.uniqueSort(n):n},filter:function(e){return this.pushStack(L(this,e||[],!1))},not:function(e){return this.pushStack(L(this,e||[],!0))},is:function(e){return!!L(this,"string"===typeof e&&N.test(e)?T(e):e||[],!1).length}});var P,I=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,R=T.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||P,"string"===typeof e){if(r="<"===e[0]&&">"===e[e.length-1]&&e.length>=3?[null,e,null]:I.exec(e),!r||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof T?t[0]:t,T.merge(this,T.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:_,!0)),D.test(r[1])&&T.isPlainObject(t))for(r in t)y(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return i=_.getElementById(r[2]),i&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):y(e)?void 0!==n.ready?n.ready(e):e(T):T.makeArray(e,this)};R.prototype=T.fn,P=T(_);var M=/^(?:parents|prev(?:Until|All))/,$={children:!0,contents:!0,next:!0,prev:!0};function q(e,t){while((e=e[t])&&1!==e.nodeType);return e}T.fn.extend({has:function(e){var t=T(e,this),n=t.length;return this.filter((function(){for(var e=0;e-1:1===n.nodeType&&T.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?T.uniqueSort(o):o)},index:function(e){return e?"string"===typeof e?f.call(T(e),this[0]):f.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(T.uniqueSort(T.merge(this.get(),T(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),T.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return S(e,"parentNode")},parentsUntil:function(e,t,n){return S(e,"parentNode",n)},next:function(e){return q(e,"nextSibling")},prev:function(e){return q(e,"previousSibling")},nextAll:function(e){return S(e,"nextSibling")},prevAll:function(e){return S(e,"previousSibling")},nextUntil:function(e,t,n){return S(e,"nextSibling",n)},prevUntil:function(e,t,n){return S(e,"previousSibling",n)},siblings:function(e){return O((e.parentNode||{}).firstChild,e)},children:function(e){return O(e.firstChild)},contents:function(e){return null!=e.contentDocument&&s(e.contentDocument)?e.contentDocument:(j(e,"template")&&(e=e.content||e),T.merge([],e.childNodes))}},(function(e,t){T.fn[e]=function(n,r){var i=T.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"===typeof r&&(i=T.filter(r,i)),this.length>1&&($[e]||T.uniqueSort(i),M.test(e)&&i.reverse()),this.pushStack(i)}}));var H=/[^\x20\t\r\n\f]+/g;function F(e){var t={};return T.each(e.match(H)||[],(function(e,n){t[n]=!0})),t}function B(e){return e}function z(e){throw e}function U(e,t,n,r){var i;try{e&&y(i=e.promise)?i.call(e).done(t).fail(n):e&&y(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}T.Callbacks=function(e){e="string"===typeof e?F(e):T.extend({},e);var t,n,r,i,o=[],a=[],s=-1,l=function(){for(i=i||e.once,r=t=!0;a.length;s=-1){n=a.shift();while(++s-1)o.splice(n,1),n<=s&&s--})),this},has:function(e){return e?T.inArray(e,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return i=a=[],o=n="",this},disabled:function(){return!o},lock:function(){return i=a=[],n||t||(o=n=""),this},locked:function(){return!!i},fireWith:function(e,n){return i||(n=n||[],n=[e,n.slice?n.slice():n],a.push(n),t||l()),this},fire:function(){return u.fireWith(this,arguments),this},fired:function(){return!!r}};return u},T.extend({Deferred:function(e){var t=[["notify","progress",T.Callbacks("memory"),T.Callbacks("memory"),2],["resolve","done",T.Callbacks("once memory"),T.Callbacks("once memory"),0,"resolved"],["reject","fail",T.Callbacks("once memory"),T.Callbacks("once memory"),1,"rejected"]],r="pending",i={state:function(){return r},always:function(){return o.done(arguments).fail(arguments),this},catch:function(e){return i.then(null,e)},pipe:function(){var e=arguments;return T.Deferred((function(n){T.each(t,(function(t,r){var i=y(e[r[4]])&&e[r[4]];o[r[1]]((function(){var e=i&&i.apply(this,arguments);e&&y(e.promise)?e.promise().progress(n.notify).done(n.resolve).fail(n.reject):n[r[0]+"With"](this,i?[e]:arguments)}))})),e=null})).promise()},then:function(e,r,i){var o=0;function a(e,t,r,i){return function(){var s=this,l=arguments,u=function(){var n,u;if(!(e=o&&(r!==z&&(s=void 0,l=[n]),t.rejectWith(s,l))}};e?c():(T.Deferred.getStackHook&&(c.stackTrace=T.Deferred.getStackHook()),n.setTimeout(c))}}return T.Deferred((function(n){t[0][3].add(a(0,n,y(i)?i:B,n.notifyWith)),t[1][3].add(a(0,n,y(e)?e:B)),t[2][3].add(a(0,n,y(r)?r:z))})).promise()},promise:function(e){return null!=e?T.extend(e,i):i}},o={};return T.each(t,(function(e,n){var a=n[2],s=n[5];i[n[1]]=a.add,s&&a.add((function(){r=s}),t[3-e][2].disable,t[3-e][3].disable,t[0][2].lock,t[0][3].lock),a.add(n[3].fire),o[n[0]]=function(){return o[n[0]+"With"](this===o?void 0:this,arguments),this},o[n[0]+"With"]=a.fireWith})),i.promise(o),e&&e.call(o,o),o},when:function(e){var t=arguments.length,n=t,r=Array(n),i=l.call(arguments),o=T.Deferred(),a=function(e){return function(n){r[e]=this,i[e]=arguments.length>1?l.call(arguments):n,--t||o.resolveWith(r,i)}};if(t<=1&&(U(e,o.done(a(n)).resolve,o.reject,!t),"pending"===o.state()||y(i[n]&&i[n].then)))return o.then();while(n--)U(i[n],a(n),o.reject);return o.promise()}});var W=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;T.Deferred.exceptionHook=function(e,t){n.console&&n.console.warn&&e&&W.test(e.name)&&n.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},T.readyException=function(e){n.setTimeout((function(){throw e}))};var V=T.Deferred();function X(){_.removeEventListener("DOMContentLoaded",X),n.removeEventListener("load",X),T.ready()}T.fn.ready=function(e){return V.then(e).catch((function(e){T.readyException(e)})),this},T.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--T.readyWait:T.isReady)||(T.isReady=!0,!0!==e&&--T.readyWait>0||V.resolveWith(_,[T]))}}),T.ready.then=V.then,"complete"===_.readyState||"loading"!==_.readyState&&!_.documentElement.doScroll?n.setTimeout(T.ready):(_.addEventListener("DOMContentLoaded",X),n.addEventListener("load",X));var Q=function(e,t,n,r,i,o,a){var s=0,l=e.length,u=null==n;if("object"===C(n))for(s in i=!0,n)Q(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,y(r)||(a=!0),u&&(a?(t.call(e,r),t=null):(u=t,t=function(e,t,n){return u.call(T(e),n)})),t))for(;s1,null,!0)},removeData:function(e){return this.each((function(){ne.remove(this,e)}))}}),T.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=te.get(e,t),n&&(!r||Array.isArray(n)?r=te.access(e,t,T.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=T.queue(e,t),r=n.length,i=n.shift(),o=T._queueHooks(e,t),a=function(){T.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return te.get(e,n)||te.access(e,n,{empty:T.Callbacks("once memory").add((function(){te.remove(e,[t+"queue",n])}))})}}),T.fn.extend({queue:function(e,t){var n=2;return"string"!==typeof e&&(t=e,e="fx",n--),arguments.length\x20\t\r\n\f]*)/i,_e=/^$|^module$|\/(?:java|ecma)script/i;(function(){var e=_.createDocumentFragment(),t=e.appendChild(_.createElement("div")),n=_.createElement("input");n.setAttribute("type","radio"),n.setAttribute("checked","checked"),n.setAttribute("name","t"),t.appendChild(n),g.checkClone=t.cloneNode(!0).cloneNode(!0).lastChild.checked,t.innerHTML="",g.noCloneChecked=!!t.cloneNode(!0).lastChild.defaultValue,t.innerHTML="",g.option=!!t.lastChild})();var we={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function xe(e,t){var n;return n="undefined"!==typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!==typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&j(e,t)?T.merge([e],n):n}function Ce(e,t){for(var n=0,r=e.length;n",""]);var Ee=/<|&#?\w+;/;function Te(e,t,n,r,i){for(var o,a,s,l,u,c,f=t.createDocumentFragment(),d=[],p=0,h=e.length;p-1)i&&i.push(o);else if(u=fe(o),a=xe(f.appendChild(o),"script"),u&&Ce(a),n){c=0;while(o=a[c++])_e.test(o.type||"")&&n.push(o)}return f}var ke=/^key/,Ae=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Se=/^([^.]*)(?:\.(.+)|)/;function Oe(){return!0}function Ne(){return!1}function je(e,t){return e===De()===("focus"===t)}function De(){try{return _.activeElement}catch(e){}}function Le(e,t,n,r,i,o){var a,s;if("object"===typeof t){for(s in"string"!==typeof n&&(r=r||n,n=void 0),t)Le(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"===typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Ne;else if(!i)return e;return 1===o&&(a=i,i=function(e){return T().off(e),a.apply(this,arguments)},i.guid=a.guid||(a.guid=T.guid++)),e.each((function(){T.event.add(this,t,i,r,n)}))}function Pe(e,t,n){n?(te.set(e,t,!1),T.event.add(e,t,{namespace:!1,handler:function(e){var r,i,o=te.get(this,t);if(1&e.isTrigger&&this[t]){if(o.length)(T.event.special[t]||{}).delegateType&&e.stopPropagation();else if(o=l.call(arguments),te.set(this,t,o),r=n(this,t),this[t](),i=te.get(this,t),o!==i||r?te.set(this,t,!1):i={},o!==i)return e.stopImmediatePropagation(),e.preventDefault(),i.value}else o.length&&(te.set(this,t,{value:T.event.trigger(T.extend(o[0],T.Event.prototype),o.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===te.get(e,t)&&T.event.add(e,t,Oe)}T.event={global:{},add:function(e,t,n,r,i){var o,a,s,l,u,c,f,d,p,h,m,v=te.get(e);if(Z(e)){n.handler&&(o=n,n=o.handler,i=o.selector),i&&T.find.matchesSelector(ce,i),n.guid||(n.guid=T.guid++),(l=v.events)||(l=v.events=Object.create(null)),(a=v.handle)||(a=v.handle=function(t){return"undefined"!==typeof T&&T.event.triggered!==t.type?T.event.dispatch.apply(e,arguments):void 0}),t=(t||"").match(H)||[""],u=t.length;while(u--)s=Se.exec(t[u])||[],p=m=s[1],h=(s[2]||"").split(".").sort(),p&&(f=T.event.special[p]||{},p=(i?f.delegateType:f.bindType)||p,f=T.event.special[p]||{},c=T.extend({type:p,origType:m,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&T.expr.match.needsContext.test(i),namespace:h.join(".")},o),(d=l[p])||(d=l[p]=[],d.delegateCount=0,f.setup&&!1!==f.setup.call(e,r,h,a)||e.addEventListener&&e.addEventListener(p,a)),f.add&&(f.add.call(e,c),c.handler.guid||(c.handler.guid=n.guid)),i?d.splice(d.delegateCount++,0,c):d.push(c),T.event.global[p]=!0)}},remove:function(e,t,n,r,i){var o,a,s,l,u,c,f,d,p,h,m,v=te.hasData(e)&&te.get(e);if(v&&(l=v.events)){t=(t||"").match(H)||[""],u=t.length;while(u--)if(s=Se.exec(t[u])||[],p=m=s[1],h=(s[2]||"").split(".").sort(),p){f=T.event.special[p]||{},p=(r?f.delegateType:f.bindType)||p,d=l[p]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=d.length;while(o--)c=d[o],!i&&m!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(d.splice(o,1),c.selector&&d.delegateCount--,f.remove&&f.remove.call(e,c));a&&!d.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||T.removeEvent(e,p,v.handle),delete l[p])}else for(p in l)T.event.remove(e,p+t[u],n,r,!0);T.isEmptyObject(l)&&te.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=new Array(arguments.length),l=T.event.fix(e),u=(te.get(this,"events")||Object.create(null))[l.type]||[],c=T.event.special[l.type]||{};for(s[0]=l,t=1;t=1))for(;u!==this;u=u.parentNode||this)if(1===u.nodeType&&("click"!==e.type||!0!==u.disabled)){for(o=[],a={},n=0;n-1:T.find(i,this,null,[u]).length),a[i]&&o.push(r);o.length&&s.push({elem:u,handlers:o})}return u=this,l\s*$/g;function $e(e,t){return j(e,"table")&&j(11!==t.nodeType?t:t.firstChild,"tr")&&T(e).children("tbody")[0]||e}function qe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function He(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Fe(e,t){var n,r,i,o,a,s,l;if(1===t.nodeType){if(te.hasData(e)&&(o=te.get(e),l=o.events,l))for(i in te.remove(t,"handle events"),l)for(n=0,r=l[i].length;n1&&"string"===typeof h&&!g.checkClone&&Re.test(h))return e.each((function(i){var o=e.eq(i);m&&(t[0]=h.call(this,i,o.html())),ze(o,t,n,r)}));if(d&&(i=Te(t,e[0].ownerDocument,!1,e,r),o=i.firstChild,1===i.childNodes.length&&(i=o),o||r)){for(a=T.map(xe(i,"script"),qe),s=a.length;f0&&Ce(a,!l&&xe(e,"script")),s},cleanData:function(e){for(var t,n,r,i=T.event.special,o=0;void 0!==(n=e[o]);o++)if(Z(n)){if(t=n[te.expando]){if(t.events)for(r in t.events)i[r]?T.event.remove(n,r):T.removeEvent(n,r,t.handle);n[te.expando]=void 0}n[ne.expando]&&(n[ne.expando]=void 0)}}}),T.fn.extend({detach:function(e){return Ue(this,e,!0)},remove:function(e){return Ue(this,e)},text:function(e){return Q(this,(function(e){return void 0===e?T.text(this):this.empty().each((function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)}))}),null,e,arguments.length)},append:function(){return ze(this,arguments,(function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=$e(this,e);t.appendChild(e)}}))},prepend:function(){return ze(this,arguments,(function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=$e(this,e);t.insertBefore(e,t.firstChild)}}))},before:function(){return ze(this,arguments,(function(e){this.parentNode&&this.parentNode.insertBefore(e,this)}))},after:function(){return ze(this,arguments,(function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)}))},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(T.cleanData(xe(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map((function(){return T.clone(this,e,t)}))},html:function(e){return Q(this,(function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"===typeof e&&!Ie.test(e)&&!we[(be.exec(e)||["",""])[1].toLowerCase()]){e=T.htmlPrefilter(e);try{for(;n3,ce.removeChild(e)),s}}))})();var Ge=["Webkit","Moz","ms"],Je=_.createElement("div").style,Ze={};function et(e){var t=e[0].toUpperCase()+e.slice(1),n=Ge.length;while(n--)if(e=Ge[n]+t,e in Je)return e}function tt(e){var t=T.cssProps[e]||Ze[e];return t||(e in Je?e:Ze[e]=et(e)||e)}var nt=/^(none|table(?!-c[ea]).+)/,rt=/^--/,it={position:"absolute",visibility:"hidden",display:"block"},ot={letterSpacing:"0",fontWeight:"400"};function at(e,t,n){var r=le.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function st(e,t,n,r,i,o){var a="width"===t?1:0,s=0,l=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(l+=T.css(e,n+ue[a],!0,i)),r?("content"===n&&(l-=T.css(e,"padding"+ue[a],!0,i)),"margin"!==n&&(l-=T.css(e,"border"+ue[a]+"Width",!0,i))):(l+=T.css(e,"padding"+ue[a],!0,i),"padding"!==n?l+=T.css(e,"border"+ue[a]+"Width",!0,i):s+=T.css(e,"border"+ue[a]+"Width",!0,i));return!r&&o>=0&&(l+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-l-s-.5))||0),l}function lt(e,t,n){var r=Ve(e),i=!g.boxSizingReliable()||n,o=i&&"border-box"===T.css(e,"boxSizing",!1,r),a=o,s=Ye(e,t,r),l="offset"+t[0].toUpperCase()+t.slice(1);if(We.test(s)){if(!n)return s;s="auto"}return(!g.boxSizingReliable()&&o||!g.reliableTrDimensions()&&j(e,"tr")||"auto"===s||!parseFloat(s)&&"inline"===T.css(e,"display",!1,r))&&e.getClientRects().length&&(o="border-box"===T.css(e,"boxSizing",!1,r),a=l in e,a&&(s=e[l])),s=parseFloat(s)||0,s+st(e,t,n||(o?"border":"content"),a,r,s)+"px"}function ut(e,t,n,r,i){return new ut.prototype.init(e,t,n,r,i)}T.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Ye(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=J(t),l=rt.test(t),u=e.style;if(l||(t=tt(s)),a=T.cssHooks[t]||T.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:u[t];o=typeof n,"string"===o&&(i=le.exec(n))&&i[1]&&(n=he(e,t,i),o="number"),null!=n&&n===n&&("number"!==o||l||(n+=i&&i[3]||(T.cssNumber[s]?"":"px")),g.clearCloneStyle||""!==n||0!==t.indexOf("background")||(u[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(l?u.setProperty(t,n):u[t]=n))}},css:function(e,t,n,r){var i,o,a,s=J(t),l=rt.test(t);return l||(t=tt(s)),a=T.cssHooks[t]||T.cssHooks[s],a&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=Ye(e,t,r)),"normal"===i&&t in ot&&(i=ot[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),T.each(["height","width"],(function(e,t){T.cssHooks[t]={get:function(e,n,r){if(n)return!nt.test(T.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?lt(e,t,r):Xe(e,it,(function(){return lt(e,t,r)}))},set:function(e,n,r){var i,o=Ve(e),a=!g.scrollboxSize()&&"absolute"===o.position,s=a||r,l=s&&"border-box"===T.css(e,"boxSizing",!1,o),u=r?st(e,t,r,l,o):0;return l&&a&&(u-=Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-parseFloat(o[t])-st(e,t,"border",!1,o)-.5)),u&&(i=le.exec(n))&&"px"!==(i[3]||"px")&&(e.style[t]=n,n=T.css(e,t)),at(e,n,u)}}})),T.cssHooks.marginLeft=Ke(g.reliableMarginLeft,(function(e,t){if(t)return(parseFloat(Ye(e,"marginLeft"))||e.getBoundingClientRect().left-Xe(e,{marginLeft:0},(function(){return e.getBoundingClientRect().left})))+"px"})),T.each({margin:"",padding:"",border:"Width"},(function(e,t){T.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o="string"===typeof n?n.split(" "):[n];r<4;r++)i[e+ue[r]+t]=o[r]||o[r-2]||o[0];return i}},"margin"!==e&&(T.cssHooks[e+t].set=at)})),T.fn.extend({css:function(e,t){return Q(this,(function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Ve(e),i=t.length;a1)}}),T.Tween=ut,ut.prototype={constructor:ut,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||T.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(T.cssNumber[n]?"":"px")},cur:function(){var e=ut.propHooks[this.prop];return e&&e.get?e.get(this):ut.propHooks._default.get(this)},run:function(e){var t,n=ut.propHooks[this.prop];return this.options.duration?this.pos=t=T.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):ut.propHooks._default.set(this),this}},ut.prototype.init.prototype=ut.prototype,ut.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=T.css(e.elem,e.prop,""),t&&"auto"!==t?t:0)},set:function(e){T.fx.step[e.prop]?T.fx.step[e.prop](e):1!==e.elem.nodeType||!T.cssHooks[e.prop]&&null==e.elem.style[tt(e.prop)]?e.elem[e.prop]=e.now:T.style(e.elem,e.prop,e.now+e.unit)}}},ut.propHooks.scrollTop=ut.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},T.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},T.fx=ut.prototype.init,T.fx.step={};var ct,ft,dt=/^(?:toggle|show|hide)$/,pt=/queueHooks$/;function ht(){ft&&(!1===_.hidden&&n.requestAnimationFrame?n.requestAnimationFrame(ht):n.setTimeout(ht,T.fx.interval),T.fx.tick())}function mt(){return n.setTimeout((function(){ct=void 0})),ct=Date.now()}function vt(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)n=ue[r],i["margin"+n]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function gt(e,t,n){for(var r,i=(_t.tweeners[t]||[]).concat(_t.tweeners["*"]),o=0,a=i.length;o1)},removeAttr:function(e){return this.each((function(){T.removeAttr(this,e)}))}}),T.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"===typeof e.getAttribute?T.prop(e,t,n):(1===o&&T.isXMLDoc(e)||(i=T.attrHooks[t.toLowerCase()]||(T.expr.match.bool.test(t)?wt:void 0)),void 0!==n?null===n?void T.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:(r=T.find.attr(e,t),null==r?void 0:r))},attrHooks:{type:{set:function(e,t){if(!g.radioValue&&"radio"===t&&j(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(H);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),wt={set:function(e,t,n){return!1===t?T.removeAttr(e,n):e.setAttribute(n,n),n}},T.each(T.expr.match.bool.source.match(/\w+/g),(function(e,t){var n=xt[t]||T.find.attr;xt[t]=function(e,t,r){var i,o,a=t.toLowerCase();return r||(o=xt[a],xt[a]=i,i=null!=n(e,t,r)?a:null,xt[a]=o),i}}));var Ct=/^(?:input|select|textarea|button)$/i,Et=/^(?:a|area)$/i;function Tt(e){var t=e.match(H)||[];return t.join(" ")}function kt(e){return e.getAttribute&&e.getAttribute("class")||""}function At(e){return Array.isArray(e)?e:"string"===typeof e&&e.match(H)||[]}T.fn.extend({prop:function(e,t){return Q(this,T.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each((function(){delete this[T.propFix[e]||e]}))}}),T.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&T.isXMLDoc(e)||(t=T.propFix[t]||t,i=T.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=T.find.attr(e,"tabindex");return t?parseInt(t,10):Ct.test(e.nodeName)||Et.test(e.nodeName)&&e.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),g.optSelected||(T.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),T.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],(function(){T.propFix[this.toLowerCase()]=this})),T.fn.extend({addClass:function(e){var t,n,r,i,o,a,s,l=0;if(y(e))return this.each((function(t){T(this).addClass(e.call(this,t,kt(this)))}));if(t=At(e),t.length)while(n=this[l++])if(i=kt(n),r=1===n.nodeType&&" "+Tt(i)+" ",r){a=0;while(o=t[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");s=Tt(r),i!==s&&n.setAttribute("class",s)}return this},removeClass:function(e){var t,n,r,i,o,a,s,l=0;if(y(e))return this.each((function(t){T(this).removeClass(e.call(this,t,kt(this)))}));if(!arguments.length)return this.attr("class","");if(t=At(e),t.length)while(n=this[l++])if(i=kt(n),r=1===n.nodeType&&" "+Tt(i)+" ",r){a=0;while(o=t[a++])while(r.indexOf(" "+o+" ")>-1)r=r.replace(" "+o+" "," ");s=Tt(r),i!==s&&n.setAttribute("class",s)}return this},toggleClass:function(e,t){var n=typeof e,r="string"===n||Array.isArray(e);return"boolean"===typeof t&&r?t?this.addClass(e):this.removeClass(e):y(e)?this.each((function(n){T(this).toggleClass(e.call(this,n,kt(this),t),t)})):this.each((function(){var t,i,o,a;if(r){i=0,o=T(this),a=At(e);while(t=a[i++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else void 0!==e&&"boolean"!==n||(t=kt(this),t&&te.set(this,"__className__",t),this.setAttribute&&this.setAttribute("class",t||!1===e?"":te.get(this,"__className__")||""))}))},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&(" "+Tt(kt(n))+" ").indexOf(t)>-1)return!0;return!1}});var St=/\r/g;T.fn.extend({val:function(e){var t,n,r,i=this[0];return arguments.length?(r=y(e),this.each((function(n){var i;1===this.nodeType&&(i=r?e.call(this,n,T(this).val()):e,null==i?i="":"number"===typeof i?i+="":Array.isArray(i)&&(i=T.map(i,(function(e){return null==e?"":e+""}))),t=T.valHooks[this.type]||T.valHooks[this.nodeName.toLowerCase()],t&&"set"in t&&void 0!==t.set(this,i,"value")||(this.value=i))}))):i?(t=T.valHooks[i.type]||T.valHooks[i.nodeName.toLowerCase()],t&&"get"in t&&void 0!==(n=t.get(i,"value"))?n:(n=i.value,"string"===typeof n?n.replace(St,""):null==n?"":n)):void 0}}),T.extend({valHooks:{option:{get:function(e){var t=T.find.attr(e,"value");return null!=t?t:Tt(T.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],l=a?o+1:i.length;for(r=o<0?l:a?o:0;r-1)&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),T.each(["radio","checkbox"],(function(){T.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=T.inArray(T(e).val(),t)>-1}},g.checkOn||(T.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})})),g.focusin="onfocusin"in n;var Ot=/^(?:focusinfocus|focusoutblur)$/,Nt=function(e){e.stopPropagation()};T.extend(T.event,{trigger:function(e,t,r,i){var o,a,s,l,u,c,f,d,p=[r||_],m=h.call(e,"type")?e.type:e,v=h.call(e,"namespace")?e.namespace.split("."):[];if(a=d=s=r=r||_,3!==r.nodeType&&8!==r.nodeType&&!Ot.test(m+T.event.triggered)&&(m.indexOf(".")>-1&&(v=m.split("."),m=v.shift(),v.sort()),u=m.indexOf(":")<0&&"on"+m,e=e[T.expando]?e:new T.Event(m,"object"===typeof e&&e),e.isTrigger=i?2:3,e.namespace=v.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+v.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=r),t=null==t?[e]:T.makeArray(t,[e]),f=T.event.special[m]||{},i||!f.trigger||!1!==f.trigger.apply(r,t))){if(!i&&!f.noBubble&&!b(r)){for(l=f.delegateType||m,Ot.test(l+m)||(a=a.parentNode);a;a=a.parentNode)p.push(a),s=a;s===(r.ownerDocument||_)&&p.push(s.defaultView||s.parentWindow||n)}o=0;while((a=p[o++])&&!e.isPropagationStopped())d=a,e.type=o>1?l:f.bindType||m,c=(te.get(a,"events")||Object.create(null))[e.type]&&te.get(a,"handle"),c&&c.apply(a,t),c=u&&a[u],c&&c.apply&&Z(a)&&(e.result=c.apply(a,t),!1===e.result&&e.preventDefault());return e.type=m,i||e.isDefaultPrevented()||f._default&&!1!==f._default.apply(p.pop(),t)||!Z(r)||u&&y(r[m])&&!b(r)&&(s=r[u],s&&(r[u]=null),T.event.triggered=m,e.isPropagationStopped()&&d.addEventListener(m,Nt),r[m](),e.isPropagationStopped()&&d.removeEventListener(m,Nt),T.event.triggered=void 0,s&&(r[u]=s)),e.result}},simulate:function(e,t,n){var r=T.extend(new T.Event,n,{type:e,isSimulated:!0});T.event.trigger(r,null,t)}}),T.fn.extend({trigger:function(e,t){return this.each((function(){T.event.trigger(e,t,this)}))},triggerHandler:function(e,t){var n=this[0];if(n)return T.event.trigger(e,t,n,!0)}}),g.focusin||T.each({focus:"focusin",blur:"focusout"},(function(e,t){var n=function(e){T.event.simulate(t,e.target,T.event.fix(e))};T.event.special[t]={setup:function(){var r=this.ownerDocument||this.document||this,i=te.access(r,t);i||r.addEventListener(e,n,!0),te.access(r,t,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this.document||this,i=te.access(r,t)-1;i?te.access(r,t,i):(r.removeEventListener(e,n,!0),te.remove(r,t))}}}));var jt=n.location,Dt={guid:Date.now()},Lt=/\?/;T.parseXML=function(e){var t;if(!e||"string"!==typeof e)return null;try{t=(new n.DOMParser).parseFromString(e,"text/xml")}catch(r){t=void 0}return t&&!t.getElementsByTagName("parsererror").length||T.error("Invalid XML: "+e),t};var Pt=/\[\]$/,It=/\r?\n/g,Rt=/^(?:submit|button|image|reset|file)$/i,Mt=/^(?:input|select|textarea|keygen)/i;function $t(e,t,n,r){var i;if(Array.isArray(t))T.each(t,(function(t,i){n||Pt.test(e)?r(e,i):$t(e+"["+("object"===typeof i&&null!=i?t:"")+"]",i,n,r)}));else if(n||"object"!==C(t))r(e,t);else for(i in t)$t(e+"["+i+"]",t[i],n,r)}T.param=function(e,t){var n,r=[],i=function(e,t){var n=y(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!T.isPlainObject(e))T.each(e,(function(){i(this.name,this.value)}));else for(n in e)$t(n,e[n],t,i);return r.join("&")},T.fn.extend({serialize:function(){return T.param(this.serializeArray())},serializeArray:function(){return this.map((function(){var e=T.prop(this,"elements");return e?T.makeArray(e):this})).filter((function(){var e=this.type;return this.name&&!T(this).is(":disabled")&&Mt.test(this.nodeName)&&!Rt.test(e)&&(this.checked||!ye.test(e))})).map((function(e,t){var n=T(this).val();return null==n?null:Array.isArray(n)?T.map(n,(function(e){return{name:t.name,value:e.replace(It,"\r\n")}})):{name:t.name,value:n.replace(It,"\r\n")}})).get()}});var qt=/%20/g,Ht=/#.*$/,Ft=/([?&])_=[^&]*/,Bt=/^(.*?):[ \t]*([^\r\n]*)$/gm,zt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Ut=/^(?:GET|HEAD)$/,Wt=/^\/\//,Vt={},Xt={},Qt="*/".concat("*"),Yt=_.createElement("a");function Kt(e){return function(t,n){"string"!==typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(H)||[];if(y(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function Gt(e,t,n,r){var i={},o=e===Xt;function a(s){var l;return i[s]=!0,T.each(e[s]||[],(function(e,s){var u=s(t,n,r);return"string"!==typeof u||o||i[u]?o?!(l=u):void 0:(t.dataTypes.unshift(u),a(u),!1)})),l}return a(t.dataTypes[0])||!i["*"]&&a("*")}function Jt(e,t){var n,r,i=T.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&T.extend(!0,e,r),e}function Zt(e,t,n){var r,i,o,a,s=e.contents,l=e.dataTypes;while("*"===l[0])l.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){l.unshift(i);break}if(l[0]in n)o=l[0];else{for(i in n){if(!l[0]||e.converters[i+" "+l[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==l[0]&&l.unshift(o),n[o]}function en(e,t,n,r){var i,o,a,s,l,u={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)u[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!l&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),l=o,o=c.shift(),o)if("*"===o)o=l;else if("*"!==l&&l!==o){if(a=u[l+" "+o]||u["* "+o],!a)for(i in u)if(s=i.split(" "),s[1]===o&&(a=u[l+" "+s[0]]||u["* "+s[0]],a)){!0===a?a=u[i]:!0!==u[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e.throws)t=a(t);else try{t=a(t)}catch(f){return{state:"parsererror",error:a?f:"No conversion from "+l+" to "+o}}}return{state:"success",data:t}}Yt.href=jt.href,T.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:jt.href,type:"GET",isLocal:zt.test(jt.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Qt,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":T.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Jt(Jt(e,T.ajaxSettings),t):Jt(T.ajaxSettings,e)},ajaxPrefilter:Kt(Vt),ajaxTransport:Kt(Xt),ajax:function(e,t){"object"===typeof e&&(t=e,e=void 0),t=t||{};var r,i,o,a,s,l,u,c,f,d,p=T.ajaxSetup({},t),h=p.context||p,m=p.context&&(h.nodeType||h.jquery)?T(h):T.event,v=T.Deferred(),g=T.Callbacks("once memory"),y=p.statusCode||{},b={},w={},x="canceled",C={readyState:0,getResponseHeader:function(e){var t;if(u){if(!a){a={};while(t=Bt.exec(o))a[t[1].toLowerCase()+" "]=(a[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=a[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return u?o:null},setRequestHeader:function(e,t){return null==u&&(e=w[e.toLowerCase()]=w[e.toLowerCase()]||e,b[e]=t),this},overrideMimeType:function(e){return null==u&&(p.mimeType=e),this},statusCode:function(e){var t;if(e)if(u)C.always(e[C.status]);else for(t in e)y[t]=[y[t],e[t]];return this},abort:function(e){var t=e||x;return r&&r.abort(t),E(0,t),this}};if(v.promise(C),p.url=((e||p.url||jt.href)+"").replace(Wt,jt.protocol+"//"),p.type=t.method||t.type||p.method||p.type,p.dataTypes=(p.dataType||"*").toLowerCase().match(H)||[""],null==p.crossDomain){l=_.createElement("a");try{l.href=p.url,l.href=l.href,p.crossDomain=Yt.protocol+"//"+Yt.host!==l.protocol+"//"+l.host}catch(k){p.crossDomain=!0}}if(p.data&&p.processData&&"string"!==typeof p.data&&(p.data=T.param(p.data,p.traditional)),Gt(Vt,p,t,C),u)return C;for(f in c=T.event&&p.global,c&&0===T.active++&&T.event.trigger("ajaxStart"),p.type=p.type.toUpperCase(),p.hasContent=!Ut.test(p.type),i=p.url.replace(Ht,""),p.hasContent?p.data&&p.processData&&0===(p.contentType||"").indexOf("application/x-www-form-urlencoded")&&(p.data=p.data.replace(qt,"+")):(d=p.url.slice(i.length),p.data&&(p.processData||"string"===typeof p.data)&&(i+=(Lt.test(i)?"&":"?")+p.data,delete p.data),!1===p.cache&&(i=i.replace(Ft,"$1"),d=(Lt.test(i)?"&":"?")+"_="+Dt.guid+++d),p.url=i+d),p.ifModified&&(T.lastModified[i]&&C.setRequestHeader("If-Modified-Since",T.lastModified[i]),T.etag[i]&&C.setRequestHeader("If-None-Match",T.etag[i])),(p.data&&p.hasContent&&!1!==p.contentType||t.contentType)&&C.setRequestHeader("Content-Type",p.contentType),C.setRequestHeader("Accept",p.dataTypes[0]&&p.accepts[p.dataTypes[0]]?p.accepts[p.dataTypes[0]]+("*"!==p.dataTypes[0]?", "+Qt+"; q=0.01":""):p.accepts["*"]),p.headers)C.setRequestHeader(f,p.headers[f]);if(p.beforeSend&&(!1===p.beforeSend.call(h,C,p)||u))return C.abort();if(x="abort",g.add(p.complete),C.done(p.success),C.fail(p.error),r=Gt(Xt,p,t,C),r){if(C.readyState=1,c&&m.trigger("ajaxSend",[C,p]),u)return C;p.async&&p.timeout>0&&(s=n.setTimeout((function(){C.abort("timeout")}),p.timeout));try{u=!1,r.send(b,E)}catch(k){if(u)throw k;E(-1,k)}}else E(-1,"No Transport");function E(e,t,a,l){var f,d,b,_,w,x=t;u||(u=!0,s&&n.clearTimeout(s),r=void 0,o=l||"",C.readyState=e>0?4:0,f=e>=200&&e<300||304===e,a&&(_=Zt(p,C,a)),!f&&T.inArray("script",p.dataTypes)>-1&&(p.converters["text script"]=function(){}),_=en(p,_,C,f),f?(p.ifModified&&(w=C.getResponseHeader("Last-Modified"),w&&(T.lastModified[i]=w),w=C.getResponseHeader("etag"),w&&(T.etag[i]=w)),204===e||"HEAD"===p.type?x="nocontent":304===e?x="notmodified":(x=_.state,d=_.data,b=_.error,f=!b)):(b=x,!e&&x||(x="error",e<0&&(e=0))),C.status=e,C.statusText=(t||x)+"",f?v.resolveWith(h,[d,x,C]):v.rejectWith(h,[C,x,b]),C.statusCode(y),y=void 0,c&&m.trigger(f?"ajaxSuccess":"ajaxError",[C,p,f?d:b]),g.fireWith(h,[C,x]),c&&(m.trigger("ajaxComplete",[C,p]),--T.active||T.event.trigger("ajaxStop")))}return C},getJSON:function(e,t,n){return T.get(e,t,n,"json")},getScript:function(e,t){return T.get(e,void 0,t,"script")}}),T.each(["get","post"],(function(e,t){T[t]=function(e,n,r,i){return y(n)&&(i=i||r,r=n,n=void 0),T.ajax(T.extend({url:e,type:t,dataType:i,data:n,success:r},T.isPlainObject(e)&&e))}})),T.ajaxPrefilter((function(e){var t;for(t in e.headers)"content-type"===t.toLowerCase()&&(e.contentType=e.headers[t]||"")})),T._evalUrl=function(e,t,n){return T.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){T.globalEval(e,t,n)}})},T.fn.extend({wrapAll:function(e){var t;return this[0]&&(y(e)&&(e=e.call(this[0])),t=T(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map((function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e})).append(this)),this},wrapInner:function(e){return y(e)?this.each((function(t){T(this).wrapInner(e.call(this,t))})):this.each((function(){var t=T(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)}))},wrap:function(e){var t=y(e);return this.each((function(n){T(this).wrapAll(t?e.call(this,n):e)}))},unwrap:function(e){return this.parent(e).not("body").each((function(){T(this).replaceWith(this.childNodes)})),this}}),T.expr.pseudos.hidden=function(e){return!T.expr.pseudos.visible(e)},T.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},T.ajaxSettings.xhr=function(){try{return new n.XMLHttpRequest}catch(e){}};var tn={0:200,1223:204},nn=T.ajaxSettings.xhr();g.cors=!!nn&&"withCredentials"in nn,g.ajax=nn=!!nn,T.ajaxTransport((function(e){var t,r;if(g.cors||nn&&!e.crossDomain)return{send:function(i,o){var a,s=e.xhr();if(s.open(e.type,e.url,e.async,e.username,e.password),e.xhrFields)for(a in e.xhrFields)s[a]=e.xhrFields[a];for(a in e.mimeType&&s.overrideMimeType&&s.overrideMimeType(e.mimeType),e.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest"),i)s.setRequestHeader(a,i[a]);t=function(e){return function(){t&&(t=r=s.onload=s.onerror=s.onabort=s.ontimeout=s.onreadystatechange=null,"abort"===e?s.abort():"error"===e?"number"!==typeof s.status?o(0,"error"):o(s.status,s.statusText):o(tn[s.status]||s.status,s.statusText,"text"!==(s.responseType||"text")||"string"!==typeof s.responseText?{binary:s.response}:{text:s.responseText},s.getAllResponseHeaders()))}},s.onload=t(),r=s.onerror=s.ontimeout=t("error"),void 0!==s.onabort?s.onabort=r:s.onreadystatechange=function(){4===s.readyState&&n.setTimeout((function(){t&&r()}))},t=t("abort");try{s.send(e.hasContent&&e.data||null)}catch(l){if(t)throw l}},abort:function(){t&&t()}}})),T.ajaxPrefilter((function(e){e.crossDomain&&(e.contents.script=!1)})),T.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return T.globalEval(e),e}}}),T.ajaxPrefilter("script",(function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")})),T.ajaxTransport("script",(function(e){var t,n;if(e.crossDomain||e.scriptAttrs)return{send:function(r,i){t=T("\n if (val === '') return true;\n if (val === 'false') return false;\n if (val === 'true') return true;\n return val;\n}\n\nif (DOCUMENT && typeof DOCUMENT.querySelector === 'function') {\n var attrs = [['data-family-prefix', 'familyPrefix'], ['data-replacement-class', 'replacementClass'], ['data-auto-replace-svg', 'autoReplaceSvg'], ['data-auto-add-css', 'autoAddCss'], ['data-auto-a11y', 'autoA11y'], ['data-search-pseudo-elements', 'searchPseudoElements'], ['data-observe-mutations', 'observeMutations'], ['data-mutate-approach', 'mutateApproach'], ['data-keep-original-source', 'keepOriginalSource'], ['data-measure-performance', 'measurePerformance'], ['data-show-missing-icons', 'showMissingIcons']];\n attrs.forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n attr = _ref2[0],\n key = _ref2[1];\n\n var val = coerce(getAttrConfig(attr));\n\n if (val !== undefined && val !== null) {\n initial[key] = val;\n }\n });\n}\n\nvar _default = {\n familyPrefix: DEFAULT_FAMILY_PREFIX,\n replacementClass: DEFAULT_REPLACEMENT_CLASS,\n autoReplaceSvg: true,\n autoAddCss: true,\n autoA11y: true,\n searchPseudoElements: false,\n observeMutations: true,\n mutateApproach: 'async',\n keepOriginalSource: true,\n measurePerformance: false,\n showMissingIcons: true\n};\n\nvar _config = _objectSpread({}, _default, initial);\n\nif (!_config.autoReplaceSvg) _config.observeMutations = false;\n\nvar config = _objectSpread({}, _config);\n\nWINDOW.FontAwesomeConfig = config;\n\nvar w = WINDOW || {};\nif (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {};\nif (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {};\nif (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {};\nif (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = [];\nvar namespace = w[NAMESPACE_IDENTIFIER];\n\nvar functions = [];\n\nvar listener = function listener() {\n DOCUMENT.removeEventListener('DOMContentLoaded', listener);\n loaded = 1;\n functions.map(function (fn) {\n return fn();\n });\n};\n\nvar loaded = false;\n\nif (IS_DOM) {\n loaded = (DOCUMENT.documentElement.doScroll ? /^loaded|^c/ : /^loaded|^i|^c/).test(DOCUMENT.readyState);\n if (!loaded) DOCUMENT.addEventListener('DOMContentLoaded', listener);\n}\n\nfunction domready (fn) {\n if (!IS_DOM) return;\n loaded ? setTimeout(fn, 0) : functions.push(fn);\n}\n\nvar PENDING = 'pending';\nvar SETTLED = 'settled';\nvar FULFILLED = 'fulfilled';\nvar REJECTED = 'rejected';\n\nvar NOOP = function NOOP() {};\n\nvar isNode = typeof global !== 'undefined' && typeof global.process !== 'undefined' && typeof global.process.emit === 'function';\nvar asyncSetTimer = typeof setImmediate === 'undefined' ? setTimeout : setImmediate;\nvar asyncQueue = [];\nvar asyncTimer;\n\nfunction asyncFlush() {\n // run promise callbacks\n for (var i = 0; i < asyncQueue.length; i++) {\n asyncQueue[i][0](asyncQueue[i][1]);\n } // reset async asyncQueue\n\n\n asyncQueue = [];\n asyncTimer = false;\n}\n\nfunction asyncCall(callback, arg) {\n asyncQueue.push([callback, arg]);\n\n if (!asyncTimer) {\n asyncTimer = true;\n asyncSetTimer(asyncFlush, 0);\n }\n}\n\nfunction invokeResolver(resolver, promise) {\n function resolvePromise(value) {\n resolve(promise, value);\n }\n\n function rejectPromise(reason) {\n reject(promise, reason);\n }\n\n try {\n resolver(resolvePromise, rejectPromise);\n } catch (e) {\n rejectPromise(e);\n }\n}\n\nfunction invokeCallback(subscriber) {\n var owner = subscriber.owner;\n var settled = owner._state;\n var value = owner._data;\n var callback = subscriber[settled];\n var promise = subscriber.then;\n\n if (typeof callback === 'function') {\n settled = FULFILLED;\n\n try {\n value = callback(value);\n } catch (e) {\n reject(promise, e);\n }\n }\n\n if (!handleThenable(promise, value)) {\n if (settled === FULFILLED) {\n resolve(promise, value);\n }\n\n if (settled === REJECTED) {\n reject(promise, value);\n }\n }\n}\n\nfunction handleThenable(promise, value) {\n var resolved;\n\n try {\n if (promise === value) {\n throw new TypeError('A promises callback cannot return that same promise.');\n }\n\n if (value && (typeof value === 'function' || _typeof(value) === 'object')) {\n // then should be retrieved only once\n var then = value.then;\n\n if (typeof then === 'function') {\n then.call(value, function (val) {\n if (!resolved) {\n resolved = true;\n\n if (value === val) {\n fulfill(promise, val);\n } else {\n resolve(promise, val);\n }\n }\n }, function (reason) {\n if (!resolved) {\n resolved = true;\n reject(promise, reason);\n }\n });\n return true;\n }\n }\n } catch (e) {\n if (!resolved) {\n reject(promise, e);\n }\n\n return true;\n }\n\n return false;\n}\n\nfunction resolve(promise, value) {\n if (promise === value || !handleThenable(promise, value)) {\n fulfill(promise, value);\n }\n}\n\nfunction fulfill(promise, value) {\n if (promise._state === PENDING) {\n promise._state = SETTLED;\n promise._data = value;\n asyncCall(publishFulfillment, promise);\n }\n}\n\nfunction reject(promise, reason) {\n if (promise._state === PENDING) {\n promise._state = SETTLED;\n promise._data = reason;\n asyncCall(publishRejection, promise);\n }\n}\n\nfunction publish(promise) {\n promise._then = promise._then.forEach(invokeCallback);\n}\n\nfunction publishFulfillment(promise) {\n promise._state = FULFILLED;\n publish(promise);\n}\n\nfunction publishRejection(promise) {\n promise._state = REJECTED;\n publish(promise);\n\n if (!promise._handled && isNode) {\n global.process.emit('unhandledRejection', promise._data, promise);\n }\n}\n\nfunction notifyRejectionHandled(promise) {\n global.process.emit('rejectionHandled', promise);\n}\n/**\n * @class\n */\n\n\nfunction P(resolver) {\n if (typeof resolver !== 'function') {\n throw new TypeError('Promise resolver ' + resolver + ' is not a function');\n }\n\n if (this instanceof P === false) {\n throw new TypeError('Failed to construct \\'Promise\\': Please use the \\'new\\' operator, this object constructor cannot be called as a function.');\n }\n\n this._then = [];\n invokeResolver(resolver, this);\n}\n\nP.prototype = {\n constructor: P,\n _state: PENDING,\n _then: null,\n _data: undefined,\n _handled: false,\n then: function then(onFulfillment, onRejection) {\n var subscriber = {\n owner: this,\n then: new this.constructor(NOOP),\n fulfilled: onFulfillment,\n rejected: onRejection\n };\n\n if ((onRejection || onFulfillment) && !this._handled) {\n this._handled = true;\n\n if (this._state === REJECTED && isNode) {\n asyncCall(notifyRejectionHandled, this);\n }\n }\n\n if (this._state === FULFILLED || this._state === REJECTED) {\n // already resolved, call callback async\n asyncCall(invokeCallback, subscriber);\n } else {\n // subscribe\n this._then.push(subscriber);\n }\n\n return subscriber.then;\n },\n catch: function _catch(onRejection) {\n return this.then(null, onRejection);\n }\n};\n\nP.all = function (promises) {\n if (!Array.isArray(promises)) {\n throw new TypeError('You must pass an array to Promise.all().');\n }\n\n return new P(function (resolve, reject) {\n var results = [];\n var remaining = 0;\n\n function resolver(index) {\n remaining++;\n return function (value) {\n results[index] = value;\n\n if (! --remaining) {\n resolve(results);\n }\n };\n }\n\n for (var i = 0, promise; i < promises.length; i++) {\n promise = promises[i];\n\n if (promise && typeof promise.then === 'function') {\n promise.then(resolver(i), reject);\n } else {\n results[i] = promise;\n }\n }\n\n if (!remaining) {\n resolve(results);\n }\n });\n};\n\nP.race = function (promises) {\n if (!Array.isArray(promises)) {\n throw new TypeError('You must pass an array to Promise.race().');\n }\n\n return new P(function (resolve, reject) {\n for (var i = 0, promise; i < promises.length; i++) {\n promise = promises[i];\n\n if (promise && typeof promise.then === 'function') {\n promise.then(resolve, reject);\n } else {\n resolve(promise);\n }\n }\n });\n};\n\nP.resolve = function (value) {\n if (value && _typeof(value) === 'object' && value.constructor === P) {\n return value;\n }\n\n return new P(function (resolve) {\n resolve(value);\n });\n};\n\nP.reject = function (reason) {\n return new P(function (resolve, reject) {\n reject(reason);\n });\n};\n\nvar picked = typeof Promise === 'function' ? Promise : P;\n\nvar d = UNITS_IN_GRID;\nvar meaninglessTransform = {\n size: 16,\n x: 0,\n y: 0,\n rotate: 0,\n flipX: false,\n flipY: false\n};\n\nfunction isReserved(name) {\n return ~RESERVED_CLASSES.indexOf(name);\n}\nfunction insertCss(css) {\n if (!css || !IS_DOM) {\n return;\n }\n\n var style = DOCUMENT.createElement('style');\n style.setAttribute('type', 'text/css');\n style.innerHTML = css;\n var headChildren = DOCUMENT.head.childNodes;\n var beforeChild = null;\n\n for (var i = headChildren.length - 1; i > -1; i--) {\n var child = headChildren[i];\n var tagName = (child.tagName || '').toUpperCase();\n\n if (['STYLE', 'LINK'].indexOf(tagName) > -1) {\n beforeChild = child;\n }\n }\n\n DOCUMENT.head.insertBefore(style, beforeChild);\n return css;\n}\nvar idPool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\nfunction nextUniqueId() {\n var size = 12;\n var id = '';\n\n while (size-- > 0) {\n id += idPool[Math.random() * 62 | 0];\n }\n\n return id;\n}\nfunction toArray(obj) {\n var array = [];\n\n for (var i = (obj || []).length >>> 0; i--;) {\n array[i] = obj[i];\n }\n\n return array;\n}\nfunction classArray(node) {\n if (node.classList) {\n return toArray(node.classList);\n } else {\n return (node.getAttribute('class') || '').split(' ').filter(function (i) {\n return i;\n });\n }\n}\nfunction getIconName(familyPrefix, cls) {\n var parts = cls.split('-');\n var prefix = parts[0];\n var iconName = parts.slice(1).join('-');\n\n if (prefix === familyPrefix && iconName !== '' && !isReserved(iconName)) {\n return iconName;\n } else {\n return null;\n }\n}\nfunction htmlEscape(str) {\n return \"\".concat(str).replace(/&/g, '&').replace(/\"/g, '"').replace(/'/g, ''').replace(//g, '>');\n}\nfunction joinAttributes(attributes) {\n return Object.keys(attributes || {}).reduce(function (acc, attributeName) {\n return acc + \"\".concat(attributeName, \"=\\\"\").concat(htmlEscape(attributes[attributeName]), \"\\\" \");\n }, '').trim();\n}\nfunction joinStyles(styles) {\n return Object.keys(styles || {}).reduce(function (acc, styleName) {\n return acc + \"\".concat(styleName, \": \").concat(styles[styleName], \";\");\n }, '');\n}\nfunction transformIsMeaningful(transform) {\n return transform.size !== meaninglessTransform.size || transform.x !== meaninglessTransform.x || transform.y !== meaninglessTransform.y || transform.rotate !== meaninglessTransform.rotate || transform.flipX || transform.flipY;\n}\nfunction transformForSvg(_ref) {\n var transform = _ref.transform,\n containerWidth = _ref.containerWidth,\n iconWidth = _ref.iconWidth;\n var outer = {\n transform: \"translate(\".concat(containerWidth / 2, \" 256)\")\n };\n var innerTranslate = \"translate(\".concat(transform.x * 32, \", \").concat(transform.y * 32, \") \");\n var innerScale = \"scale(\".concat(transform.size / 16 * (transform.flipX ? -1 : 1), \", \").concat(transform.size / 16 * (transform.flipY ? -1 : 1), \") \");\n var innerRotate = \"rotate(\".concat(transform.rotate, \" 0 0)\");\n var inner = {\n transform: \"\".concat(innerTranslate, \" \").concat(innerScale, \" \").concat(innerRotate)\n };\n var path = {\n transform: \"translate(\".concat(iconWidth / 2 * -1, \" -256)\")\n };\n return {\n outer: outer,\n inner: inner,\n path: path\n };\n}\nfunction transformForCss(_ref2) {\n var transform = _ref2.transform,\n _ref2$width = _ref2.width,\n width = _ref2$width === void 0 ? UNITS_IN_GRID : _ref2$width,\n _ref2$height = _ref2.height,\n height = _ref2$height === void 0 ? UNITS_IN_GRID : _ref2$height,\n _ref2$startCentered = _ref2.startCentered,\n startCentered = _ref2$startCentered === void 0 ? false : _ref2$startCentered;\n var val = '';\n\n if (startCentered && IS_IE) {\n val += \"translate(\".concat(transform.x / d - width / 2, \"em, \").concat(transform.y / d - height / 2, \"em) \");\n } else if (startCentered) {\n val += \"translate(calc(-50% + \".concat(transform.x / d, \"em), calc(-50% + \").concat(transform.y / d, \"em)) \");\n } else {\n val += \"translate(\".concat(transform.x / d, \"em, \").concat(transform.y / d, \"em) \");\n }\n\n val += \"scale(\".concat(transform.size / d * (transform.flipX ? -1 : 1), \", \").concat(transform.size / d * (transform.flipY ? -1 : 1), \") \");\n val += \"rotate(\".concat(transform.rotate, \"deg) \");\n return val;\n}\n\nvar ALL_SPACE = {\n x: 0,\n y: 0,\n width: '100%',\n height: '100%'\n};\n\nfunction fillBlack(abstract) {\n var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n if (abstract.attributes && (abstract.attributes.fill || force)) {\n abstract.attributes.fill = 'black';\n }\n\n return abstract;\n}\n\nfunction deGroup(abstract) {\n if (abstract.tag === 'g') {\n return abstract.children;\n } else {\n return [abstract];\n }\n}\n\nfunction makeIconMasking (_ref) {\n var children = _ref.children,\n attributes = _ref.attributes,\n main = _ref.main,\n mask = _ref.mask,\n explicitMaskId = _ref.maskId,\n transform = _ref.transform;\n var mainWidth = main.width,\n mainPath = main.icon;\n var maskWidth = mask.width,\n maskPath = mask.icon;\n var trans = transformForSvg({\n transform: transform,\n containerWidth: maskWidth,\n iconWidth: mainWidth\n });\n var maskRect = {\n tag: 'rect',\n attributes: _objectSpread({}, ALL_SPACE, {\n fill: 'white'\n })\n };\n var maskInnerGroupChildrenMixin = mainPath.children ? {\n children: mainPath.children.map(fillBlack)\n } : {};\n var maskInnerGroup = {\n tag: 'g',\n attributes: _objectSpread({}, trans.inner),\n children: [fillBlack(_objectSpread({\n tag: mainPath.tag,\n attributes: _objectSpread({}, mainPath.attributes, trans.path)\n }, maskInnerGroupChildrenMixin))]\n };\n var maskOuterGroup = {\n tag: 'g',\n attributes: _objectSpread({}, trans.outer),\n children: [maskInnerGroup]\n };\n var maskId = \"mask-\".concat(explicitMaskId || nextUniqueId());\n var clipId = \"clip-\".concat(explicitMaskId || nextUniqueId());\n var maskTag = {\n tag: 'mask',\n attributes: _objectSpread({}, ALL_SPACE, {\n id: maskId,\n maskUnits: 'userSpaceOnUse',\n maskContentUnits: 'userSpaceOnUse'\n }),\n children: [maskRect, maskOuterGroup]\n };\n var defs = {\n tag: 'defs',\n children: [{\n tag: 'clipPath',\n attributes: {\n id: clipId\n },\n children: deGroup(maskPath)\n }, maskTag]\n };\n children.push(defs, {\n tag: 'rect',\n attributes: _objectSpread({\n fill: 'currentColor',\n 'clip-path': \"url(#\".concat(clipId, \")\"),\n mask: \"url(#\".concat(maskId, \")\")\n }, ALL_SPACE)\n });\n return {\n children: children,\n attributes: attributes\n };\n}\n\nfunction makeIconStandard (_ref) {\n var children = _ref.children,\n attributes = _ref.attributes,\n main = _ref.main,\n transform = _ref.transform,\n styles = _ref.styles;\n var styleString = joinStyles(styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n if (transformIsMeaningful(transform)) {\n var trans = transformForSvg({\n transform: transform,\n containerWidth: main.width,\n iconWidth: main.width\n });\n children.push({\n tag: 'g',\n attributes: _objectSpread({}, trans.outer),\n children: [{\n tag: 'g',\n attributes: _objectSpread({}, trans.inner),\n children: [{\n tag: main.icon.tag,\n children: main.icon.children,\n attributes: _objectSpread({}, main.icon.attributes, trans.path)\n }]\n }]\n });\n } else {\n children.push(main.icon);\n }\n\n return {\n children: children,\n attributes: attributes\n };\n}\n\nfunction asIcon (_ref) {\n var children = _ref.children,\n main = _ref.main,\n mask = _ref.mask,\n attributes = _ref.attributes,\n styles = _ref.styles,\n transform = _ref.transform;\n\n if (transformIsMeaningful(transform) && main.found && !mask.found) {\n var width = main.width,\n height = main.height;\n var offset = {\n x: width / height / 2,\n y: 0.5\n };\n attributes['style'] = joinStyles(_objectSpread({}, styles, {\n 'transform-origin': \"\".concat(offset.x + transform.x / 16, \"em \").concat(offset.y + transform.y / 16, \"em\")\n }));\n }\n\n return [{\n tag: 'svg',\n attributes: attributes,\n children: children\n }];\n}\n\nfunction asSymbol (_ref) {\n var prefix = _ref.prefix,\n iconName = _ref.iconName,\n children = _ref.children,\n attributes = _ref.attributes,\n symbol = _ref.symbol;\n var id = symbol === true ? \"\".concat(prefix, \"-\").concat(config.familyPrefix, \"-\").concat(iconName) : symbol;\n return [{\n tag: 'svg',\n attributes: {\n style: 'display: none;'\n },\n children: [{\n tag: 'symbol',\n attributes: _objectSpread({}, attributes, {\n id: id\n }),\n children: children\n }]\n }];\n}\n\nfunction makeInlineSvgAbstract(params) {\n var _params$icons = params.icons,\n main = _params$icons.main,\n mask = _params$icons.mask,\n prefix = params.prefix,\n iconName = params.iconName,\n transform = params.transform,\n symbol = params.symbol,\n title = params.title,\n maskId = params.maskId,\n titleId = params.titleId,\n extra = params.extra,\n _params$watchable = params.watchable,\n watchable = _params$watchable === void 0 ? false : _params$watchable;\n\n var _ref = mask.found ? mask : main,\n width = _ref.width,\n height = _ref.height;\n\n var isUploadedIcon = prefix === 'fak';\n var widthClass = isUploadedIcon ? '' : \"fa-w-\".concat(Math.ceil(width / height * 16));\n var attrClass = [config.replacementClass, iconName ? \"\".concat(config.familyPrefix, \"-\").concat(iconName) : '', widthClass].filter(function (c) {\n return extra.classes.indexOf(c) === -1;\n }).filter(function (c) {\n return c !== '' || !!c;\n }).concat(extra.classes).join(' ');\n var content = {\n children: [],\n attributes: _objectSpread({}, extra.attributes, {\n 'data-prefix': prefix,\n 'data-icon': iconName,\n 'class': attrClass,\n 'role': extra.attributes.role || 'img',\n 'xmlns': 'http://www.w3.org/2000/svg',\n 'viewBox': \"0 0 \".concat(width, \" \").concat(height)\n })\n };\n var uploadedIconWidthStyle = isUploadedIcon && !~extra.classes.indexOf('fa-fw') ? {\n width: \"\".concat(width / height * 16 * 0.0625, \"em\")\n } : {};\n\n if (watchable) {\n content.attributes[DATA_FA_I2SVG] = '';\n }\n\n if (title) content.children.push({\n tag: 'title',\n attributes: {\n id: content.attributes['aria-labelledby'] || \"title-\".concat(titleId || nextUniqueId())\n },\n children: [title]\n });\n\n var args = _objectSpread({}, content, {\n prefix: prefix,\n iconName: iconName,\n main: main,\n mask: mask,\n maskId: maskId,\n transform: transform,\n symbol: symbol,\n styles: _objectSpread({}, uploadedIconWidthStyle, extra.styles)\n });\n\n var _ref2 = mask.found && main.found ? makeIconMasking(args) : makeIconStandard(args),\n children = _ref2.children,\n attributes = _ref2.attributes;\n\n args.children = children;\n args.attributes = attributes;\n\n if (symbol) {\n return asSymbol(args);\n } else {\n return asIcon(args);\n }\n}\nfunction makeLayersTextAbstract(params) {\n var content = params.content,\n width = params.width,\n height = params.height,\n transform = params.transform,\n title = params.title,\n extra = params.extra,\n _params$watchable2 = params.watchable,\n watchable = _params$watchable2 === void 0 ? false : _params$watchable2;\n\n var attributes = _objectSpread({}, extra.attributes, title ? {\n 'title': title\n } : {}, {\n 'class': extra.classes.join(' ')\n });\n\n if (watchable) {\n attributes[DATA_FA_I2SVG] = '';\n }\n\n var styles = _objectSpread({}, extra.styles);\n\n if (transformIsMeaningful(transform)) {\n styles['transform'] = transformForCss({\n transform: transform,\n startCentered: true,\n width: width,\n height: height\n });\n styles['-webkit-transform'] = styles['transform'];\n }\n\n var styleString = joinStyles(styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n var val = [];\n val.push({\n tag: 'span',\n attributes: attributes,\n children: [content]\n });\n\n if (title) {\n val.push({\n tag: 'span',\n attributes: {\n class: 'sr-only'\n },\n children: [title]\n });\n }\n\n return val;\n}\nfunction makeLayersCounterAbstract(params) {\n var content = params.content,\n title = params.title,\n extra = params.extra;\n\n var attributes = _objectSpread({}, extra.attributes, title ? {\n 'title': title\n } : {}, {\n 'class': extra.classes.join(' ')\n });\n\n var styleString = joinStyles(extra.styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n var val = [];\n val.push({\n tag: 'span',\n attributes: attributes,\n children: [content]\n });\n\n if (title) {\n val.push({\n tag: 'span',\n attributes: {\n class: 'sr-only'\n },\n children: [title]\n });\n }\n\n return val;\n}\n\nvar noop$1 = function noop() {};\n\nvar p = config.measurePerformance && PERFORMANCE && PERFORMANCE.mark && PERFORMANCE.measure ? PERFORMANCE : {\n mark: noop$1,\n measure: noop$1\n};\nvar preamble = \"FA \\\"5.15.1\\\"\";\n\nvar begin = function begin(name) {\n p.mark(\"\".concat(preamble, \" \").concat(name, \" begins\"));\n return function () {\n return end(name);\n };\n};\n\nvar end = function end(name) {\n p.mark(\"\".concat(preamble, \" \").concat(name, \" ends\"));\n p.measure(\"\".concat(preamble, \" \").concat(name), \"\".concat(preamble, \" \").concat(name, \" begins\"), \"\".concat(preamble, \" \").concat(name, \" ends\"));\n};\n\nvar perf = {\n begin: begin,\n end: end\n};\n\n/**\n * Internal helper to bind a function known to have 4 arguments\n * to a given context.\n */\n\nvar bindInternal4 = function bindInternal4(func, thisContext) {\n return function (a, b, c, d) {\n return func.call(thisContext, a, b, c, d);\n };\n};\n\n/**\n * # Reduce\n *\n * A fast object `.reduce()` implementation.\n *\n * @param {Object} subject The object to reduce over.\n * @param {Function} fn The reducer function.\n * @param {mixed} initialValue The initial value for the reducer, defaults to subject[0].\n * @param {Object} thisContext The context for the reducer.\n * @return {mixed} The final result.\n */\n\n\nvar reduce = function fastReduceObject(subject, fn, initialValue, thisContext) {\n var keys = Object.keys(subject),\n length = keys.length,\n iterator = thisContext !== undefined ? bindInternal4(fn, thisContext) : fn,\n i,\n key,\n result;\n\n if (initialValue === undefined) {\n i = 1;\n result = subject[keys[0]];\n } else {\n i = 0;\n result = initialValue;\n }\n\n for (; i < length; i++) {\n key = keys[i];\n result = iterator(result, subject[key], key, subject);\n }\n\n return result;\n};\n\nfunction toHex(unicode) {\n var result = '';\n\n for (var i = 0; i < unicode.length; i++) {\n var hex = unicode.charCodeAt(i).toString(16);\n result += ('000' + hex).slice(-4);\n }\n\n return result;\n}\nfunction codePointAt(string, index) {\n /*! https://mths.be/codepointat v0.2.0 by @mathias */\n var size = string.length;\n var first = string.charCodeAt(index);\n var second;\n\n if (first >= 0xD800 && first <= 0xDBFF && size > index + 1) {\n second = string.charCodeAt(index + 1);\n\n if (second >= 0xDC00 && second <= 0xDFFF) {\n return (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n }\n }\n\n return first;\n}\n/**\n * Used to check that the character is between the E000..F8FF private unicode\n * range\n */\n\nfunction isPrivateUnicode(iconName) {\n if (iconName.length !== 1) {\n return false;\n } else {\n var cp = codePointAt(iconName, 0);\n return cp >= 57344 && cp <= 63743;\n }\n}\n\nfunction defineIcons(prefix, icons) {\n var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var _params$skipHooks = params.skipHooks,\n skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks;\n var normalized = Object.keys(icons).reduce(function (acc, iconName) {\n var icon = icons[iconName];\n var expanded = !!icon.icon;\n\n if (expanded) {\n acc[icon.iconName] = icon.icon;\n } else {\n acc[iconName] = icon;\n }\n\n return acc;\n }, {});\n\n if (typeof namespace.hooks.addPack === 'function' && !skipHooks) {\n namespace.hooks.addPack(prefix, normalized);\n } else {\n namespace.styles[prefix] = _objectSpread({}, namespace.styles[prefix] || {}, normalized);\n }\n /**\n * Font Awesome 4 used the prefix of `fa` for all icons. With the introduction\n * of new styles we needed to differentiate between them. Prefix `fa` is now an alias\n * for `fas` so we'll easy the upgrade process for our users by automatically defining\n * this as well.\n */\n\n\n if (prefix === 'fas') {\n defineIcons('fa', icons);\n }\n}\n\nvar styles = namespace.styles,\n shims = namespace.shims;\nvar _byUnicode = {};\nvar _byLigature = {};\nvar _byOldName = {};\nvar build = function build() {\n var lookup = function lookup(reducer) {\n return reduce(styles, function (o, style, prefix) {\n o[prefix] = reduce(style, reducer, {});\n return o;\n }, {});\n };\n\n _byUnicode = lookup(function (acc, icon, iconName) {\n if (icon[3]) {\n acc[icon[3]] = iconName;\n }\n\n return acc;\n });\n _byLigature = lookup(function (acc, icon, iconName) {\n var ligatures = icon[2];\n acc[iconName] = iconName;\n ligatures.forEach(function (ligature) {\n acc[ligature] = iconName;\n });\n return acc;\n });\n var hasRegular = 'far' in styles;\n _byOldName = reduce(shims, function (acc, shim) {\n var oldName = shim[0];\n var prefix = shim[1];\n var iconName = shim[2];\n\n if (prefix === 'far' && !hasRegular) {\n prefix = 'fas';\n }\n\n acc[oldName] = {\n prefix: prefix,\n iconName: iconName\n };\n return acc;\n }, {});\n};\nbuild();\nfunction byUnicode(prefix, unicode) {\n return (_byUnicode[prefix] || {})[unicode];\n}\nfunction byLigature(prefix, ligature) {\n return (_byLigature[prefix] || {})[ligature];\n}\nfunction byOldName(name) {\n return _byOldName[name] || {\n prefix: null,\n iconName: null\n };\n}\n\nvar styles$1 = namespace.styles;\nvar emptyCanonicalIcon = function emptyCanonicalIcon() {\n return {\n prefix: null,\n iconName: null,\n rest: []\n };\n};\nfunction getCanonicalIcon(values) {\n return values.reduce(function (acc, cls) {\n var iconName = getIconName(config.familyPrefix, cls);\n\n if (styles$1[cls]) {\n acc.prefix = cls;\n } else if (config.autoFetchSvg && Object.keys(PREFIX_TO_STYLE).indexOf(cls) > -1) {\n acc.prefix = cls;\n } else if (iconName) {\n var shim = acc.prefix === 'fa' ? byOldName(iconName) : {};\n acc.iconName = shim.iconName || iconName;\n acc.prefix = shim.prefix || acc.prefix;\n } else if (cls !== config.replacementClass && cls.indexOf('fa-w-') !== 0) {\n acc.rest.push(cls);\n }\n\n return acc;\n }, emptyCanonicalIcon());\n}\nfunction iconFromMapping(mapping, prefix, iconName) {\n if (mapping && mapping[prefix] && mapping[prefix][iconName]) {\n return {\n prefix: prefix,\n iconName: iconName,\n icon: mapping[prefix][iconName]\n };\n }\n}\n\nfunction toHtml(abstractNodes) {\n var tag = abstractNodes.tag,\n _abstractNodes$attrib = abstractNodes.attributes,\n attributes = _abstractNodes$attrib === void 0 ? {} : _abstractNodes$attrib,\n _abstractNodes$childr = abstractNodes.children,\n children = _abstractNodes$childr === void 0 ? [] : _abstractNodes$childr;\n\n if (typeof abstractNodes === 'string') {\n return htmlEscape(abstractNodes);\n } else {\n return \"<\".concat(tag, \" \").concat(joinAttributes(attributes), \">\").concat(children.map(toHtml).join(''), \"\");\n }\n}\n\nvar noop$2 = function noop() {};\n\nfunction isWatched(node) {\n var i2svg = node.getAttribute ? node.getAttribute(DATA_FA_I2SVG) : null;\n return typeof i2svg === 'string';\n}\n\nfunction getMutator() {\n if (config.autoReplaceSvg === true) {\n return mutators.replace;\n }\n\n var mutator = mutators[config.autoReplaceSvg];\n return mutator || mutators.replace;\n}\n\nvar mutators = {\n replace: function replace(mutation) {\n var node = mutation[0];\n var abstract = mutation[1];\n var newOuterHTML = abstract.map(function (a) {\n return toHtml(a);\n }).join('\\n');\n\n if (node.parentNode && node.outerHTML) {\n node.outerHTML = newOuterHTML + (config.keepOriginalSource && node.tagName.toLowerCase() !== 'svg' ? \"\") : '');\n } else if (node.parentNode) {\n var newNode = document.createElement('span');\n node.parentNode.replaceChild(newNode, node);\n newNode.outerHTML = newOuterHTML;\n }\n },\n nest: function nest(mutation) {\n var node = mutation[0];\n var abstract = mutation[1]; // If we already have a replaced node we do not want to continue nesting within it.\n // Short-circuit to the standard replacement\n\n if (~classArray(node).indexOf(config.replacementClass)) {\n return mutators.replace(mutation);\n }\n\n var forSvg = new RegExp(\"\".concat(config.familyPrefix, \"-.*\"));\n delete abstract[0].attributes.style;\n delete abstract[0].attributes.id;\n var splitClasses = abstract[0].attributes.class.split(' ').reduce(function (acc, cls) {\n if (cls === config.replacementClass || cls.match(forSvg)) {\n acc.toSvg.push(cls);\n } else {\n acc.toNode.push(cls);\n }\n\n return acc;\n }, {\n toNode: [],\n toSvg: []\n });\n abstract[0].attributes.class = splitClasses.toSvg.join(' ');\n var newInnerHTML = abstract.map(function (a) {\n return toHtml(a);\n }).join('\\n');\n node.setAttribute('class', splitClasses.toNode.join(' '));\n node.setAttribute(DATA_FA_I2SVG, '');\n node.innerHTML = newInnerHTML;\n }\n};\n\nfunction performOperationSync(op) {\n op();\n}\n\nfunction perform(mutations, callback) {\n var callbackFunction = typeof callback === 'function' ? callback : noop$2;\n\n if (mutations.length === 0) {\n callbackFunction();\n } else {\n var frame = performOperationSync;\n\n if (config.mutateApproach === MUTATION_APPROACH_ASYNC) {\n frame = WINDOW.requestAnimationFrame || performOperationSync;\n }\n\n frame(function () {\n var mutator = getMutator();\n var mark = perf.begin('mutate');\n mutations.map(mutator);\n mark();\n callbackFunction();\n });\n }\n}\nvar disabled = false;\nfunction disableObservation() {\n disabled = true;\n}\nfunction enableObservation() {\n disabled = false;\n}\nvar mo = null;\nfunction observe(options) {\n if (!MUTATION_OBSERVER) {\n return;\n }\n\n if (!config.observeMutations) {\n return;\n }\n\n var treeCallback = options.treeCallback,\n nodeCallback = options.nodeCallback,\n pseudoElementsCallback = options.pseudoElementsCallback,\n _options$observeMutat = options.observeMutationsRoot,\n observeMutationsRoot = _options$observeMutat === void 0 ? DOCUMENT : _options$observeMutat;\n mo = new MUTATION_OBSERVER(function (objects) {\n if (disabled) return;\n toArray(objects).forEach(function (mutationRecord) {\n if (mutationRecord.type === 'childList' && mutationRecord.addedNodes.length > 0 && !isWatched(mutationRecord.addedNodes[0])) {\n if (config.searchPseudoElements) {\n pseudoElementsCallback(mutationRecord.target);\n }\n\n treeCallback(mutationRecord.target);\n }\n\n if (mutationRecord.type === 'attributes' && mutationRecord.target.parentNode && config.searchPseudoElements) {\n pseudoElementsCallback(mutationRecord.target.parentNode);\n }\n\n if (mutationRecord.type === 'attributes' && isWatched(mutationRecord.target) && ~ATTRIBUTES_WATCHED_FOR_MUTATION.indexOf(mutationRecord.attributeName)) {\n if (mutationRecord.attributeName === 'class') {\n var _getCanonicalIcon = getCanonicalIcon(classArray(mutationRecord.target)),\n prefix = _getCanonicalIcon.prefix,\n iconName = _getCanonicalIcon.iconName;\n\n if (prefix) mutationRecord.target.setAttribute('data-prefix', prefix);\n if (iconName) mutationRecord.target.setAttribute('data-icon', iconName);\n } else {\n nodeCallback(mutationRecord.target);\n }\n }\n });\n });\n if (!IS_DOM) return;\n mo.observe(observeMutationsRoot, {\n childList: true,\n attributes: true,\n characterData: true,\n subtree: true\n });\n}\nfunction disconnect() {\n if (!mo) return;\n mo.disconnect();\n}\n\nfunction styleParser (node) {\n var style = node.getAttribute('style');\n var val = [];\n\n if (style) {\n val = style.split(';').reduce(function (acc, style) {\n var styles = style.split(':');\n var prop = styles[0];\n var value = styles.slice(1);\n\n if (prop && value.length > 0) {\n acc[prop] = value.join(':').trim();\n }\n\n return acc;\n }, {});\n }\n\n return val;\n}\n\nfunction classParser (node) {\n var existingPrefix = node.getAttribute('data-prefix');\n var existingIconName = node.getAttribute('data-icon');\n var innerText = node.innerText !== undefined ? node.innerText.trim() : '';\n var val = getCanonicalIcon(classArray(node));\n\n if (existingPrefix && existingIconName) {\n val.prefix = existingPrefix;\n val.iconName = existingIconName;\n }\n\n if (val.prefix && innerText.length > 1) {\n val.iconName = byLigature(val.prefix, node.innerText);\n } else if (val.prefix && innerText.length === 1) {\n val.iconName = byUnicode(val.prefix, toHex(node.innerText));\n }\n\n return val;\n}\n\nvar parseTransformString = function parseTransformString(transformString) {\n var transform = {\n size: 16,\n x: 0,\n y: 0,\n flipX: false,\n flipY: false,\n rotate: 0\n };\n\n if (!transformString) {\n return transform;\n } else {\n return transformString.toLowerCase().split(' ').reduce(function (acc, n) {\n var parts = n.toLowerCase().split('-');\n var first = parts[0];\n var rest = parts.slice(1).join('-');\n\n if (first && rest === 'h') {\n acc.flipX = true;\n return acc;\n }\n\n if (first && rest === 'v') {\n acc.flipY = true;\n return acc;\n }\n\n rest = parseFloat(rest);\n\n if (isNaN(rest)) {\n return acc;\n }\n\n switch (first) {\n case 'grow':\n acc.size = acc.size + rest;\n break;\n\n case 'shrink':\n acc.size = acc.size - rest;\n break;\n\n case 'left':\n acc.x = acc.x - rest;\n break;\n\n case 'right':\n acc.x = acc.x + rest;\n break;\n\n case 'up':\n acc.y = acc.y - rest;\n break;\n\n case 'down':\n acc.y = acc.y + rest;\n break;\n\n case 'rotate':\n acc.rotate = acc.rotate + rest;\n break;\n }\n\n return acc;\n }, transform);\n }\n};\nfunction transformParser (node) {\n return parseTransformString(node.getAttribute('data-fa-transform'));\n}\n\nfunction symbolParser (node) {\n var symbol = node.getAttribute('data-fa-symbol');\n return symbol === null ? false : symbol === '' ? true : symbol;\n}\n\nfunction attributesParser (node) {\n var extraAttributes = toArray(node.attributes).reduce(function (acc, attr) {\n if (acc.name !== 'class' && acc.name !== 'style') {\n acc[attr.name] = attr.value;\n }\n\n return acc;\n }, {});\n var title = node.getAttribute('title');\n var titleId = node.getAttribute('data-fa-title-id');\n\n if (config.autoA11y) {\n if (title) {\n extraAttributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(titleId || nextUniqueId());\n } else {\n extraAttributes['aria-hidden'] = 'true';\n extraAttributes['focusable'] = 'false';\n }\n }\n\n return extraAttributes;\n}\n\nfunction maskParser (node) {\n var mask = node.getAttribute('data-fa-mask');\n\n if (!mask) {\n return emptyCanonicalIcon();\n } else {\n return getCanonicalIcon(mask.split(' ').map(function (i) {\n return i.trim();\n }));\n }\n}\n\nfunction blankMeta() {\n return {\n iconName: null,\n title: null,\n titleId: null,\n prefix: null,\n transform: meaninglessTransform,\n symbol: false,\n mask: null,\n maskId: null,\n extra: {\n classes: [],\n styles: {},\n attributes: {}\n }\n };\n}\nfunction parseMeta(node) {\n var _classParser = classParser(node),\n iconName = _classParser.iconName,\n prefix = _classParser.prefix,\n extraClasses = _classParser.rest;\n\n var extraStyles = styleParser(node);\n var transform = transformParser(node);\n var symbol = symbolParser(node);\n var extraAttributes = attributesParser(node);\n var mask = maskParser(node);\n return {\n iconName: iconName,\n title: node.getAttribute('title'),\n titleId: node.getAttribute('data-fa-title-id'),\n prefix: prefix,\n transform: transform,\n symbol: symbol,\n mask: mask,\n maskId: node.getAttribute('data-fa-mask-id'),\n extra: {\n classes: extraClasses,\n styles: extraStyles,\n attributes: extraAttributes\n }\n };\n}\n\nfunction MissingIcon(error) {\n this.name = 'MissingIcon';\n this.message = error || 'Icon unavailable';\n this.stack = new Error().stack;\n}\nMissingIcon.prototype = Object.create(Error.prototype);\nMissingIcon.prototype.constructor = MissingIcon;\n\nvar FILL = {\n fill: 'currentColor'\n};\nvar ANIMATION_BASE = {\n attributeType: 'XML',\n repeatCount: 'indefinite',\n dur: '2s'\n};\nvar RING = {\n tag: 'path',\n attributes: _objectSpread({}, FILL, {\n d: 'M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z'\n })\n};\n\nvar OPACITY_ANIMATE = _objectSpread({}, ANIMATION_BASE, {\n attributeName: 'opacity'\n});\n\nvar DOT = {\n tag: 'circle',\n attributes: _objectSpread({}, FILL, {\n cx: '256',\n cy: '364',\n r: '28'\n }),\n children: [{\n tag: 'animate',\n attributes: _objectSpread({}, ANIMATION_BASE, {\n attributeName: 'r',\n values: '28;14;28;28;14;28;'\n })\n }, {\n tag: 'animate',\n attributes: _objectSpread({}, OPACITY_ANIMATE, {\n values: '1;0;1;1;0;1;'\n })\n }]\n};\nvar QUESTION = {\n tag: 'path',\n attributes: _objectSpread({}, FILL, {\n opacity: '1',\n d: 'M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z'\n }),\n children: [{\n tag: 'animate',\n attributes: _objectSpread({}, OPACITY_ANIMATE, {\n values: '1;0;0;0;0;1;'\n })\n }]\n};\nvar EXCLAMATION = {\n tag: 'path',\n attributes: _objectSpread({}, FILL, {\n opacity: '0',\n d: 'M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z'\n }),\n children: [{\n tag: 'animate',\n attributes: _objectSpread({}, OPACITY_ANIMATE, {\n values: '0;0;1;1;0;0;'\n })\n }]\n};\nvar missing = {\n tag: 'g',\n children: [RING, DOT, QUESTION, EXCLAMATION]\n};\n\nvar styles$2 = namespace.styles;\nfunction resolveCustomIconVersion() {\n var kitConfig = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var iconName = arguments.length > 1 ? arguments[1] : undefined;\n\n if (iconName && isPrivateUnicode(iconName)) {\n if (kitConfig && kitConfig.iconUploads) {\n var iconUploads = kitConfig.iconUploads;\n var descriptiveIconName = Object.keys(iconUploads).find(function (key) {\n return iconUploads[key] && iconUploads[key].u && iconUploads[key].u === toHex(iconName);\n });\n\n if (descriptiveIconName) {\n return iconUploads[descriptiveIconName].v;\n }\n }\n } else {\n if (kitConfig && kitConfig.iconUploads && kitConfig.iconUploads[iconName] && kitConfig.iconUploads[iconName].v) {\n return kitConfig.iconUploads[iconName].v;\n }\n }\n}\nfunction asFoundIcon(icon) {\n var width = icon[0];\n var height = icon[1];\n\n var _icon$slice = icon.slice(4),\n _icon$slice2 = _slicedToArray(_icon$slice, 1),\n vectorData = _icon$slice2[0];\n\n var element = null;\n\n if (Array.isArray(vectorData)) {\n element = {\n tag: 'g',\n attributes: {\n class: \"\".concat(config.familyPrefix, \"-\").concat(DUOTONE_CLASSES.GROUP)\n },\n children: [{\n tag: 'path',\n attributes: {\n class: \"\".concat(config.familyPrefix, \"-\").concat(DUOTONE_CLASSES.SECONDARY),\n fill: 'currentColor',\n d: vectorData[0]\n }\n }, {\n tag: 'path',\n attributes: {\n class: \"\".concat(config.familyPrefix, \"-\").concat(DUOTONE_CLASSES.PRIMARY),\n fill: 'currentColor',\n d: vectorData[1]\n }\n }]\n };\n } else {\n element = {\n tag: 'path',\n attributes: {\n fill: 'currentColor',\n d: vectorData\n }\n };\n }\n\n return {\n found: true,\n width: width,\n height: height,\n icon: element\n };\n}\nfunction findIcon(iconName, prefix) {\n return new picked(function (resolve, reject) {\n var val = {\n found: false,\n width: 512,\n height: 512,\n icon: missing\n };\n\n if (iconName && prefix && styles$2[prefix] && styles$2[prefix][iconName]) {\n var icon = styles$2[prefix][iconName];\n return resolve(asFoundIcon(icon));\n }\n var kitToken = null;\n var iconVersion = resolveCustomIconVersion(WINDOW.FontAwesomeKitConfig, iconName);\n\n if (WINDOW.FontAwesomeKitConfig && WINDOW.FontAwesomeKitConfig.token) {\n kitToken = WINDOW.FontAwesomeKitConfig.token;\n }\n\n if (iconName && prefix && !config.showMissingIcons) {\n reject(new MissingIcon(\"Icon is missing for prefix \".concat(prefix, \" with icon name \").concat(iconName)));\n } else {\n resolve(val);\n }\n });\n}\n\nvar styles$3 = namespace.styles;\n\nfunction generateSvgReplacementMutation(node, nodeMeta) {\n var iconName = nodeMeta.iconName,\n title = nodeMeta.title,\n titleId = nodeMeta.titleId,\n prefix = nodeMeta.prefix,\n transform = nodeMeta.transform,\n symbol = nodeMeta.symbol,\n mask = nodeMeta.mask,\n maskId = nodeMeta.maskId,\n extra = nodeMeta.extra;\n return new picked(function (resolve, reject) {\n picked.all([findIcon(iconName, prefix), findIcon(mask.iconName, mask.prefix)]).then(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n main = _ref2[0],\n mask = _ref2[1];\n\n resolve([node, makeInlineSvgAbstract({\n icons: {\n main: main,\n mask: mask\n },\n prefix: prefix,\n iconName: iconName,\n transform: transform,\n symbol: symbol,\n mask: mask,\n maskId: maskId,\n title: title,\n titleId: titleId,\n extra: extra,\n watchable: true\n })]);\n });\n });\n}\n\nfunction generateLayersText(node, nodeMeta) {\n var title = nodeMeta.title,\n transform = nodeMeta.transform,\n extra = nodeMeta.extra;\n var width = null;\n var height = null;\n\n if (IS_IE) {\n var computedFontSize = parseInt(getComputedStyle(node).fontSize, 10);\n var boundingClientRect = node.getBoundingClientRect();\n width = boundingClientRect.width / computedFontSize;\n height = boundingClientRect.height / computedFontSize;\n }\n\n if (config.autoA11y && !title) {\n extra.attributes['aria-hidden'] = 'true';\n }\n\n return picked.resolve([node, makeLayersTextAbstract({\n content: node.innerHTML,\n width: width,\n height: height,\n transform: transform,\n title: title,\n extra: extra,\n watchable: true\n })]);\n}\n\nfunction generateMutation(node) {\n var nodeMeta = parseMeta(node);\n\n if (~nodeMeta.extra.classes.indexOf(LAYERS_TEXT_CLASSNAME)) {\n return generateLayersText(node, nodeMeta);\n } else {\n return generateSvgReplacementMutation(node, nodeMeta);\n }\n}\n\nfunction onTree(root) {\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n if (!IS_DOM) return;\n var htmlClassList = DOCUMENT.documentElement.classList;\n\n var hclAdd = function hclAdd(suffix) {\n return htmlClassList.add(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n };\n\n var hclRemove = function hclRemove(suffix) {\n return htmlClassList.remove(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n };\n\n var prefixes = config.autoFetchSvg ? Object.keys(PREFIX_TO_STYLE) : Object.keys(styles$3);\n var prefixesDomQuery = [\".\".concat(LAYERS_TEXT_CLASSNAME, \":not([\").concat(DATA_FA_I2SVG, \"])\")].concat(prefixes.map(function (p) {\n return \".\".concat(p, \":not([\").concat(DATA_FA_I2SVG, \"])\");\n })).join(', ');\n\n if (prefixesDomQuery.length === 0) {\n return;\n }\n\n var candidates = [];\n\n try {\n candidates = toArray(root.querySelectorAll(prefixesDomQuery));\n } catch (e) {// noop\n }\n\n if (candidates.length > 0) {\n hclAdd('pending');\n hclRemove('complete');\n } else {\n return;\n }\n\n var mark = perf.begin('onTree');\n var mutations = candidates.reduce(function (acc, node) {\n try {\n var mutation = generateMutation(node);\n\n if (mutation) {\n acc.push(mutation);\n }\n } catch (e) {\n if (!PRODUCTION) {\n if (e instanceof MissingIcon) {\n console.error(e);\n }\n }\n }\n\n return acc;\n }, []);\n return new picked(function (resolve, reject) {\n picked.all(mutations).then(function (resolvedMutations) {\n perform(resolvedMutations, function () {\n hclAdd('active');\n hclAdd('complete');\n hclRemove('pending');\n if (typeof callback === 'function') callback();\n mark();\n resolve();\n });\n }).catch(function () {\n mark();\n reject();\n });\n });\n}\nfunction onNode(node) {\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n generateMutation(node).then(function (mutation) {\n if (mutation) {\n perform([mutation], callback);\n }\n });\n}\n\nfunction replaceForPosition(node, position) {\n var pendingAttribute = \"\".concat(DATA_FA_PSEUDO_ELEMENT_PENDING).concat(position.replace(':', '-'));\n return new picked(function (resolve, reject) {\n if (node.getAttribute(pendingAttribute) !== null) {\n // This node is already being processed\n return resolve();\n }\n\n var children = toArray(node.children);\n var alreadyProcessedPseudoElement = children.filter(function (c) {\n return c.getAttribute(DATA_FA_PSEUDO_ELEMENT) === position;\n })[0];\n var styles = WINDOW.getComputedStyle(node, position);\n var fontFamily = styles.getPropertyValue('font-family').match(FONT_FAMILY_PATTERN);\n var fontWeight = styles.getPropertyValue('font-weight');\n var content = styles.getPropertyValue('content');\n\n if (alreadyProcessedPseudoElement && !fontFamily) {\n // If we've already processed it but the current computed style does not result in a font-family,\n // that probably means that a class name that was previously present to make the icon has been\n // removed. So we now should delete the icon.\n node.removeChild(alreadyProcessedPseudoElement);\n return resolve();\n } else if (fontFamily && content !== 'none' && content !== '') {\n var _content = styles.getPropertyValue('content');\n\n var prefix = ~['Solid', 'Regular', 'Light', 'Duotone', 'Brands', 'Kit'].indexOf(fontFamily[2]) ? STYLE_TO_PREFIX[fontFamily[2].toLowerCase()] : FONT_WEIGHT_TO_PREFIX[fontWeight];\n var hexValue = toHex(_content.length === 3 ? _content.substr(1, 1) : _content);\n var iconName = byUnicode(prefix, hexValue);\n var iconIdentifier = iconName; // Only convert the pseudo element in this :before/:after position into an icon if we haven't\n // already done so with the same prefix and iconName\n\n if (iconName && (!alreadyProcessedPseudoElement || alreadyProcessedPseudoElement.getAttribute(DATA_PREFIX) !== prefix || alreadyProcessedPseudoElement.getAttribute(DATA_ICON) !== iconIdentifier)) {\n node.setAttribute(pendingAttribute, iconIdentifier);\n\n if (alreadyProcessedPseudoElement) {\n // Delete the old one, since we're replacing it with a new one\n node.removeChild(alreadyProcessedPseudoElement);\n }\n\n var meta = blankMeta();\n var extra = meta.extra;\n extra.attributes[DATA_FA_PSEUDO_ELEMENT] = position;\n findIcon(iconName, prefix).then(function (main) {\n var abstract = makeInlineSvgAbstract(_objectSpread({}, meta, {\n icons: {\n main: main,\n mask: emptyCanonicalIcon()\n },\n prefix: prefix,\n iconName: iconIdentifier,\n extra: extra,\n watchable: true\n }));\n var element = DOCUMENT.createElement('svg');\n\n if (position === ':before') {\n node.insertBefore(element, node.firstChild);\n } else {\n node.appendChild(element);\n }\n\n element.outerHTML = abstract.map(function (a) {\n return toHtml(a);\n }).join('\\n');\n node.removeAttribute(pendingAttribute);\n resolve();\n }).catch(reject);\n } else {\n resolve();\n }\n } else {\n resolve();\n }\n });\n}\n\nfunction replace(node) {\n return picked.all([replaceForPosition(node, ':before'), replaceForPosition(node, ':after')]);\n}\n\nfunction processable(node) {\n return node.parentNode !== document.head && !~TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS.indexOf(node.tagName.toUpperCase()) && !node.getAttribute(DATA_FA_PSEUDO_ELEMENT) && (!node.parentNode || node.parentNode.tagName !== 'svg');\n}\n\nfunction searchPseudoElements (root) {\n if (!IS_DOM) return;\n return new picked(function (resolve, reject) {\n var operations = toArray(root.querySelectorAll('*')).filter(processable).map(replace);\n var end = perf.begin('searchPseudoElements');\n disableObservation();\n picked.all(operations).then(function () {\n end();\n enableObservation();\n resolve();\n }).catch(function () {\n end();\n enableObservation();\n reject();\n });\n });\n}\n\nvar baseStyles = \"svg:not(:root).svg-inline--fa {\\n overflow: visible;\\n}\\n\\n.svg-inline--fa {\\n display: inline-block;\\n font-size: inherit;\\n height: 1em;\\n overflow: visible;\\n vertical-align: -0.125em;\\n}\\n.svg-inline--fa.fa-lg {\\n vertical-align: -0.225em;\\n}\\n.svg-inline--fa.fa-w-1 {\\n width: 0.0625em;\\n}\\n.svg-inline--fa.fa-w-2 {\\n width: 0.125em;\\n}\\n.svg-inline--fa.fa-w-3 {\\n width: 0.1875em;\\n}\\n.svg-inline--fa.fa-w-4 {\\n width: 0.25em;\\n}\\n.svg-inline--fa.fa-w-5 {\\n width: 0.3125em;\\n}\\n.svg-inline--fa.fa-w-6 {\\n width: 0.375em;\\n}\\n.svg-inline--fa.fa-w-7 {\\n width: 0.4375em;\\n}\\n.svg-inline--fa.fa-w-8 {\\n width: 0.5em;\\n}\\n.svg-inline--fa.fa-w-9 {\\n width: 0.5625em;\\n}\\n.svg-inline--fa.fa-w-10 {\\n width: 0.625em;\\n}\\n.svg-inline--fa.fa-w-11 {\\n width: 0.6875em;\\n}\\n.svg-inline--fa.fa-w-12 {\\n width: 0.75em;\\n}\\n.svg-inline--fa.fa-w-13 {\\n width: 0.8125em;\\n}\\n.svg-inline--fa.fa-w-14 {\\n width: 0.875em;\\n}\\n.svg-inline--fa.fa-w-15 {\\n width: 0.9375em;\\n}\\n.svg-inline--fa.fa-w-16 {\\n width: 1em;\\n}\\n.svg-inline--fa.fa-w-17 {\\n width: 1.0625em;\\n}\\n.svg-inline--fa.fa-w-18 {\\n width: 1.125em;\\n}\\n.svg-inline--fa.fa-w-19 {\\n width: 1.1875em;\\n}\\n.svg-inline--fa.fa-w-20 {\\n width: 1.25em;\\n}\\n.svg-inline--fa.fa-pull-left {\\n margin-right: 0.3em;\\n width: auto;\\n}\\n.svg-inline--fa.fa-pull-right {\\n margin-left: 0.3em;\\n width: auto;\\n}\\n.svg-inline--fa.fa-border {\\n height: 1.5em;\\n}\\n.svg-inline--fa.fa-li {\\n width: 2em;\\n}\\n.svg-inline--fa.fa-fw {\\n width: 1.25em;\\n}\\n\\n.fa-layers svg.svg-inline--fa {\\n bottom: 0;\\n left: 0;\\n margin: auto;\\n position: absolute;\\n right: 0;\\n top: 0;\\n}\\n\\n.fa-layers {\\n display: inline-block;\\n height: 1em;\\n position: relative;\\n text-align: center;\\n vertical-align: -0.125em;\\n width: 1em;\\n}\\n.fa-layers svg.svg-inline--fa {\\n -webkit-transform-origin: center center;\\n transform-origin: center center;\\n}\\n\\n.fa-layers-counter, .fa-layers-text {\\n display: inline-block;\\n position: absolute;\\n text-align: center;\\n}\\n\\n.fa-layers-text {\\n left: 50%;\\n top: 50%;\\n -webkit-transform: translate(-50%, -50%);\\n transform: translate(-50%, -50%);\\n -webkit-transform-origin: center center;\\n transform-origin: center center;\\n}\\n\\n.fa-layers-counter {\\n background-color: #ff253a;\\n border-radius: 1em;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n color: #fff;\\n height: 1.5em;\\n line-height: 1;\\n max-width: 5em;\\n min-width: 1.5em;\\n overflow: hidden;\\n padding: 0.25em;\\n right: 0;\\n text-overflow: ellipsis;\\n top: 0;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: top right;\\n transform-origin: top right;\\n}\\n\\n.fa-layers-bottom-right {\\n bottom: 0;\\n right: 0;\\n top: auto;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: bottom right;\\n transform-origin: bottom right;\\n}\\n\\n.fa-layers-bottom-left {\\n bottom: 0;\\n left: 0;\\n right: auto;\\n top: auto;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: bottom left;\\n transform-origin: bottom left;\\n}\\n\\n.fa-layers-top-right {\\n right: 0;\\n top: 0;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: top right;\\n transform-origin: top right;\\n}\\n\\n.fa-layers-top-left {\\n left: 0;\\n right: auto;\\n top: 0;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: top left;\\n transform-origin: top left;\\n}\\n\\n.fa-lg {\\n font-size: 1.3333333333em;\\n line-height: 0.75em;\\n vertical-align: -0.0667em;\\n}\\n\\n.fa-xs {\\n font-size: 0.75em;\\n}\\n\\n.fa-sm {\\n font-size: 0.875em;\\n}\\n\\n.fa-1x {\\n font-size: 1em;\\n}\\n\\n.fa-2x {\\n font-size: 2em;\\n}\\n\\n.fa-3x {\\n font-size: 3em;\\n}\\n\\n.fa-4x {\\n font-size: 4em;\\n}\\n\\n.fa-5x {\\n font-size: 5em;\\n}\\n\\n.fa-6x {\\n font-size: 6em;\\n}\\n\\n.fa-7x {\\n font-size: 7em;\\n}\\n\\n.fa-8x {\\n font-size: 8em;\\n}\\n\\n.fa-9x {\\n font-size: 9em;\\n}\\n\\n.fa-10x {\\n font-size: 10em;\\n}\\n\\n.fa-fw {\\n text-align: center;\\n width: 1.25em;\\n}\\n\\n.fa-ul {\\n list-style-type: none;\\n margin-left: 2.5em;\\n padding-left: 0;\\n}\\n.fa-ul > li {\\n position: relative;\\n}\\n\\n.fa-li {\\n left: -2em;\\n position: absolute;\\n text-align: center;\\n width: 2em;\\n line-height: inherit;\\n}\\n\\n.fa-border {\\n border: solid 0.08em #eee;\\n border-radius: 0.1em;\\n padding: 0.2em 0.25em 0.15em;\\n}\\n\\n.fa-pull-left {\\n float: left;\\n}\\n\\n.fa-pull-right {\\n float: right;\\n}\\n\\n.fa.fa-pull-left,\\n.fas.fa-pull-left,\\n.far.fa-pull-left,\\n.fal.fa-pull-left,\\n.fab.fa-pull-left {\\n margin-right: 0.3em;\\n}\\n.fa.fa-pull-right,\\n.fas.fa-pull-right,\\n.far.fa-pull-right,\\n.fal.fa-pull-right,\\n.fab.fa-pull-right {\\n margin-left: 0.3em;\\n}\\n\\n.fa-spin {\\n -webkit-animation: fa-spin 2s infinite linear;\\n animation: fa-spin 2s infinite linear;\\n}\\n\\n.fa-pulse {\\n -webkit-animation: fa-spin 1s infinite steps(8);\\n animation: fa-spin 1s infinite steps(8);\\n}\\n\\n@-webkit-keyframes fa-spin {\\n 0% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n\\n@keyframes fa-spin {\\n 0% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n.fa-rotate-90 {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)\\\";\\n -webkit-transform: rotate(90deg);\\n transform: rotate(90deg);\\n}\\n\\n.fa-rotate-180 {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)\\\";\\n -webkit-transform: rotate(180deg);\\n transform: rotate(180deg);\\n}\\n\\n.fa-rotate-270 {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)\\\";\\n -webkit-transform: rotate(270deg);\\n transform: rotate(270deg);\\n}\\n\\n.fa-flip-horizontal {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)\\\";\\n -webkit-transform: scale(-1, 1);\\n transform: scale(-1, 1);\\n}\\n\\n.fa-flip-vertical {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\\\";\\n -webkit-transform: scale(1, -1);\\n transform: scale(1, -1);\\n}\\n\\n.fa-flip-both, .fa-flip-horizontal.fa-flip-vertical {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\\\";\\n -webkit-transform: scale(-1, -1);\\n transform: scale(-1, -1);\\n}\\n\\n:root .fa-rotate-90,\\n:root .fa-rotate-180,\\n:root .fa-rotate-270,\\n:root .fa-flip-horizontal,\\n:root .fa-flip-vertical,\\n:root .fa-flip-both {\\n -webkit-filter: none;\\n filter: none;\\n}\\n\\n.fa-stack {\\n display: inline-block;\\n height: 2em;\\n position: relative;\\n width: 2.5em;\\n}\\n\\n.fa-stack-1x,\\n.fa-stack-2x {\\n bottom: 0;\\n left: 0;\\n margin: auto;\\n position: absolute;\\n right: 0;\\n top: 0;\\n}\\n\\n.svg-inline--fa.fa-stack-1x {\\n height: 1em;\\n width: 1.25em;\\n}\\n.svg-inline--fa.fa-stack-2x {\\n height: 2em;\\n width: 2.5em;\\n}\\n\\n.fa-inverse {\\n color: #fff;\\n}\\n\\n.sr-only {\\n border: 0;\\n clip: rect(0, 0, 0, 0);\\n height: 1px;\\n margin: -1px;\\n overflow: hidden;\\n padding: 0;\\n position: absolute;\\n width: 1px;\\n}\\n\\n.sr-only-focusable:active, .sr-only-focusable:focus {\\n clip: auto;\\n height: auto;\\n margin: 0;\\n overflow: visible;\\n position: static;\\n width: auto;\\n}\\n\\n.svg-inline--fa .fa-primary {\\n fill: var(--fa-primary-color, currentColor);\\n opacity: 1;\\n opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa .fa-secondary {\\n fill: var(--fa-secondary-color, currentColor);\\n opacity: 0.4;\\n opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-primary {\\n opacity: 0.4;\\n opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-secondary {\\n opacity: 1;\\n opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa mask .fa-primary,\\n.svg-inline--fa mask .fa-secondary {\\n fill: black;\\n}\\n\\n.fad.fa-inverse {\\n color: #fff;\\n}\";\n\nfunction css () {\n var dfp = DEFAULT_FAMILY_PREFIX;\n var drc = DEFAULT_REPLACEMENT_CLASS;\n var fp = config.familyPrefix;\n var rc = config.replacementClass;\n var s = baseStyles;\n\n if (fp !== dfp || rc !== drc) {\n var dPatt = new RegExp(\"\\\\.\".concat(dfp, \"\\\\-\"), 'g');\n var customPropPatt = new RegExp(\"\\\\--\".concat(dfp, \"\\\\-\"), 'g');\n var rPatt = new RegExp(\"\\\\.\".concat(drc), 'g');\n s = s.replace(dPatt, \".\".concat(fp, \"-\")).replace(customPropPatt, \"--\".concat(fp, \"-\")).replace(rPatt, \".\".concat(rc));\n }\n\n return s;\n}\n\nvar Library =\n/*#__PURE__*/\nfunction () {\n function Library() {\n _classCallCheck(this, Library);\n\n this.definitions = {};\n }\n\n _createClass(Library, [{\n key: \"add\",\n value: function add() {\n var _this = this;\n\n for (var _len = arguments.length, definitions = new Array(_len), _key = 0; _key < _len; _key++) {\n definitions[_key] = arguments[_key];\n }\n\n var additions = definitions.reduce(this._pullDefinitions, {});\n Object.keys(additions).forEach(function (key) {\n _this.definitions[key] = _objectSpread({}, _this.definitions[key] || {}, additions[key]);\n defineIcons(key, additions[key]);\n build();\n });\n }\n }, {\n key: \"reset\",\n value: function reset() {\n this.definitions = {};\n }\n }, {\n key: \"_pullDefinitions\",\n value: function _pullDefinitions(additions, definition) {\n var normalized = definition.prefix && definition.iconName && definition.icon ? {\n 0: definition\n } : definition;\n Object.keys(normalized).map(function (key) {\n var _normalized$key = normalized[key],\n prefix = _normalized$key.prefix,\n iconName = _normalized$key.iconName,\n icon = _normalized$key.icon;\n if (!additions[prefix]) additions[prefix] = {};\n additions[prefix][iconName] = icon;\n });\n return additions;\n }\n }]);\n\n return Library;\n}();\n\nfunction ensureCss() {\n if (config.autoAddCss && !_cssInserted) {\n insertCss(css());\n\n _cssInserted = true;\n }\n}\n\nfunction apiObject(val, abstractCreator) {\n Object.defineProperty(val, 'abstract', {\n get: abstractCreator\n });\n Object.defineProperty(val, 'html', {\n get: function get() {\n return val.abstract.map(function (a) {\n return toHtml(a);\n });\n }\n });\n Object.defineProperty(val, 'node', {\n get: function get() {\n if (!IS_DOM) return;\n var container = DOCUMENT.createElement('div');\n container.innerHTML = val.html;\n return container.children;\n }\n });\n return val;\n}\n\nfunction findIconDefinition(iconLookup) {\n var _iconLookup$prefix = iconLookup.prefix,\n prefix = _iconLookup$prefix === void 0 ? 'fa' : _iconLookup$prefix,\n iconName = iconLookup.iconName;\n if (!iconName) return;\n return iconFromMapping(library.definitions, prefix, iconName) || iconFromMapping(namespace.styles, prefix, iconName);\n}\n\nfunction resolveIcons(next) {\n return function (maybeIconDefinition) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var iconDefinition = (maybeIconDefinition || {}).icon ? maybeIconDefinition : findIconDefinition(maybeIconDefinition || {});\n var mask = params.mask;\n\n if (mask) {\n mask = (mask || {}).icon ? mask : findIconDefinition(mask || {});\n }\n\n return next(iconDefinition, _objectSpread({}, params, {\n mask: mask\n }));\n };\n}\n\nvar library = new Library();\nvar noAuto = function noAuto() {\n config.autoReplaceSvg = false;\n config.observeMutations = false;\n disconnect();\n};\nvar _cssInserted = false;\nvar dom = {\n i2svg: function i2svg() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (IS_DOM) {\n ensureCss();\n var _params$node = params.node,\n node = _params$node === void 0 ? DOCUMENT : _params$node,\n _params$callback = params.callback,\n callback = _params$callback === void 0 ? function () {} : _params$callback;\n\n if (config.searchPseudoElements) {\n searchPseudoElements(node);\n }\n\n return onTree(node, callback);\n } else {\n return picked.reject('Operation requires a DOM of some kind.');\n }\n },\n css: css,\n insertCss: function insertCss$$1() {\n if (!_cssInserted) {\n insertCss(css());\n\n _cssInserted = true;\n }\n },\n watch: function watch() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var autoReplaceSvgRoot = params.autoReplaceSvgRoot,\n observeMutationsRoot = params.observeMutationsRoot;\n\n if (config.autoReplaceSvg === false) {\n config.autoReplaceSvg = true;\n }\n\n config.observeMutations = true;\n domready(function () {\n autoReplace({\n autoReplaceSvgRoot: autoReplaceSvgRoot\n });\n observe({\n treeCallback: onTree,\n nodeCallback: onNode,\n pseudoElementsCallback: searchPseudoElements,\n observeMutationsRoot: observeMutationsRoot\n });\n });\n }\n};\nvar parse = {\n transform: function transform(transformString) {\n return parseTransformString(transformString);\n }\n};\nvar icon = resolveIcons(function (iconDefinition) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$transform = params.transform,\n transform = _params$transform === void 0 ? meaninglessTransform : _params$transform,\n _params$symbol = params.symbol,\n symbol = _params$symbol === void 0 ? false : _params$symbol,\n _params$mask = params.mask,\n mask = _params$mask === void 0 ? null : _params$mask,\n _params$maskId = params.maskId,\n maskId = _params$maskId === void 0 ? null : _params$maskId,\n _params$title = params.title,\n title = _params$title === void 0 ? null : _params$title,\n _params$titleId = params.titleId,\n titleId = _params$titleId === void 0 ? null : _params$titleId,\n _params$classes = params.classes,\n classes = _params$classes === void 0 ? [] : _params$classes,\n _params$attributes = params.attributes,\n attributes = _params$attributes === void 0 ? {} : _params$attributes,\n _params$styles = params.styles,\n styles = _params$styles === void 0 ? {} : _params$styles;\n if (!iconDefinition) return;\n var prefix = iconDefinition.prefix,\n iconName = iconDefinition.iconName,\n icon = iconDefinition.icon;\n return apiObject(_objectSpread({\n type: 'icon'\n }, iconDefinition), function () {\n ensureCss();\n\n if (config.autoA11y) {\n if (title) {\n attributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(titleId || nextUniqueId());\n } else {\n attributes['aria-hidden'] = 'true';\n attributes['focusable'] = 'false';\n }\n }\n\n return makeInlineSvgAbstract({\n icons: {\n main: asFoundIcon(icon),\n mask: mask ? asFoundIcon(mask.icon) : {\n found: false,\n width: null,\n height: null,\n icon: {}\n }\n },\n prefix: prefix,\n iconName: iconName,\n transform: _objectSpread({}, meaninglessTransform, transform),\n symbol: symbol,\n title: title,\n maskId: maskId,\n titleId: titleId,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: classes\n }\n });\n });\n});\nvar text = function text(content) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$transform2 = params.transform,\n transform = _params$transform2 === void 0 ? meaninglessTransform : _params$transform2,\n _params$title2 = params.title,\n title = _params$title2 === void 0 ? null : _params$title2,\n _params$classes2 = params.classes,\n classes = _params$classes2 === void 0 ? [] : _params$classes2,\n _params$attributes2 = params.attributes,\n attributes = _params$attributes2 === void 0 ? {} : _params$attributes2,\n _params$styles2 = params.styles,\n styles = _params$styles2 === void 0 ? {} : _params$styles2;\n return apiObject({\n type: 'text',\n content: content\n }, function () {\n ensureCss();\n return makeLayersTextAbstract({\n content: content,\n transform: _objectSpread({}, meaninglessTransform, transform),\n title: title,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: [\"\".concat(config.familyPrefix, \"-layers-text\")].concat(_toConsumableArray(classes))\n }\n });\n });\n};\nvar counter = function counter(content) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$title3 = params.title,\n title = _params$title3 === void 0 ? null : _params$title3,\n _params$classes3 = params.classes,\n classes = _params$classes3 === void 0 ? [] : _params$classes3,\n _params$attributes3 = params.attributes,\n attributes = _params$attributes3 === void 0 ? {} : _params$attributes3,\n _params$styles3 = params.styles,\n styles = _params$styles3 === void 0 ? {} : _params$styles3;\n return apiObject({\n type: 'counter',\n content: content\n }, function () {\n ensureCss();\n return makeLayersCounterAbstract({\n content: content.toString(),\n title: title,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: [\"\".concat(config.familyPrefix, \"-layers-counter\")].concat(_toConsumableArray(classes))\n }\n });\n });\n};\nvar layer = function layer(assembler) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$classes4 = params.classes,\n classes = _params$classes4 === void 0 ? [] : _params$classes4;\n return apiObject({\n type: 'layer'\n }, function () {\n ensureCss();\n var children = [];\n assembler(function (args) {\n Array.isArray(args) ? args.map(function (a) {\n children = children.concat(a.abstract);\n }) : children = children.concat(args.abstract);\n });\n return [{\n tag: 'span',\n attributes: {\n class: [\"\".concat(config.familyPrefix, \"-layers\")].concat(_toConsumableArray(classes)).join(' ')\n },\n children: children\n }];\n });\n};\nvar api = {\n noAuto: noAuto,\n config: config,\n dom: dom,\n library: library,\n parse: parse,\n findIconDefinition: findIconDefinition,\n icon: icon,\n text: text,\n counter: counter,\n layer: layer,\n toHtml: toHtml\n};\n\nvar autoReplace = function autoReplace() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var _params$autoReplaceSv = params.autoReplaceSvgRoot,\n autoReplaceSvgRoot = _params$autoReplaceSv === void 0 ? DOCUMENT : _params$autoReplaceSv;\n if ((Object.keys(namespace.styles).length > 0 || config.autoFetchSvg) && IS_DOM && config.autoReplaceSvg) api.dom.i2svg({\n node: autoReplaceSvgRoot\n });\n};\n\nexport { icon, noAuto, config, toHtml, layer, text, counter, library, dom, parse, findIconDefinition };\n","/**!\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 for (var i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n return 1;\n }\n }\n return 0;\n}();\n\nfunction microtaskDebounce(fn) {\n var called = false;\n return function () {\n if (called) {\n return;\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/**\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*/\nvar debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce;\n\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 */\nfunction isFunction(functionToCheck) {\n var getType = {};\n return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';\n}\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 */\nfunction getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n var window = element.ownerDocument.defaultView;\n var css = window.getComputedStyle(element, null);\n return property ? css[property] : css;\n}\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 */\nfunction getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\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 */\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 case '#document':\n return element.body;\n }\n\n // Firefox want us to check `-x` and `-y` variations as well\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/**\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 */\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/**\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 */\nfunction isIE(version) {\n if (version === 11) {\n return isIE11;\n }\n if (version === 10) {\n return isIE10;\n }\n return isIE11 || isIE10;\n}\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 */\nfunction getOffsetParent(element) {\n if (!element) {\n return document.documentElement;\n }\n\n var noOffsetParent = isIE(10) ? document.body : null;\n\n // NOTE: 1 DOM access here\n var offsetParent = element.offsetParent || null;\n // Skip hidden elements which don't have an offsetParent\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 }\n\n // .offsetParent will return the closest TH, TD or TABLE in case\n // no offsetParent is present, I hate this job...\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 return nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element;\n}\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 */\nfunction getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\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 */\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 }\n\n // Here we make sure to give as \"start\" the element that comes first in the DOM\n var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING;\n var start = order ? element1 : element2;\n var end = order ? element2 : element1;\n\n // Get common ancestor container\n var range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n var commonAncestorContainer = range.commonAncestorContainer;\n\n // 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 }\n\n // one of the nodes is inside shadowDOM, find which one\n var element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\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 */\nfunction getScroll(element) {\n var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top';\n\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/*\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 */\nfunction includeScroll(rect, element) {\n var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\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/*\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\nfunction getBordersSize(styles, axis) {\n var sideA = axis === 'x' ? 'Left' : 'Top';\n var sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\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\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\n\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/**\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 */\nfunction getClientRect(offsets) {\n return _extends({}, offsets, {\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height\n });\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 */\nfunction getBoundingClientRect(element) {\n var rect = {};\n\n // 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 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 };\n\n // subtract scrollbar size from sizes\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\n var horizScrollbar = element.offsetWidth - width;\n var vertScrollbar = element.offsetHeight - height;\n\n // 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 if (horizScrollbar || vertScrollbar) {\n var styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n\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\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\n var styles = getStyleComputedProperty(parent);\n var borderTopWidth = parseFloat(styles.borderTopWidth);\n var borderLeftWidth = parseFloat(styles.borderLeftWidth);\n\n // In cases where the parent is fixed, we must ignore negative scroll in offset calc\n if (fixedPosition && isHTML) {\n parentRect.top = Math.max(parentRect.top, 0);\n parentRect.left = Math.max(parentRect.left, 0);\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;\n\n // 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 if (!isIE10 && isHTML) {\n var marginTop = parseFloat(styles.marginTop);\n var marginLeft = parseFloat(styles.marginLeft);\n\n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft;\n\n // Attach marginTop and marginLeft because in some circumstances we may need them\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\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\n var scrollTop = !excludeScroll ? getScroll(html) : 0;\n var scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\n\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\n return getClientRect(offset);\n}\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 */\nfunction isFixed(element) {\n var nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n var parentNode = getParentNode(element);\n if (!parentNode) {\n return false;\n }\n return isFixed(parentNode);\n}\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\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 var el = element.parentElement;\n while (el && getStyleComputedProperty(el, 'transform') === 'none') {\n el = el.parentElement;\n }\n return el || document.documentElement;\n}\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 */\nfunction getBoundaries(popper, reference, padding, boundariesElement) {\n var fixedPosition = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n // NOTE: 1 DOM access here\n\n var boundaries = { top: 0, left: 0 };\n var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n\n // Handle viewport case\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 if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(reference));\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);\n\n // In case of HTML, we need a different computation\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 }\n\n // Add paddings\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\n return boundaries;\n}\n\nfunction getArea(_ref) {\n var width = _ref.width,\n height = _ref.height;\n\n return width * height;\n}\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 */\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\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\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\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\n var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key;\n\n var variation = placement.split('-')[1];\n\n return computedPlacement + (variation ? '-' + variation : '');\n}\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 */\nfunction getReferenceOffsets(state, popper, reference) {\n var fixedPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);\n}\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 */\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/**\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 */\nfunction getOppositePlacement(placement) {\n var hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\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 */\nfunction getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n // Get popper node sizes\n var popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n var popperOffsets = {\n width: popperRect.width,\n height: popperRect.height\n };\n\n // depending by the popper placement we have to compute its offsets slightly differently\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\n popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2;\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/**\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 */\nfunction find(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n }\n\n // use `filter` to obtain the same behavior of `find`\n return arr.filter(check)[0];\n}\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 */\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 }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n var match = find(arr, function (obj) {\n return obj[prop] === value;\n });\n return arr.indexOf(match);\n}\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 */\nfunction runModifiers(modifiers, data, ends) {\n var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\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 var fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\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\n data = fn(data, modifier);\n }\n });\n\n return data;\n}\n\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.
\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\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 };\n\n // compute reference element offsets\n data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference, this.options.positionFixed);\n\n // 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 data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding);\n\n // store the computed placement inside `originalPlacement`\n data.originalPlacement = data.placement;\n\n data.positionFixed = this.options.positionFixed;\n\n // compute the popper offsets\n data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement);\n\n data.offsets.popper.position = this.options.positionFixed ? 'fixed' : 'absolute';\n\n // run the modifiers\n data = runModifiers(this.modifiers, data);\n\n // the first `update` will call `onCreate` callback\n // the other ones will call `onUpdate` callback\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/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\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/**\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 */\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 if (typeof document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n\n/**\n * Destroys the popper.\n * @method\n * @memberof Popper\n */\nfunction destroy() {\n this.state.isDestroyed = true;\n\n // touch DOM only if `applyStyle` modifier is enabled\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();\n\n // remove the popper if user explicitly asked for the deletion on destroy\n // do not use `remove` because IE11 doesn't support it\n if (this.options.removeOnDestroy) {\n this.popper.parentNode.removeChild(this.popper);\n }\n return this;\n}\n\n/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\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, { passive: true });\n\n if (!isBody) {\n attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents);\n }\n scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction setupEventListeners(reference, options, state, updateBound) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n // Scroll event listener on scroll parents\n var scrollElement = getScrollParent(reference);\n attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents);\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n\n return state;\n}\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 */\nfunction enableEventListeners() {\n if (!this.state.eventsEnabled) {\n this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate);\n }\n}\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound);\n\n // Remove scroll event listener on scroll parents\n state.scrollParents.forEach(function (target) {\n target.removeEventListener('scroll', state.updateBound);\n });\n\n // Reset state\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\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 */\nfunction disableEventListeners() {\n if (this.state.eventsEnabled) {\n cancelAnimationFrame(this.scheduleUpdate);\n this.state = removeEventListeners(this.reference, this.state);\n }\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 */\nfunction isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\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 */\nfunction setStyles(element, styles) {\n Object.keys(styles).forEach(function (prop) {\n var unit = '';\n // add unit if the value is numeric and is one of the following\n if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\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 */\nfunction setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function (prop) {\n var value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\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 */\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);\n\n // any property present in `data.attributes` will be applied to the popper,\n // they will be set as HTML attributes of the element\n setAttributes(data.instance.popper, data.attributes);\n\n // if arrowElement is defined and arrowStyles has some properties\n if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n setStyles(data.arrowElement, data.arrowStyles);\n }\n\n return data;\n}\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 */\nfunction applyStyleOnLoad(reference, popper, options, modifierOptions, state) {\n // compute reference element offsets\n var referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed);\n\n // 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 var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding);\n\n popper.setAttribute('x-placement', placement);\n\n // Apply `position` to popper before anything else because\n // without the position applied we can't guarantee correct computations\n setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' });\n\n return options;\n}\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 */\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\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\n var horizontalToInteger = !shouldRound ? noRound : isVertical || isVariation || sameWidthParity ? round : floor;\n var verticalToInteger = !shouldRound ? noRound : round;\n\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/**\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 */\nfunction computeStyle(data, options) {\n var x = options.x,\n y = options.y;\n var popper = data.offsets.popper;\n\n // 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 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 var gpuAcceleration = legacyGpuAccelerationOption !== undefined ? legacyGpuAccelerationOption : options.gpuAcceleration;\n\n var offsetParent = getOffsetParent(data.instance.popper);\n var offsetParentRect = getBoundingClientRect(offsetParent);\n\n // Styles\n var styles = {\n position: popper.position\n };\n\n var offsets = getRoundedOffsets(data, window.devicePixelRatio < 2 || !isFirefox);\n\n var sideA = x === 'bottom' ? 'top' : 'bottom';\n var sideB = y === 'right' ? 'left' : 'right';\n\n // 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 var prefixedProperty = getSupportedPropertyName('transform');\n\n // 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 var left = void 0,\n top = void 0;\n if (sideA === 'bottom') {\n // when offsetParent is 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 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 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 }\n\n // Attributes\n var attributes = {\n 'x-placement': data.placement\n };\n\n // Update `data` attributes, styles and arrowStyles\n data.attributes = _extends({}, attributes, data.attributes);\n data.styles = _extends({}, styles, data.styles);\n data.arrowStyles = _extends({}, data.offsets.arrow, data.arrowStyles);\n\n return data;\n}\n\n/**\n * Helper used to know if the given modifier depends from another one.
\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 */\nfunction isModifierRequired(modifiers, requestingName, requestedName) {\n var requesting = find(modifiers, function (_ref) {\n var name = _ref.name;\n return name === requestingName;\n });\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 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 return isRequired;\n}\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 */\nfunction arrow(data, options) {\n var _data$offsets$arrow;\n\n // arrow depends on keepTogether in order to work\n if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n return data;\n }\n\n var arrowElement = options.element;\n\n // if arrowElement is a string, suppose it's a CSS selector\n if (typeof arrowElement === 'string') {\n arrowElement = data.instance.popper.querySelector(arrowElement);\n\n // if arrowElement is not found, don't run the modifier\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\n var isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\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\n //\n // extends keepTogether behavior making sure the popper and its\n // reference have enough pixels in conjunction\n //\n\n // top/left side\n if (reference[opSide] - arrowElementSize < popper[side]) {\n data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize);\n }\n // bottom/right side\n if (reference[side] + arrowElementSize > popper[opSide]) {\n data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide];\n }\n data.offsets.popper = getClientRect(data.offsets.popper);\n\n // compute center of the popper\n var center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\n\n // Compute the sideValue using the updated popper offsets\n // take popper margin in account because we don't have this info available\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;\n\n // prevent arrowElement from being placed not contiguously to its popper\n sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n\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\n return data;\n}\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 */\nfunction getOppositeVariation(variation) {\n if (variation === 'end') {\n return 'start';\n } else if (variation === 'start') {\n return 'end';\n }\n return variation;\n}\n\n/**\n * List of accepted placements to use as values of the `placement` option.
\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.
\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 */\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'];\n\n// Get rid of `auto` `auto-start` and `auto-end`\nvar validPlacements = placements.slice(3);\n\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 */\nfunction clockwise(placement) {\n var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\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/**\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 */\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\n var placement = data.placement.split('-')[0];\n var placementOpposite = getOppositePlacement(placement);\n var variation = data.placement.split('-')[1] || '';\n\n var flipOrder = [];\n\n switch (options.behavior) {\n case BEHAVIORS.FLIP:\n flipOrder = [placement, placementOpposite];\n break;\n case BEHAVIORS.CLOCKWISE:\n flipOrder = clockwise(placement);\n break;\n case BEHAVIORS.COUNTERCLOCKWISE:\n flipOrder = clockwise(placement, true);\n break;\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\n var popperOffsets = data.offsets.popper;\n var refOffsets = data.offsets.reference;\n\n // using floor because the reference offsets may contain decimals we are not going to consider here\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\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\n var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom;\n\n // flip the variation if required\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n\n // flips variation if reference element overflows boundaries\n var flippedVariationByRef = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom);\n\n // flips variation if popper content overflows boundaries\n var flippedVariationByContent = !!options.flipVariationsByContent && (isVertical && variation === 'start' && overflowsRight || isVertical && variation === 'end' && overflowsLeft || !isVertical && variation === 'start' && overflowsBottom || !isVertical && variation === 'end' && overflowsTop);\n\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 : '');\n\n // this object contains `position`, we want to preserve it along with\n // any additional property we may add in the future\n data.offsets.popper = _extends({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement));\n\n data = runModifiers(data.instance.modifiers, data, 'flip');\n }\n });\n return data;\n}\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 */\nfunction keepTogether(data) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\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 if (popper[opSide] > floor(reference[side])) {\n data.offsets.popper[opSide] = floor(reference[side]);\n }\n\n return data;\n}\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 */\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];\n\n // If it's not a number it's an operator, I guess\n if (!value) {\n return str;\n }\n\n if (unit.indexOf('%') === 0) {\n var element = void 0;\n switch (unit) {\n case '%p':\n element = popperOffsets;\n break;\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 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 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/**\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 */\nfunction parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) {\n var offsets = [0, 0];\n\n // 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 var useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n\n // 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 var fragments = offset.split(/(\\+|\\-)/).map(function (frag) {\n return frag.trim();\n });\n\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 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 }\n\n // If divider is found, we divide the list of values and operands to divide\n // them by ofset X and Y.\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];\n\n // Convert the values with units to absolute pixels to allow our computations\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\n // 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 }, [])\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 });\n\n // Loop trough the offsets arrays and execute the operations\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/**\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 */\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\n var basePlacement = placement.split('-')[0];\n\n var offsets = void 0;\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/**\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 */\nfunction preventOverflow(data, options) {\n var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper);\n\n // 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 if (data.instance.reference === boundariesElement) {\n boundariesElement = getOffsetParent(boundariesElement);\n }\n\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 var transformProp = getSupportedPropertyName('transform');\n var popperStyles = data.instance.popper.style; // assignment to help minification\n var top = popperStyles.top,\n left = popperStyles.left,\n transform = popperStyles[transformProp];\n\n popperStyles.top = '';\n popperStyles.left = '';\n popperStyles[transformProp] = '';\n\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement, data.positionFixed);\n\n // NOTE: DOM access here\n // restores the original style properties after the offsets have been computed\n popperStyles.top = top;\n popperStyles.left = left;\n popperStyles[transformProp] = transform;\n\n options.boundaries = boundaries;\n\n var order = options.priority;\n var popper = data.offsets.popper;\n\n var check = {\n primary: function primary(placement) {\n var value = popper[placement];\n if (popper[placement] < boundaries[placement] && !options.escapeWithReference) {\n value = Math.max(popper[placement], boundaries[placement]);\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 if (popper[placement] > boundaries[placement] && !options.escapeWithReference) {\n value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height));\n }\n return defineProperty({}, mainSide, value);\n }\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\n data.offsets.popper = popper;\n\n return data;\n}\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 */\nfunction shift(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var shiftvariation = placement.split('-')[1];\n\n // if shift shiftvariation is specified, run the modifier\n if (shiftvariation) {\n var _data$offsets = data.offsets,\n reference = _data$offsets.reference,\n popper = _data$offsets.popper;\n\n var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n var side = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n\n var shiftOffsets = {\n start: defineProperty({}, side, reference[side]),\n end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement])\n };\n\n data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]);\n }\n\n return data;\n}\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 */\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/**\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 */\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\n var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n data.placement = getOppositePlacement(placement);\n data.offsets.popper = getClientRect(popper);\n\n return data;\n}\n\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.
\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.
\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 */\nvar modifiers = {\n /**\n * Modifier used to shift the popper on the start or end of its reference\n * element.
\n * It will read the variation of the `placement` property.
\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 /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\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.
\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.
\n * The latter is a deprecated method because it leads to confusion and will be\n * removed in v2.
\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 /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: offset,\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.
\n * We can say it has \"escaped the boundaries\" — or just \"escaped\".
\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 /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: preventOverflow,\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 * @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 * @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 /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\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 /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: arrow,\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 /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: flip,\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 * @prop {number} padding=5\n * The popper will flip if it hits the edges of the `boundariesElement`\n */\n padding: 5,\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 * @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 * @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 /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n enabled: false,\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 /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\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 /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: computeStyle,\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 * @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 * @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 /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: applyStyle,\n /** @prop {Function} */\n onLoad: applyStyleOnLoad,\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/**\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.
\n * These can be overridden using the `options` argument of Popper.js.
\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 */\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.
\n * By default, it is set to no-op.
\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.
\n * By default, it is set to no-op.
\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/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n\n// Utils\n// Methods\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 };\n\n // make update() debounced, so that it only runs at most once-per-tick\n this.update = debounce(this.update.bind(this));\n\n // with {} we create a new object with the options inside it\n this.options = _extends({}, Popper.Defaults, options);\n\n // init state\n this.state = {\n isDestroyed: false,\n isCreated: false,\n scrollParents: []\n };\n\n // get reference and popper elements (allow jQuery wrappers)\n this.reference = reference && reference.jquery ? reference[0] : reference;\n this.popper = popper && popper.jquery ? popper[0] : popper;\n\n // Deep merge modifiers options\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 });\n\n // Refactoring modifiers' list (Object => Array)\n this.modifiers = Object.keys(this.options.modifiers).map(function (name) {\n return _extends({\n name: name\n }, _this.options.modifiers[name]);\n })\n // sort the modifiers by order\n .sort(function (a, b) {\n return a.order - b.order;\n });\n\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 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 });\n\n // fire the first update to position the popper in the right place\n this.update();\n\n var eventsEnabled = this.options.eventsEnabled;\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 }\n\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 /**\n * Schedules an update. It will run on the next UI update available.\n * @method scheduleUpdate\n * @memberof Popper\n */\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/**\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.
\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;\n\nexport default Popper;\n//# sourceMappingURL=popper.js.map\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nvar prefix = 'fas';\nvar iconName = 'temperature-high';\nvar width = 512;\nvar height = 512;\nvar ligatures = [];\nvar unicode = 'f769';\nvar svgPathData = 'M416 0c-52.9 0-96 43.1-96 96s43.1 96 96 96 96-43.1 96-96-43.1-96-96-96zm0 128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm-160-16C256 50.1 205.9 0 144 0S32 50.1 32 112v166.5C12.3 303.2 0 334 0 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-34-12.3-64.9-32-89.5V112zM144 448c-44.1 0-80-35.9-80-80 0-25.5 12.2-48.9 32-63.8V112c0-26.5 21.5-48 48-48s48 21.5 48 48v192.2c19.8 14.8 32 38.3 32 63.8 0 44.1-35.9 80-80 80zm16-125.1V112c0-8.8-7.2-16-16-16s-16 7.2-16 16v210.9c-18.6 6.6-32 24.2-32 45.1 0 26.5 21.5 48 48 48s48-21.5 48-48c0-20.9-13.4-38.5-32-45.1z';\n\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [\n width,\n height,\n ligatures,\n unicode,\n svgPathData\n ]};\n\nexports.faTemperatureHigh = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = ligatures;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nvar prefix = 'fas';\nvar iconName = 'thermometer-half';\nvar width = 256;\nvar height = 512;\nvar ligatures = [];\nvar unicode = 'f2c9';\nvar svgPathData = 'M192 384c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-23.685 12.876-44.349 32-55.417V224c0-17.673 14.327-32 32-32s32 14.327 32 32v104.583c19.124 11.068 32 31.732 32 55.417zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z';\n\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [\n width,\n height,\n ligatures,\n unicode,\n svgPathData\n ]};\n\nexports.faThermometerHalf = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = ligatures;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/js/index.9f86ca25.js b/dist/js/index.9f86ca25.js new file mode 100644 index 000000000..f23ff575c --- /dev/null +++ b/dist/js/index.9f86ca25.js @@ -0,0 +1,2 @@ +(function(t){function e(e){for(var s,o,r=e[0],l=e[1],c=e[2],u=0,m=[];u0?a("div",{staticClass:"mb-2 value"},[t._v(" Bezug "),a("fa-icon",{staticClass:"text-primary",attrs:{icon:"arrow-down"}})],1):a("div",{staticClass:"mb-2 value"},[t._v(" Einspeisung "),a("fa-icon",{staticClass:"text-primary",attrs:{icon:"arrow-up"}})],1),a("h2",{staticClass:"value"},[t._v(" "+t._s(t.fmt(t.gridPower))+" "),a("small",{staticClass:"text-muted"},[t._v(t._s(t.fmtUnit(t.gridPower))+"W")])])]):t._e(),t.pvConfigured?a("div",{staticClass:"col-6 col-md-3 mt-3"},[a("div",{staticClass:"mb-2 value"},[t._v(" Erzeugung "),a("fa-icon",{class:{"text-primary":t.pvPower>0,"text-muted":t.pvPower<=0},attrs:{icon:"sun"}})],1),a("h2",{staticClass:"value"},[t._v(" "+t._s(t.fmt(t.pvPower))+" "),a("small",{staticClass:"text-muted"},[t._v(t._s(t.fmtUnit(t.pvPower))+"W")])])]):t._e(),t.batteryConfigured?a("div",{staticClass:"d-md-block col-6 col-md-3 mt-3"},[a("div",{staticClass:"mb-2 value"},[t._v(" Batterie "),a("fa-icon",{staticClass:"text-primary",attrs:{icon:t.batteryIcon}})],1),a("h2",{staticClass:"value"},[t._v(" "+t._s(t.fmt(t.batteryPower))+" "),a("small",{staticClass:"text-muted"},[t._v(t._s(t.fmtUnit(t.batteryPower))+"W")]),a("small",{staticClass:"text-muted"},[t._v("/")]),t._v(" "+t._s(t.batterySoC)+" "),a("small",{staticClass:"text-muted"},[t._v("%")])])]):t._e()])},ht=[],ft={data:function(){return{fmtLimit:100,fmtDigits:1}},methods:{round:function(t,e){var a=10**e;return(Math.round(t*a)/a).toFixed(e)},fmt:function(t){return void 0===t||null===t?0:(t=Math.abs(t),t>=this.fmtLimit?this.round(t/1e3,this.fmtDigits):this.round(t,0))},fmtUnit:function(t){return Math.abs(t)>=this.fmtLimit?"k":""},fmtDuration:function(t){if(t<=0||null==t)return"—";var e="0"+t%60,a="0"+Math.floor(t/60)%60,s=""+Math.floor(t/3600);return s.length<2&&(s="0"+s),s+":"+a.substr(-2)+":"+e.substr(-2)},fmtShortDuration:function(t){if(t<=0||null==t)return"—";var e,a=Math.floor(t/60)%60,s=Math.floor(t/3600);if(s>=1)a="0"+a,e=s+":"+a.substr(-2);else{var i="0"+t%60;e=a+":"+i.substr(-2)}return e},fmtShortDurationUnit:function(t){if(t<=0||null==t)return"";var e=Math.floor(t/3600);return e>=1?"h":"m"}}};const gt=20,bt=["battery-empty","battery-quarter","battery-half","battery-three-quarters","battery-full"];var Ct={name:"SiteDetails",props:{gridConfigured:Boolean,gridPower:Number,pvConfigured:Boolean,pvPower:Number,batteryConfigured:Boolean,batteryPower:Number,batterySoC:Number},data:function(){return{iconIdx:0}},mixins:[ft],computed:{batteryIcon:function(){return Math.abs(this.batteryPower){this.batteryPower>gt?--this.iconIdx<0&&(this.iconIdx=bt.length-1):this.batteryPower=bt.length&&(this.iconIdx=0)},1e3)}},_t=Ct,yt=Object(A["a"])(_t,pt,ht,!1,null,null,null),wt=yt.exports,St=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",[t.multi?a("div",{staticClass:"row"},[a("div",{staticClass:"col-12 col-md-4 d-md-flex mt-3 mt-md-5 align-items-end"},[a("span",{staticClass:"h1 align-bottom"},[t._v(t._s(t.title||"Ladepunkt"))])]),a("div",{staticClass:"col-12 col-md-8 d-none d-md-block mt-3 mt-md-5"},[a("LoadpointDetails",t._b({},"LoadpointDetails",t.details,!1))],1),a("div",{staticClass:"col-12 d-md-none"},[a("div",{staticClass:"row mt-3 pb-3 bg-light"},[a("div",{staticClass:"col-12 mt-3"},[a("Mode",{staticClass:"w-100",attrs:{mode:t.mode,pvConfigured:t.pvConfigured},on:{updated:t.setTargetMode}})],1),t.hasTargetSoC?a("div",{staticClass:"col-12 mt-3"},[a("Soc",{staticClass:"w-100",attrs:{soc:t.targetSoC,levels:t.socLevels},on:{updated:t.setTargetSoC}})],1):t._e()])])]):t._e(),t.multi?t._e():a("div",{staticClass:"row d-none d-md-flex mt-5 py-3 pb-4 text-center bg-light"},[a("div",{staticClass:"mt-3",class:{"col-md-6":t.hasTargetSoC,"col-md-12":!t.hasTargetSoC}},[a("Mode",{attrs:{mode:t.mode,pvConfigured:t.pvConfigured,caption:!0},on:{updated:t.setTargetMode}})],1),t.hasTargetSoC?a("div",{staticClass:"col-md-6 mt-3"},[a("Soc",{attrs:{soc:t.targetSoC,levels:t.socLevels,caption:!0},on:{updated:t.setTargetSoC}})],1):t._e()]),t.multi?t._e():a("div",{staticClass:"row d-md-none mt-2 pb-3 bg-light"},[a("div",{staticClass:"col-12 mt-3"},[a("Mode",{staticClass:"w-100",attrs:{mode:t.mode,pvConfigured:t.pvConfigured},on:{updated:t.setTargetMode}})],1),t.hasTargetSoC?a("div",{staticClass:"col-12 mt-3"},[a("Soc",{staticClass:"w-100",attrs:{soc:t.targetSoC,levels:t.socLevels},on:{updated:t.setTargetSoC}})],1):t._e()]),t.multi?t._e():a("div",{staticClass:"row"},[a("div",{staticClass:"col-12 col-md-4 d-none d-md-flex mt-3 mt-md-5"},[a("span",{staticClass:"h1"},[t._v(t._s(t.title||"Ladepunkt"))])]),t.remoteDisabled?a("div",{staticClass:"col-12 col-md-8 d-flex d-md-flex mt-3 mt-md-5 pt-3"},[a("h5",{staticClass:"w-100"},["soft"==t.remoteDisabled?a("span",{staticClass:"badge badge-warning w-100"},[t._v(" "+t._s(t.remoteDisabledSource)+": Adaptives PV-Laden deaktiviert ")]):t._e(),"hard"==t.remoteDisabled?a("span",{staticClass:"badge badge-danger w-100"},[t._v(" "+t._s(t.remoteDisabledSource)+": Deaktiviert ")]):t._e()])]):t._e()]),a("div",{staticClass:"row border-bottom d-none d-md-block"}),a("div",{staticClass:"row"},[a("div",{staticClass:"col-12 col-md-4 mt-3 mb-3 mb-md-0"},[a("Vehicle",t._b({},"Vehicle",t.vehicle,!1))],1),t.multi?a("div",{staticClass:"col-12 col-md-4 d-none d-md-block mt-3"},[a("div",{staticClass:"mb-2"},[t._v("Modus")]),a("Mode",{staticClass:"btn-group-sm",attrs:{mode:t.mode,pvConfigured:t.pvConfigured},on:{updated:t.setTargetMode}})],1):t._e(),t.multi&&t.hasTargetSoC?a("div",{staticClass:"col-12 col-md-4 d-none d-md-block mt-3"},[a("div",{staticClass:"mb-2"},[t._v("Ladeziel")]),a("Soc",{staticClass:"btn-group-sm",attrs:{soc:t.targetSoC,levels:t.socLevels},on:{updated:t.setTargetSoC}})],1):t._e(),t.multi?t._e():a("div",{staticClass:"col-md-8 d-none d-md-block"},[a("LoadpointDetails",t._b({},"LoadpointDetails",t.details,!1))],1),a("div",{staticClass:"col-12 d-md-none"},[a("LoadpointDetails",t._b({},"LoadpointDetails",t.details,!1))],1)])])},xt=[],kt=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{staticClass:"btn-group btn-group-toggle bg-white shadow-none"},[t.caption?a("label",{staticClass:"btn btn-outline-primary disabled caption font-weight-bold"},[t._v(" Ladeziel ")]):t._e(),t._l(t.levelsOrDefault,(function(e,s){return a("label",{key:s,staticClass:"btn btn-outline-primary",class:{active:t.soc==e,first:!t.caption&&0==s},attrs:{level:e,id:s}},[a("input",{attrs:{type:"radio"},domProps:{value:e},on:{click:function(a){return t.setTargetSoC(e)}}}),t._v(t._s(e)+"% ")])}))],2)},Dt=[],Mt={name:"Soc",props:{soc:Number,caption:Boolean,levels:Array},computed:{levelsOrDefault:function(){return null==this.levels||0==this.levels.length?[]:this.levels}},methods:{setTargetSoC:function(t){this.$emit("updated",t)}}},Tt=Mt,Pt=Object(A["a"])(Tt,kt,Dt,!1,null,null,null),Nt=Pt.exports,Lt=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{staticClass:"btn-group btn-group-toggle bg-white shadow-none"},[t.caption?a("label",{staticClass:"btn btn-outline-primary value disabled caption font-weight-bold"},[t._v(" Modus ")]):t._e(),a("label",{staticClass:"btn btn-outline-primary",class:{active:"off"==t.mode,first:!t.caption}},[a("input",{attrs:{type:"radio",value:"off"},on:{click:function(e){return t.setTargetMode("off")}}}),t._v("Stop ")]),a("label",{staticClass:"btn btn-outline-primary",class:{active:"now"==t.mode}},[a("input",{attrs:{type:"radio",value:"now"},on:{click:function(e){return t.setTargetMode("now")}}}),t._v("Sofort ")]),t.pvConfigured?a("label",{staticClass:"btn btn-outline-primary",class:{active:"minpv"==t.mode}},[a("input",{attrs:{type:"radio",value:"minpv"},on:{click:function(e){return t.setTargetMode("minpv")}}}),a("span",{staticClass:"d-inline d-lg-none"},[t._v("Min")]),a("span",{staticClass:"d-none d-lg-inline"},[t._v("Min + PV")])]):t._e(),t.pvConfigured?a("label",{staticClass:"btn btn-outline-primary",class:{active:"pv"==t.mode}},[a("input",{attrs:{type:"radio",value:"pv"},on:{click:function(e){return t.setTargetMode("pv")}}}),a("span",{staticClass:"d-inline d-md-none"},[t._v("PV")]),a("span",{staticClass:"d-none d-md-inline"},[t._v("Nur PV")])]):t._e()])},Et=[],Vt={name:"Mode",props:{mode:String,pvConfigured:Boolean,caption:Boolean},methods:{setTargetMode:function(t){this.$emit("updated",t)}}},Bt=Vt,At=Object(A["a"])(Bt,Lt,Et,!1,null,null,null),jt=At.exports,Ot=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",[a("div",{staticClass:"mb-2"},[t._v(t._s(t.socTitle||"Fahrzeug"))]),a("div",{staticClass:"progress",staticStyle:{height:"24px","font-size":"100%","margin-top":"16px"}},[a("div",{staticClass:"progress-bar",class:{"progress-bar-striped":t.charging,"progress-bar-animated":t.charging,"bg-light":!t.connected,"text-secondary":!t.connected,"bg-warning":t.connected&&t.minSoCActive},style:{width:t.socChargeDisplayWidth+"%"},attrs:{role:"progressbar"}},[t._v(" "+t._s(t.socChargeDisplayValue)+" ")]),t.minSoCActive&&t.socChargeDisplayWidth<100?a("div",{staticClass:"progress-bar",class:{"progress-bar-striped":t.charging,"progress-bar-animated":t.charging,"bg-warning":!0,"bg-muted":!0},style:{width:t.minSoCRemainingDisplayWidth+"%"},attrs:{role:"progressbar"}}):t._e()])])},Ut=[],zt={name:"Vehicle",props:{socTitle:String,connected:Boolean,charging:Boolean,hasVehicle:Boolean,socCharge:Number,minSoC:Number},computed:{socChargeDisplayWidth:function(){return this.hasVehicle&&this.socCharge>=0?this.socCharge:100},socChargeDisplayValue:function(){if(!this.hasVehicle||this.socCharge<0){let t="getrennt";return this.charging?t="laden":this.connected&&(t="verbunden"),t}let t=this.socCharge;return t>=10&&(t+="%"),t},minSoCActive:function(){return this.minSoC>0&&this.socCharge=0?a("div",{staticClass:"col-6 col-md-3 mt-3"},[a("div",{staticClass:"mb-2 value"},[t._v("Reichweite")]),a("h2",{staticClass:"value"},[t._v(" "+t._s(Math.round(t.range))+" "),a("small",{staticClass:"text-muted"},[t._v("km")])])]):a("div",{staticClass:"col-6 col-md-3 mt-3"},[a("div",{staticClass:"mb-2 value"},[t._v("Dauer")]),a("h2",{staticClass:"value"},[t._v(" "+t._s(t.fmtShortDuration(t.chargeDuration))+" "),a("small",{staticClass:"text-muted"},[t._v(t._s(t.fmtShortDurationUnit(t.chargeDuration)))])])]),t.hasVehicle?a("div",{staticClass:"col-6 col-md-3 mt-3"},[a("div",{staticClass:"mb-2 value"},[t._v("Restzeit")]),a("h2",{staticClass:"value"},[t._v(" "+t._s(t.fmtShortDuration(t.chargeEstimate))+" "),a("small",{staticClass:"text-muted"},[t._v(t._s(t.fmtShortDurationUnit(t.chargeEstimate)))])])]):t._e()])},Kt=[],Rt={name:"LoadpointDetails",props:{chargedEnergy:Number,chargeDuration:Number,chargeEstimate:Number,chargePower:Number,climater:String,hasVehicle:Boolean,range:Number,socTimerActive:Boolean,socTimerSet:Boolean},mixins:[ft]},Ft=Rt,Zt=Object(A["a"])(Ft,Ht,Kt,!1,null,null,null),Jt=Zt.exports,Gt={methods:{collectProps:function(t){let e={};for(var a in t.props)e[a]=this[a];return e}}},qt={name:"Loadpoint",props:{id:Number,multi:Boolean,pvConfigured:Boolean,title:String,mode:String,targetSoC:Number,socLevels:Array,remoteDisabled:Boolean,remoteDisabledSource:String,chargeDuration:Number,charging:Boolean,connected:Boolean,socTitle:String,socCharge:Number,minSoC:Number,socTimerSet:Boolean,socTimerActive:Boolean,chargePower:Number,chargedEnergy:Number,hasVehicle:Boolean,climater:String,range:Number,chargeEstimate:Number},components:{LoadpointDetails:Jt,Soc:Nt,Mode:jt,Vehicle:Wt},mixins:[ft,Gt],data:function(){return{tickerHandle:null,chargeDurationDisplayed:null}},computed:{details:function(){return this.collectProps(Jt)},vehicle:function(){return this.collectProps(Wt)},hasTargetSoC:function(){return null!=this.socLevels&&this.socLevels.length>0}},watch:{chargeDuration:function(){window.clearInterval(this.tickerHandle),this.charging&&this.chargeDuration>=0&&(this.chargeDurationDisplayed=this.chargeDuration,this.tickerHandle=window.setInterval(function(){this.chargeDurationDisplayed+=1}.bind(this),1e3))}},methods:{api:function(t){return"loadpoints/"+this.id+"/"+t},setTargetMode:function(t){n.a.post(this.api("mode")+"/"+t).then(function(t){this.mode=t.data.mode}.bind(this)).catch(window.toasts.error)},setTargetSoC:function(t){n.a.post(this.api("targetsoc")+"/"+t).then(function(t){this.targetSoC=t.data.targetSoC}.bind(this)).catch(window.toasts.error)}},destroyed:function(){window.clearInterval(this.tickerHandle)}},Qt=qt,Xt=Object(A["a"])(Qt,St,xt,!1,null,null,null),Yt=Xt.exports,te={name:"Site",props:{title:String,loadpoints:Array,gridConfigured:Boolean,gridPower:Number,pvConfigured:Boolean,pvPower:Number,batteryConfigured:Boolean,batteryPower:Number,batterySoC:Number},components:{SiteDetails:wt,Loadpoint:Yt},mixins:[ft,Gt],computed:{details:function(){return this.collectProps(wt)},multi:function(){return this.loadpoints.length>1}}},ee=te,ae=Object(A["a"])(ee,mt,vt,!1,null,null,null),se=ae.exports,ie={name:"Main",components:{Site:se},data:function(){return this.$root.$data.store},computed:{configured:function(){const t=window.evcc.configured;return t==window.evcc.configured||!isNaN(parseInt(t))&&parseInt(t)>0}}},ne=ie,oe=Object(A["a"])(ne,dt,ut,!1,null,null,null),re=oe.exports,le=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{staticClass:"container"},[a("div",{staticClass:"row mt-4 border-bottom"},[a("div",{staticClass:"col-12"},[a("p",{staticClass:"h1"},[t._v(t._s(t.title||"Home"))])])]),a("div",{staticClass:"row h5"},[a("div",{staticClass:"col-md-4"}),a("div",{staticClass:"col-6 col-md-2 py-3"},[t._v(" Netzzähler: "),t.gridConfigured?a("span",{staticClass:"text-primary"},[t._v("✓")]):a("span",{staticClass:"text-primary"},[t._v("—")])]),a("div",{staticClass:"col-6 col-md-2 py-3"},[t._v(" PV Zähler: "),t.pvConfigured?a("span",{staticClass:"text-primary"},[t._v("✓")]):a("span",{staticClass:"text-primary"},[t._v("—")])]),a("div",{staticClass:"col-6 col-md-2 py-3"},[t._v(" Batteriezähler: "),t.batteryConfigured?a("span",{staticClass:"text-primary"},[t._v("✓")]):a("span",{staticClass:"text-primary"},[t._v("—")])])]),t._l(t.loadpoints,(function(e,s){return a("div",{key:s,attrs:{loadpoint:e,id:"loadpoint-"+s}},[a("div",{staticClass:"row mt-4 border-bottom"},[a("div",{staticClass:"col-12"},[a("p",{staticClass:"h1"},[t._v(t._s(e.title||"Ladepunkt"))])])]),a("div",{staticClass:"row h5"},[a("div",{staticClass:"col-md-4"}),a("div",{staticClass:"col-6 col-md-2 py-3"},[t._v(" Ladezähler: "),e.chargeConfigured?a("span",{staticClass:"text-primary"},[t._v("✓")]):a("span",{staticClass:"text-primary"},[t._v("—")])]),a("div",{staticClass:"col-6 col-md-2 py-3"},[t._v(" Phasen: "),a("span",{staticClass:"text-primary"},[t._v(t._s(e.phases)+"p")])]),a("div",{staticClass:"col-6 col-md-2 py-3"},[t._v(" Min. Strom: "),a("span",{staticClass:"text-primary"},[t._v(t._s(e.minCurrent)+"A")])]),a("div",{staticClass:"col-6 col-md-2 py-3"},[t._v(" Max. Strom: "),a("span",{staticClass:"text-primary"},[t._v(t._s(e.maxCurrent)+"A")])])]),a("div",{staticClass:"row h5"},[a("div",{staticClass:"col-md-4"}),a("div",{staticClass:"col-md-8 h2"},[t._m(0,!0),a("div",{staticClass:"row h5"},[a("div",{staticClass:"col-6 py-3"},[t._v(" Modell: "),a("span",{staticClass:"text-primary"},[t._v(t._s(e.socTitle||"—"))])]),a("div",{staticClass:"col-6 py-3"},[t._v(" Kapazität: "),a("span",{staticClass:"text-primary"},[t._v(t._s(e.socCapacity)+"kWh")])])])])])])}))],2)},ce=[function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{staticClass:"row py-3 h2 border-bottom"},[a("div",{staticClass:"col-12"},[t._v("Fahrzeug")])])}],de={name:"Config",data:function(){return this.$root.$data.store.state}},ue=de,me=Object(A["a"])(ue,le,ce,!1,null,null,null),ve=me.exports;s["a"].use(ct["a"]);const pe=[{path:"/",component:re},{path:"/config",component:ve}];var he=new ct["a"]({routes:pe,linkExactActiveClass:"active"});const fe=window.location;n.a.defaults.baseURL=fe.protocol+"//"+fe.hostname+(fe.port?":"+fe.port:"")+fe.pathname+"api",n.a.defaults.headers.post["Content-Type"]="application/json",window.toasts=new s["a"]({el:"#toasts",render:function(t){return t(lt,{props:{items:this.items,count:this.count}})},data:{items:{},count:0},name:"ToastsRoot",methods:{raise:function(t){let e=!1;Object.keys(this.items).forEach((function(a){let s=this.items[a];s.type==t.type&&s.message==t.message&&(e=!0)}),this),e||(t.id=this.count++,s["a"].set(this.items,t.id,t))},error:function(t){t.type="error",this.raise(t)},warn:function(t){t.type="warn",this.raise(t)},remove:function(t){s["a"].delete(this.items,t.id)}}}),new s["a"]({el:"#app",router:he,data:{store:K},render:t=>t(J)}),window.setInterval((function(){n.a.get("health").catch((function(t){t.message="Server unavailable",window.toasts.error(t)}))}),5e3)},b19f:function(t,e,a){}}); +//# sourceMappingURL=index.9f86ca25.js.map \ No newline at end of file diff --git a/dist/js/index.9f86ca25.js.map b/dist/js/index.9f86ca25.js.map new file mode 100644 index 000000000..7902fa13c --- /dev/null +++ b/dist/js/index.9f86ca25.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./assets/js/components/Footer.vue?832c","webpack:///./assets/js/views/App.vue?ed3a","webpack:///./assets/js/components/Version.vue?0cc7","webpack:///./assets/js/views/App.vue?09df","webpack:///./assets/js/icons.js","webpack:///./assets/js/components/Footer.vue?ca01","webpack:///./assets/js/components/Version.vue?cd5f","webpack:///assets/js/components/Version.vue","webpack:///./assets/js/components/Version.vue?1d82","webpack:///./assets/js/components/Version.vue","webpack:///assets/js/components/Footer.vue","webpack:///./assets/js/components/Footer.vue?9347","webpack:///./assets/js/components/Footer.vue","webpack:///./assets/js/store.js","webpack:///assets/js/views/App.vue","webpack:///./assets/js/views/App.vue?9ed2","webpack:///./assets/js/views/App.vue","webpack:///./assets/js/components/Toasts.vue?3b9f","webpack:///./assets/js/components/ToastMessage.vue?40a3","webpack:///assets/js/components/ToastMessage.vue","webpack:///./assets/js/components/ToastMessage.vue?19ff","webpack:///./assets/js/components/ToastMessage.vue","webpack:///assets/js/components/Toasts.vue","webpack:///./assets/js/components/Toasts.vue?c63e","webpack:///./assets/js/components/Toasts.vue","webpack:///./assets/js/views/Main.vue?0126","webpack:///./assets/js/components/Site.vue?c2af","webpack:///./assets/js/components/SiteDetails.vue?33ca","webpack:///./assets/js/mixins/formatter.js","webpack:///assets/js/components/SiteDetails.vue","webpack:///./assets/js/components/SiteDetails.vue?3811","webpack:///./assets/js/components/SiteDetails.vue","webpack:///./assets/js/components/Loadpoint.vue?16f5","webpack:///./assets/js/components/Soc.vue?f6a1","webpack:///assets/js/components/Soc.vue","webpack:///./assets/js/components/Soc.vue?8da7","webpack:///./assets/js/components/Soc.vue","webpack:///./assets/js/components/Mode.vue?8943","webpack:///assets/js/components/Mode.vue","webpack:///./assets/js/components/Mode.vue?fbb9","webpack:///./assets/js/components/Mode.vue","webpack:///./assets/js/components/Vehicle.vue?7f2b","webpack:///assets/js/components/Vehicle.vue","webpack:///./assets/js/components/Vehicle.vue?5364","webpack:///./assets/js/components/Vehicle.vue","webpack:///./assets/js/components/LoadpointDetails.vue?2157","webpack:///assets/js/components/LoadpointDetails.vue","webpack:///./assets/js/components/LoadpointDetails.vue?3057","webpack:///./assets/js/components/LoadpointDetails.vue","webpack:///./assets/js/mixins/collector.js","webpack:///assets/js/components/Loadpoint.vue","webpack:///./assets/js/components/Loadpoint.vue?8199","webpack:///./assets/js/components/Loadpoint.vue","webpack:///assets/js/components/Site.vue","webpack:///./assets/js/components/Site.vue?af05","webpack:///./assets/js/components/Site.vue","webpack:///assets/js/views/Main.vue","webpack:///./assets/js/views/Main.vue?0821","webpack:///./assets/js/views/Main.vue","webpack:///./assets/js/views/Config.vue?881f","webpack:///assets/js/views/Config.vue","webpack:///./assets/js/views/Config.vue?db1d","webpack:///./assets/js/views/Config.vue","webpack:///./assets/js/router.js","webpack:///./assets/js/app.js"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","render","_vm","this","_h","$createElement","_c","_self","staticClass","attrs","_v","_m","version","staticRenderFns","add","faArrowDown","faArrowUp","faBatteryEmpty","faBatteryFull","faBatteryHalf","faBatteryQuarter","faBatteryThreeQuarters","faChevronDown","faChevronUp","faExclamationTriangle","faLeaf","faSun","faTemperatureHigh","faTemperatureLow","faThermometerHalf","faHeart","faGift","faBox","component","_b","on","$event","preventDefault","showModal","_s","available","releaseNotesUrl","installed","updateStarted","closeModal","style","width","uploadProgress","updateStatus","uploadMessage","domProps","releaseNotes","update","_e","props","String","hasUpdater","Boolean","Number","modalActive","methods","async","a","post","e","computed","newVersionAvailable","components","Version","setProperty","obj","prop","set","Array","isArray","store","state","loadpoints","msg","keys","forEach","k","toasts","message","split","Footer","compact","$root","$data","installedVersion","evcc","connect","loc","location","protocol","uri","hostname","port","pathname","ws","WebSocket","self","onerror","close","onclose","setTimeout","onmessage","evt","JSON","parse","error","availableVersion","created","urlParams","URLSearchParams","search","staticStyle","_l","item","id","type","status","mounted","toast","remove","ToastMessage","items","title","details","multi","loadpoint","pvConfigured","gridPower","fmt","fmtUnit","class","pvPower","batteryIcon","batteryPower","batterySoC","fmtLimit","fmtDigits","round","num","precision","base","Math","toFixed","val","undefined","abs","fmtDuration","seconds","minutes","floor","hours","substr","fmtShortDuration","tm","fmtShortDurationUnit","limit","icons","gridConfigured","batteryConfigured","iconIdx","mixins","formatter","setInterval","setTargetMode","targetSoC","socLevels","setTargetSoC","hasTargetSoC","remoteDisabled","remoteDisabledSource","vehicle","level","active","soc","first","caption","levels","levelsOrDefault","$emit","socTitle","charging","connected","minSoCActive","socChargeDisplayWidth","socChargeDisplayValue","minSoCRemainingDisplayWidth","hasVehicle","socCharge","minSoC","chargeStatus","climater","chargePower","chargedEnergy","range","chargeDuration","chargeEstimate","socTimerActive","socTimerSet","collectProps","LoadpointDetails","Soc","Mode","Vehicle","collector","tickerHandle","chargeDurationDisplayed","watch","clearInterval","api","func","then","response","catch","destroyed","SiteDetails","Loadpoint","Site","configured","isNaN","parseInt","phases","minCurrent","maxCurrent","socCapacity","use","routes","path","Main","Config","linkExactActiveClass","defaults","baseURL","headers","el","h","Toasts","count","raise","found","warn","delete","router","App","res"],"mappings":"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","file":"js/index.9f86ca25.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"index\": 0\n \t};\n\n \tvar deferredModules = [];\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 = \"\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Footer.vue?vue&type=style&index=0&id=b6dbe422&scoped=true&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&id=2052a870&scoped=true&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Version.vue?vue&type=style&index=0&id=a6ded36e&scoped=true&lang=css&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"app d-flex flex-column justify-content-between\"},[_c('div',[_c('nav',{staticClass:\"navbar navbar-expand-lg navbar-light bg-light\"},[_c('div',{staticClass:\"container\"},[_c('a',{staticClass:\"navbar-brand\",attrs:{\"href\":\"https://github.com/andig/evcc\"}},[_c('fa-icon',{staticClass:\"text-primary mr-2\",attrs:{\"icon\":\"leaf\"}}),_vm._v(\"evcc\")],1),_vm._m(0),_c('div',{staticClass:\"collapse navbar-collapse\",attrs:{\"id\":\"navbarNavAltMarkup\"}},[_c('div',{staticClass:\"navbar-nav\"},[_c('router-link',{staticClass:\"nav-item nav-link pb-1\",attrs:{\"to\":\"/\"}},[_vm._v(\"Laden\")]),_c('router-link',{staticClass:\"nav-item nav-link pb-1\",attrs:{\"to\":\"/config\"}},[_vm._v(\"Konfiguration\")]),_c('a',{staticClass:\"nav-item nav-link pb-1\",attrs:{\"href\":\"https://github.com/andig/evcc/discussions\",\"target\":\"_blank\"}},[_vm._v(\"Community Support\")])],1)])])]),_c('router-view')],1),_c('Footer',{attrs:{\"version\":_vm.version}})],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('button',{staticClass:\"navbar-toggler\",attrs:{\"type\":\"button\",\"data-toggle\":\"collapse\",\"data-target\":\"#navbarNavAltMarkup\",\"aria-controls\":\"navbarNavAltMarkup\",\"aria-expanded\":\"false\",\"aria-label\":\"Toggle navigation\"}},[_c('span',{staticClass:\"navbar-toggler-icon\"})])}]\n\nexport { render, staticRenderFns }","import Vue from \"vue\";\nimport { FontAwesomeIcon } from \"@fortawesome/vue-fontawesome\";\nimport { library } from \"@fortawesome/fontawesome-svg-core\";\n\nimport { faArrowDown } from \"@fortawesome/free-solid-svg-icons/faArrowDown\";\nimport { faArrowUp } from \"@fortawesome/free-solid-svg-icons/faArrowUp\";\nimport { faBatteryEmpty } from \"@fortawesome/free-solid-svg-icons/faBatteryEmpty\";\nimport { faBatteryFull } from \"@fortawesome/free-solid-svg-icons/faBatteryFull\";\nimport { faBatteryHalf } from \"@fortawesome/free-solid-svg-icons/faBatteryHalf\";\nimport { faBatteryQuarter } from \"@fortawesome/free-solid-svg-icons/faBatteryQuarter\";\nimport { faBatteryThreeQuarters } from \"@fortawesome/free-solid-svg-icons/faBatteryThreeQuarters\";\nimport { faChevronDown } from \"@fortawesome/free-solid-svg-icons/faChevronDown\";\nimport { faChevronUp } from \"@fortawesome/free-solid-svg-icons/faChevronUp\";\nimport { faClock } from \"@fortawesome/free-solid-svg-icons\";\nimport { faExclamationTriangle } from \"@fortawesome/free-solid-svg-icons/faExclamationTriangle\";\nimport { faLeaf } from \"@fortawesome/free-solid-svg-icons/faLeaf\";\nimport { faSun } from \"@fortawesome/free-solid-svg-icons/faSun\";\nimport { faTemperatureHigh } from \"@fortawesome/free-solid-svg-icons/faTemperatureHigh\";\nimport { faTemperatureLow } from \"@fortawesome/free-solid-svg-icons/faTemperatureLow\";\nimport { faThermometerHalf } from \"@fortawesome/free-solid-svg-icons/faThermometerHalf\";\nimport { faHeart } from \"@fortawesome/free-solid-svg-icons/faHeart\";\nimport { faGift } from \"@fortawesome/free-solid-svg-icons/faGift\";\nimport { faBox } from \"@fortawesome/free-solid-svg-icons/faBox\";\n\nlibrary.add(\n faArrowDown,\n faArrowUp,\n faBatteryEmpty,\n faBatteryFull,\n faBatteryHalf,\n faBatteryQuarter,\n faBatteryThreeQuarters,\n faChevronDown,\n faChevronUp,\n faClock,\n faExclamationTriangle,\n faLeaf,\n faSun,\n faTemperatureHigh,\n faTemperatureLow,\n faThermometerHalf,\n faHeart,\n faGift,\n faBox\n);\n\nVue.component(\"fa-icon\", FontAwesomeIcon);\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('footer',{staticClass:\"py-3 py-md-5 mt-3 mt-md-5 border-top\"},[_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-6\"},[_c('Version',_vm._b({},'Version',_vm.version,false))],1),_c('div',{staticClass:\"col-6 text-right\"},[_c('small',{staticClass:\"text-black\"},[_c('a',{staticClass:\"link\",attrs:{\"href\":\"https://github.com/sponsors/andig\",\"target\":\"_blank\"}},[_c('fa-icon',{staticClass:\"icon mr-1\",attrs:{\"icon\":\"heart\"}}),_c('span',{staticClass:\"d-none d-sm-inline\"},[_vm._v(\"Projekt\")]),_vm._v(\" unterstützen \")],1)])])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('small',{staticClass:\"text-black\"},[(_vm.newVersionAvailable)?_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.showModal($event)}}},[_c('fa-icon',{staticClass:\"icon mr-1\",attrs:{\"icon\":\"gift\"}}),_vm._v(\"Update\"),_c('span',{staticClass:\"d-none d-sm-inline\"},[_vm._v(\" verfügbar\")]),_vm._v(\": \"+_vm._s(_vm.available)+\" \")],1):_c('a',{attrs:{\"href\":_vm.releaseNotesUrl(_vm.installed),\"target\":\"_blank\"}},[_vm._v(\" Version \"+_vm._s(_vm.installed)+\" \")])]),_c('transition',{attrs:{\"name\":\"fade\"}},[(_vm.modalActive)?_c('div',{staticClass:\"dialog\",attrs:{\"id\":\"updateModal\",\"tabindex\":\"-1\",\"role\":\"dialog\"}},[_c('div',{staticClass:\"modal-dialog modal-dialog-centered modal-dialog-scrollable\",attrs:{\"role\":\"document\"}},[_c('div',{staticClass:\"modal-content\"},[_c('div',{staticClass:\"modal-header\"},[_c('h4',{staticClass:\"modal-title font-weight-bold\"},[_vm._v(\"Update verfügbar\")]),_c('button',{staticClass:\"close\",attrs:{\"type\":\"button\",\"disabled\":_vm.updateStarted},on:{\"click\":_vm.closeModal}},[_c('span',{attrs:{\"aria-hidden\":\"true\"}},[_vm._v(\"×\")])])]),_c('div',{staticClass:\"modal-body\"},[(_vm.updateStarted)?_c('div',[_c('p',[_vm._v(\"Nach der Aktualisierung wird evcc neu gestartet.\")]),_c('div',{staticClass:\"progress my-3\"},[_c('div',{staticClass:\"progress-bar progress-bar-striped progress-bar-animated\",style:({ width: _vm.uploadProgress + '%' }),attrs:{\"role\":\"progressbar\"}})]),_c('p',[_vm._v(_vm._s(_vm.updateStatus)+_vm._s(_vm.uploadMessage))])]):_c('div',[_c('p',[_c('small',[_vm._v(\"Aktuell installierte Version: \"+_vm._s(_vm.installed))])]),(_vm.releaseNotes)?_c('div',{domProps:{\"innerHTML\":_vm._s(_vm.releaseNotes)}}):_c('p',[_vm._v(\" Keine Releasenotes verfügbar. Mehr Informationen zur neuen Version findest du \"),_c('a',{attrs:{\"href\":_vm.releaseNotesUrl(_vm.available)}},[_vm._v(\"hier\")]),_vm._v(\". \")])])]),_c('div',{staticClass:\"modal-footer d-flex justify-content-between\"},[_c('button',{staticClass:\"btn btn-outline-secondary\",attrs:{\"type\":\"button\",\"disabled\":_vm.updateStarted},on:{\"click\":_vm.closeModal}},[_vm._v(\" Abbrechen \")]),_c('div',[(_vm.hasUpdater)?_c('button',{staticClass:\"btn btn-primary\",attrs:{\"type\":\"button\",\"disabled\":_vm.updateStarted},on:{\"click\":_vm.update}},[(_vm.updateStarted)?_c('span',[_c('span',{staticClass:\"spinner-border spinner-border-sm\",attrs:{\"role\":\"status\",\"aria-hidden\":\"true\"}}),_vm._v(\" Akualisieren \")]):_c('span',[_vm._v(\"Jetzt aktualisieren\")])]):_c('a',{staticClass:\"btn btn-primary\",attrs:{\"href\":_vm.releaseNotesUrl(_vm.available)}},[_vm._v(\" Download \")])])])])])]):_vm._e()])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Version.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Version.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Version.vue?vue&type=template&id=a6ded36e&scoped=true&\"\nimport script from \"./Version.vue?vue&type=script&lang=js&\"\nexport * from \"./Version.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Version.vue?vue&type=style&index=0&id=a6ded36e&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"a6ded36e\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Footer.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Footer.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Footer.vue?vue&type=template&id=b6dbe422&scoped=true&\"\nimport script from \"./Footer.vue?vue&type=script&lang=js&\"\nexport * from \"./Footer.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Footer.vue?vue&type=style&index=0&id=b6dbe422&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b6dbe422\",\n null\n \n)\n\nexport default component.exports","import Vue from \"vue\";\n\nfunction setProperty(obj, props, value) {\n const prop = props.shift();\n if (!obj[prop]) {\n Vue.set(obj, prop, {});\n }\n\n if (!props.length) {\n if (value && typeof value === \"object\" && !Array.isArray(value)) {\n obj[prop] = { ...obj[prop], ...value };\n } else {\n obj[prop] = value;\n }\n return;\n }\n\n setProperty(obj[prop], props, value);\n}\n\nconst store = {\n state: {\n loadpoints: [], // ensure array type\n },\n update: function (msg) {\n Object.keys(msg).forEach(function (k) {\n if (typeof window.toasts[k] === \"function\") {\n window.toasts[k]({ message: msg[k] });\n } else {\n setProperty(store.state, k.split(\".\"), msg[k]);\n }\n });\n },\n};\n\nexport default store;\n","\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=2052a870&scoped=true&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&id=2052a870&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2052a870\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticStyle:{\"position\":\"absolute\",\"top\":\"4rem\",\"right\":\"0.5rem\"},attrs:{\"aria-atomic\":\"true\"}},_vm._l((_vm.items),function(item){return _c('ToastMessage',{key:item.id,attrs:{\"item\":item,\"id\":'message-id-' + item.id}})}),1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"toast\",attrs:{\"data-delay\":\"10000\",\"data-autohide\":true}},[_c('div',{staticClass:\"toast-header\"},[(_vm.item.type != 'warn')?_c('strong',{staticClass:\"mr-auto\"},[_c('fa-icon',{staticClass:\"text-danger\",attrs:{\"icon\":\"exclamation-triangle\"}}),_vm._v(\" Error\")],1):_vm._e(),(_vm.item.type == 'warn')?_c('strong',{staticClass:\"mr-auto\"},[_c('fa-icon',{staticClass:\"text-warning\",attrs:{\"icon\":\"exclamation-triangle\"}}),_vm._v(\" Warning\")],1):_vm._e(),(_vm.item.status)?_c('small',[_vm._v(\"HTTP \"+_vm._s(_vm.item.status))]):_vm._e(),_vm._m(0)]),_c('div',{staticClass:\"toast-body\"},[_vm._v(_vm._s(_vm.item.message))])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('button',{staticClass:\"ml-2 mb-1 close\",attrs:{\"type\":\"button\",\"data-dismiss\":\"toast\",\"aria-label\":\"Close\"}},[_c('span',{attrs:{\"aria-hidden\":\"true\"}},[_vm._v(\"×\")])])}]\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ToastMessage.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ToastMessage.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ToastMessage.vue?vue&type=template&id=556fd3a5&\"\nimport script from \"./ToastMessage.vue?vue&type=script&lang=js&\"\nexport * from \"./ToastMessage.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Toasts.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Toasts.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Toasts.vue?vue&type=template&id=57d56c56&\"\nimport script from \"./Toasts.vue?vue&type=script&lang=js&\"\nexport * from \"./Toasts.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"container\"},[(_vm.configured)?_c('Site',_vm._b({},'Site',_vm.state,false)):_c('div',[_c('div',{staticClass:\"row py-5\"},[_c('div',{staticClass:\"col12\"},[_c('p',{staticClass:\"h1 pt-5 pb-2 border-bottom\"},[_vm._v(\"Willkommen bei evcc\")]),_c('p',{staticClass:\"lead pt-2\"},[_c('b',[_vm._v(\"evcc\")]),_vm._v(\" ist dient zur flexiblen Ladesteuerung von Elektrofahrzeugen. \")]),_c('p',{staticClass:\"pt-2\"},[_vm._v(\" Es sieht aus, als wäre Dein \"),_c('b',[_vm._v(\"evcc\")]),_vm._v(\" noch nicht konfiguriert. Um \"),_c('b',[_vm._v(\"evcc\")]),_vm._v(\" zu konfigurieren sind die folgenden Schritte notwendig: \")]),_c('ol',{staticClass:\"pt-2\"},[_c('li',[_vm._v(\" Erzeugen einer Konfigurationsdatei mit Namen \"),_c('code',[_vm._v(\"evcc.yaml\")]),_vm._v(\". Die Standardkonfiguration \"),_c('code',[_vm._v(\"evcc.dist.yaml\")]),_vm._v(\" kann dafür als Vorlage dienen (\"),_c('a',{attrs:{\"href\":\"https://github.com/andig/evcc/blob/master/evcc.dist.yaml\"}},[_vm._v(\"Download\")]),_vm._v(\"). \")]),_c('li',[_vm._v(\"Konfiguration der Wallbox als \"),_c('code',[_vm._v(\"chargers\")]),_vm._v(\".\")]),_c('li',[_vm._v(\" Konfiguration des EVU Zählers und evtl. weiterer Zähler unter \"),_c('code',[_vm._v(\"meters\")]),_vm._v(\". \")]),_c('li',[_vm._v(\" Konfiguration des Netzanschlusses unter \"),_c('code',[_vm._v(\"site\")]),_vm._v(\". In einer Site wird der Netzanschluss mit dem konfigurierten EVU Zähler (\"),_c('code',[_vm._v(\"meter\")]),_vm._v(\") verbunden. \")]),_c('li',[_vm._v(\" Konfiguration eines Ladepunktes unter \"),_c('code',[_vm._v(\"loadpoints\")]),_vm._v(\". In einem Ladepunkt wird die konfigurierte Wallbox (\"),_c('code',[_vm._v(\"charger\")]),_vm._v(\") mit dem Ladepunkt verbunden. \")]),_c('li',[_vm._v(\" Start von \"),_c('b',[_vm._v(\"evcc\")]),_vm._v(\" mit der neu erstellten Konfiguration: \"),_c('code',[_vm._v(\"evcc -c evcc.yaml\")])])]),_c('p',[_vm._v(\"Minimale Beispielkonfiguration für \"),_c('b',[_vm._v(\"evcc\")]),_vm._v(\":\")]),_c('p',[_c('code',[_c('pre',{staticClass:\"mx-3\"},[_vm._v(\" uri: localhost:7070 # Adresse für UI\\n interval: 10s # Regelintervall\\n meters:\\n - name: evu-zähler\\n type: ... # Detailkonfiguration des EVU Zählers\\n - name: ladezähler\\n type: ... # Detailkonfiguration des Ladezählers (optional)\\n chargers:\\n - name: wallbox\\n type: ... # Detailkonfiguration der Wallbox\\n site:\\n title: Home\\n meters:\\n grid: evu-zähler # EVU Zähler\\n loadpoints:\\n - title: Ladepunkt # ui display name\\n charger: wallbox # charger\\n meters:\\n charge: ladezähler # Ladezählers (optional)\\n \")])])]),_c('p',[_vm._v(\" Viel Spass mit \"),_c('b',[_vm._v(\"evcc\")]),_vm._v(\"! Bei Problemen kannst Du uns auf \"),_c('a',{attrs:{\"href\":\"https://github.com/andig/evcc/issues\"}},[_vm._v(\"GitHub\")]),_vm._v(\" erreichen. \")])])])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"d-none d-md-flex col-12 col-md-4 mt-md-4 align-items-end\"},[_c('p',{staticClass:\"h1\"},[_vm._v(_vm._s(_vm.title || \"Home\"))])]),(_vm.multi)?_c('div',{staticClass:\"col-12 col-md-8 mt-md-4\"},[_c('SiteDetails',_vm._b({},'SiteDetails',_vm.details,false))],1):_vm._e()]),_c('div',{staticClass:\"row d-none d-md-flex border-bottom\"}),(!_vm.multi)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"d-none d-md-block col-md-4\"}),_c('div',{staticClass:\"col-12 col-md-8\"},[_c('SiteDetails',_vm._b({},'SiteDetails',_vm.details,false))],1)]):_vm._e(),_vm._l((_vm.loadpoints),function(loadpoint,id){return _c('Loadpoint',_vm._b({key:id,attrs:{\"id\":id,\"multi\":_vm.multi,\"pvConfigured\":_vm.pvConfigured}},'Loadpoint',loadpoint,false))})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"row\"},[(_vm.gridConfigured)?_c('div',{staticClass:\"col-6 col-md-3 mt-3\"},[(_vm.gridPower > 0)?_c('div',{staticClass:\"mb-2 value\"},[_vm._v(\" Bezug \"),_c('fa-icon',{staticClass:\"text-primary\",attrs:{\"icon\":\"arrow-down\"}})],1):_c('div',{staticClass:\"mb-2 value\"},[_vm._v(\" Einspeisung \"),_c('fa-icon',{staticClass:\"text-primary\",attrs:{\"icon\":\"arrow-up\"}})],1),_c('h2',{staticClass:\"value\"},[_vm._v(\" \"+_vm._s(_vm.fmt(_vm.gridPower))+\" \"),_c('small',{staticClass:\"text-muted\"},[_vm._v(_vm._s(_vm.fmtUnit(_vm.gridPower))+\"W\")])])]):_vm._e(),(_vm.pvConfigured)?_c('div',{staticClass:\"col-6 col-md-3 mt-3\"},[_c('div',{staticClass:\"mb-2 value\"},[_vm._v(\" Erzeugung \"),_c('fa-icon',{class:{\n\t\t\t\t\t'text-primary': _vm.pvPower > 0,\n\t\t\t\t\t'text-muted': _vm.pvPower <= 0,\n\t\t\t\t},attrs:{\"icon\":\"sun\"}})],1),_c('h2',{staticClass:\"value\"},[_vm._v(\" \"+_vm._s(_vm.fmt(_vm.pvPower))+\" \"),_c('small',{staticClass:\"text-muted\"},[_vm._v(_vm._s(_vm.fmtUnit(_vm.pvPower))+\"W\")])])]):_vm._e(),(_vm.batteryConfigured)?_c('div',{staticClass:\"d-md-block col-6 col-md-3 mt-3\"},[_c('div',{staticClass:\"mb-2 value\"},[_vm._v(\" Batterie \"),_c('fa-icon',{staticClass:\"text-primary\",attrs:{\"icon\":_vm.batteryIcon}})],1),_c('h2',{staticClass:\"value\"},[_vm._v(\" \"+_vm._s(_vm.fmt(_vm.batteryPower))+\" \"),_c('small',{staticClass:\"text-muted\"},[_vm._v(_vm._s(_vm.fmtUnit(_vm.batteryPower))+\"W\")]),_c('small',{staticClass:\"text-muted\"},[_vm._v(\"/\")]),_vm._v(\" \"+_vm._s(_vm.batterySoC)+\" \"),_c('small',{staticClass:\"text-muted\"},[_vm._v(\"%\")])])]):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export default {\n data: function () {\n return {\n fmtLimit: 100,\n fmtDigits: 1,\n };\n },\n methods: {\n round: function (num, precision) {\n var base = 10 ** precision;\n return (Math.round(num * base) / base).toFixed(precision);\n },\n fmt: function (val) {\n if (val === undefined || val === null) {\n return 0;\n }\n val = Math.abs(val);\n return val >= this.fmtLimit ? this.round(val / 1e3, this.fmtDigits) : this.round(val, 0);\n },\n fmtUnit: function (val) {\n return Math.abs(val) >= this.fmtLimit ? \"k\" : \"\";\n },\n fmtDuration: function (d) {\n if (d <= 0 || d == null) {\n return \"—\";\n }\n var seconds = \"0\" + (d % 60);\n var minutes = \"0\" + (Math.floor(d / 60) % 60);\n var hours = \"\" + Math.floor(d / 3600);\n if (hours.length < 2) {\n hours = \"0\" + hours;\n }\n return hours + \":\" + minutes.substr(-2) + \":\" + seconds.substr(-2);\n },\n fmtShortDuration: function (d) {\n if (d <= 0 || d == null) {\n return \"—\";\n }\n var minutes = Math.floor(d / 60) % 60;\n var hours = Math.floor(d / 3600);\n var tm;\n if (hours >= 1) {\n minutes = \"0\" + minutes;\n tm = hours + \":\" + minutes.substr(-2);\n } else {\n var seconds = \"0\" + (d % 60);\n tm = minutes + \":\" + seconds.substr(-2);\n }\n return tm;\n },\n fmtShortDurationUnit: function (d) {\n if (d <= 0 || d == null) {\n return \"\";\n }\n var hours = Math.floor(d / 3600);\n if (hours >= 1) {\n return \"h\";\n }\n return \"m\";\n },\n },\n};\n","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SiteDetails.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SiteDetails.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SiteDetails.vue?vue&type=template&id=d4dfcbb4&\"\nimport script from \"./SiteDetails.vue?vue&type=script&lang=js&\"\nexport * from \"./SiteDetails.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.multi)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-md-4 d-md-flex mt-3 mt-md-5 align-items-end\"},[_c('span',{staticClass:\"h1 align-bottom\"},[_vm._v(_vm._s(_vm.title || \"Ladepunkt\"))])]),_c('div',{staticClass:\"col-12 col-md-8 d-none d-md-block mt-3 mt-md-5\"},[_c('LoadpointDetails',_vm._b({},'LoadpointDetails',_vm.details,false))],1),_c('div',{staticClass:\"col-12 d-md-none\"},[_c('div',{staticClass:\"row mt-3 pb-3 bg-light\"},[_c('div',{staticClass:\"col-12 mt-3\"},[_c('Mode',{staticClass:\"w-100\",attrs:{\"mode\":_vm.mode,\"pvConfigured\":_vm.pvConfigured},on:{\"updated\":_vm.setTargetMode}})],1),(_vm.hasTargetSoC)?_c('div',{staticClass:\"col-12 mt-3\"},[_c('Soc',{staticClass:\"w-100\",attrs:{\"soc\":_vm.targetSoC,\"levels\":_vm.socLevels},on:{\"updated\":_vm.setTargetSoC}})],1):_vm._e()])])]):_vm._e(),(!_vm.multi)?_c('div',{staticClass:\"row d-none d-md-flex mt-5 py-3 pb-4 text-center bg-light\"},[_c('div',{staticClass:\"mt-3\",class:{ 'col-md-6': _vm.hasTargetSoC, 'col-md-12': !_vm.hasTargetSoC }},[_c('Mode',{attrs:{\"mode\":_vm.mode,\"pvConfigured\":_vm.pvConfigured,\"caption\":true},on:{\"updated\":_vm.setTargetMode}})],1),(_vm.hasTargetSoC)?_c('div',{staticClass:\"col-md-6 mt-3\"},[_c('Soc',{attrs:{\"soc\":_vm.targetSoC,\"levels\":_vm.socLevels,\"caption\":true},on:{\"updated\":_vm.setTargetSoC}})],1):_vm._e()]):_vm._e(),(!_vm.multi)?_c('div',{staticClass:\"row d-md-none mt-2 pb-3 bg-light\"},[_c('div',{staticClass:\"col-12 mt-3\"},[_c('Mode',{staticClass:\"w-100\",attrs:{\"mode\":_vm.mode,\"pvConfigured\":_vm.pvConfigured},on:{\"updated\":_vm.setTargetMode}})],1),(_vm.hasTargetSoC)?_c('div',{staticClass:\"col-12 mt-3\"},[_c('Soc',{staticClass:\"w-100\",attrs:{\"soc\":_vm.targetSoC,\"levels\":_vm.socLevels},on:{\"updated\":_vm.setTargetSoC}})],1):_vm._e()]):_vm._e(),(!_vm.multi)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-md-4 d-none d-md-flex mt-3 mt-md-5\"},[_c('span',{staticClass:\"h1\"},[_vm._v(_vm._s(_vm.title || \"Ladepunkt\"))])]),(_vm.remoteDisabled)?_c('div',{staticClass:\"col-12 col-md-8 d-flex d-md-flex mt-3 mt-md-5 pt-3\"},[_c('h5',{staticClass:\"w-100\"},[(_vm.remoteDisabled == 'soft')?_c('span',{staticClass:\"badge badge-warning w-100\"},[_vm._v(\" \"+_vm._s(_vm.remoteDisabledSource)+\": Adaptives PV-Laden deaktiviert \")]):_vm._e(),(_vm.remoteDisabled == 'hard')?_c('span',{staticClass:\"badge badge-danger w-100\"},[_vm._v(\" \"+_vm._s(_vm.remoteDisabledSource)+\": Deaktiviert \")]):_vm._e()])]):_vm._e()]):_vm._e(),_c('div',{staticClass:\"row border-bottom d-none d-md-block\"}),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-md-4 mt-3 mb-3 mb-md-0\"},[_c('Vehicle',_vm._b({},'Vehicle',_vm.vehicle,false))],1),(_vm.multi)?_c('div',{staticClass:\"col-12 col-md-4 d-none d-md-block mt-3\"},[_c('div',{staticClass:\"mb-2\"},[_vm._v(\"Modus\")]),_c('Mode',{staticClass:\"btn-group-sm\",attrs:{\"mode\":_vm.mode,\"pvConfigured\":_vm.pvConfigured},on:{\"updated\":_vm.setTargetMode}})],1):_vm._e(),(_vm.multi && _vm.hasTargetSoC)?_c('div',{staticClass:\"col-12 col-md-4 d-none d-md-block mt-3\"},[_c('div',{staticClass:\"mb-2\"},[_vm._v(\"Ladeziel\")]),_c('Soc',{staticClass:\"btn-group-sm\",attrs:{\"soc\":_vm.targetSoC,\"levels\":_vm.socLevels},on:{\"updated\":_vm.setTargetSoC}})],1):_vm._e(),(!_vm.multi)?_c('div',{staticClass:\"col-md-8 d-none d-md-block\"},[_c('LoadpointDetails',_vm._b({},'LoadpointDetails',_vm.details,false))],1):_vm._e(),_c('div',{staticClass:\"col-12 d-md-none\"},[_c('LoadpointDetails',_vm._b({},'LoadpointDetails',_vm.details,false))],1)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"btn-group btn-group-toggle bg-white shadow-none\"},[(_vm.caption)?_c('label',{staticClass:\"btn btn-outline-primary disabled caption font-weight-bold\"},[_vm._v(\" Ladeziel \")]):_vm._e(),_vm._l((_vm.levelsOrDefault),function(level,id){return _c('label',{key:id,staticClass:\"btn btn-outline-primary\",class:{ active: _vm.soc == level, first: !_vm.caption && id == 0 },attrs:{\"level\":level,\"id\":id}},[_c('input',{attrs:{\"type\":\"radio\"},domProps:{\"value\":level},on:{\"click\":function($event){return _vm.setTargetSoC(level)}}}),_vm._v(_vm._s(level)+\"% \")])})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Soc.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Soc.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Soc.vue?vue&type=template&id=5c59baa0&\"\nimport script from \"./Soc.vue?vue&type=script&lang=js&\"\nexport * from \"./Soc.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"btn-group btn-group-toggle bg-white shadow-none\"},[(_vm.caption)?_c('label',{staticClass:\"btn btn-outline-primary value disabled caption font-weight-bold\"},[_vm._v(\" Modus \")]):_vm._e(),_c('label',{staticClass:\"btn btn-outline-primary\",class:{ active: _vm.mode == 'off', first: !_vm.caption }},[_c('input',{attrs:{\"type\":\"radio\",\"value\":\"off\"},on:{\"click\":function($event){return _vm.setTargetMode('off')}}}),_vm._v(\"Stop \")]),_c('label',{staticClass:\"btn btn-outline-primary\",class:{ active: _vm.mode == 'now' }},[_c('input',{attrs:{\"type\":\"radio\",\"value\":\"now\"},on:{\"click\":function($event){return _vm.setTargetMode('now')}}}),_vm._v(\"Sofort \")]),(_vm.pvConfigured)?_c('label',{staticClass:\"btn btn-outline-primary\",class:{ active: _vm.mode == 'minpv' }},[_c('input',{attrs:{\"type\":\"radio\",\"value\":\"minpv\"},on:{\"click\":function($event){return _vm.setTargetMode('minpv')}}}),_c('span',{staticClass:\"d-inline d-lg-none\"},[_vm._v(\"Min\")]),_c('span',{staticClass:\"d-none d-lg-inline\"},[_vm._v(\"Min + PV\")])]):_vm._e(),(_vm.pvConfigured)?_c('label',{staticClass:\"btn btn-outline-primary\",class:{ active: _vm.mode == 'pv' }},[_c('input',{attrs:{\"type\":\"radio\",\"value\":\"pv\"},on:{\"click\":function($event){return _vm.setTargetMode('pv')}}}),_c('span',{staticClass:\"d-inline d-md-none\"},[_vm._v(\"PV\")]),_c('span',{staticClass:\"d-none d-md-inline\"},[_vm._v(\"Nur PV\")])]):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Mode.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Mode.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Mode.vue?vue&type=template&id=63314fe2&\"\nimport script from \"./Mode.vue?vue&type=script&lang=js&\"\nexport * from \"./Mode.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"mb-2\"},[_vm._v(_vm._s(_vm.socTitle || \"Fahrzeug\"))]),_c('div',{staticClass:\"progress\",staticStyle:{\"height\":\"24px\",\"font-size\":\"100%\",\"margin-top\":\"16px\"}},[_c('div',{staticClass:\"progress-bar\",class:{\n\t\t\t\t'progress-bar-striped': _vm.charging,\n\t\t\t\t'progress-bar-animated': _vm.charging,\n\t\t\t\t'bg-light': !_vm.connected,\n\t\t\t\t'text-secondary': !_vm.connected,\n\t\t\t\t'bg-warning': _vm.connected && _vm.minSoCActive,\n\t\t\t},style:({ width: _vm.socChargeDisplayWidth + '%' }),attrs:{\"role\":\"progressbar\"}},[_vm._v(\" \"+_vm._s(_vm.socChargeDisplayValue)+\" \")]),(_vm.minSoCActive && _vm.socChargeDisplayWidth < 100)?_c('div',{staticClass:\"progress-bar\",class:{\n\t\t\t\t'progress-bar-striped': _vm.charging,\n\t\t\t\t'progress-bar-animated': _vm.charging,\n\t\t\t\t'bg-warning': true,\n\t\t\t\t'bg-muted': true,\n\t\t\t},style:({ width: _vm.minSoCRemainingDisplayWidth + '%' }),attrs:{\"role\":\"progressbar\"}}):_vm._e()])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Vehicle.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Vehicle.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Vehicle.vue?vue&type=template&id=6c361988&\"\nimport script from \"./Vehicle.vue?vue&type=script&lang=js&\"\nexport * from \"./Vehicle.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-6 col-md-3 mt-3\"},[_c('div',{staticClass:\"mb-2 value\"},[_vm._v(\" Leistung \"),(_vm.socTimerActive)?_c('fa-icon',{staticClass:\"text-primary ml-1\",attrs:{\"icon\":\"clock\"}}):(_vm.socTimerSet)?_c('fa-icon',{staticClass:\"text-secondary ml-1\",attrs:{\"icon\":\"clock\"}}):_vm._e(),(_vm.climater == 'heating')?_c('fa-icon',{staticClass:\"text-primary ml-1\",attrs:{\"icon\":\"temperature-low\"}}):_vm._e(),(_vm.climater == 'cooling')?_c('fa-icon',{staticClass:\"text-primary ml-1\",attrs:{\"icon\":\"temperature-high\"}}):_vm._e(),(_vm.climater == 'on')?_c('fa-icon',{staticClass:\"text-primary ml-1\",attrs:{\"icon\":\"thermometer-half\"}}):_vm._e()],1),_c('h2',{staticClass:\"value\"},[_vm._v(\" \"+_vm._s(_vm.fmt(_vm.chargePower))+\" \"),_c('small',{staticClass:\"text-muted\"},[_vm._v(_vm._s(_vm.fmtUnit(_vm.chargePower))+\"W\")])])]),_c('div',{staticClass:\"col-6 col-md-3 mt-3\"},[_c('div',{staticClass:\"mb-2 value\"},[_vm._v(\"Geladen\")]),_c('h2',{staticClass:\"value\"},[_vm._v(\" \"+_vm._s(_vm.fmt(_vm.chargedEnergy))+\" \"),_c('small',{staticClass:\"text-muted\"},[_vm._v(_vm._s(_vm.fmtUnit(_vm.chargedEnergy))+\"Wh\")])])]),(_vm.range >= 0)?_c('div',{staticClass:\"col-6 col-md-3 mt-3\"},[_c('div',{staticClass:\"mb-2 value\"},[_vm._v(\"Reichweite\")]),_c('h2',{staticClass:\"value\"},[_vm._v(\" \"+_vm._s(Math.round(_vm.range))+\" \"),_c('small',{staticClass:\"text-muted\"},[_vm._v(\"km\")])])]):_c('div',{staticClass:\"col-6 col-md-3 mt-3\"},[_c('div',{staticClass:\"mb-2 value\"},[_vm._v(\"Dauer\")]),_c('h2',{staticClass:\"value\"},[_vm._v(\" \"+_vm._s(_vm.fmtShortDuration(_vm.chargeDuration))+\" \"),_c('small',{staticClass:\"text-muted\"},[_vm._v(_vm._s(_vm.fmtShortDurationUnit(_vm.chargeDuration)))])])]),(_vm.hasVehicle)?_c('div',{staticClass:\"col-6 col-md-3 mt-3\"},[_c('div',{staticClass:\"mb-2 value\"},[_vm._v(\"Restzeit\")]),_c('h2',{staticClass:\"value\"},[_vm._v(\" \"+_vm._s(_vm.fmtShortDuration(_vm.chargeEstimate))+\" \"),_c('small',{staticClass:\"text-muted\"},[_vm._v(_vm._s(_vm.fmtShortDurationUnit(_vm.chargeEstimate)))])])]):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoadpointDetails.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoadpointDetails.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LoadpointDetails.vue?vue&type=template&id=024b8b62&\"\nimport script from \"./LoadpointDetails.vue?vue&type=script&lang=js&\"\nexport * from \"./LoadpointDetails.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","export default {\n methods: {\n // collect all target component properties from current instance\n collectProps: function (component) {\n let data = {};\n for (var p in component.props) {\n data[p] = this[p];\n }\n return data;\n },\n },\n};\n","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Loadpoint.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Loadpoint.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Loadpoint.vue?vue&type=template&id=e9ab9ede&\"\nimport script from \"./Loadpoint.vue?vue&type=script&lang=js&\"\nexport * from \"./Loadpoint.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Site.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Site.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Site.vue?vue&type=template&id=013c24df&\"\nimport script from \"./Site.vue?vue&type=script&lang=js&\"\nexport * from \"./Site.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Main.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Main.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Main.vue?vue&type=template&id=5e3635d0&\"\nimport script from \"./Main.vue?vue&type=script&lang=js&\"\nexport * from \"./Main.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"row mt-4 border-bottom\"},[_c('div',{staticClass:\"col-12\"},[_c('p',{staticClass:\"h1\"},[_vm._v(_vm._s(_vm.title || \"Home\"))])])]),_c('div',{staticClass:\"row h5\"},[_c('div',{staticClass:\"col-md-4\"}),_c('div',{staticClass:\"col-6 col-md-2 py-3\"},[_vm._v(\" Netzzähler: \"),(_vm.gridConfigured)?_c('span',{staticClass:\"text-primary\"},[_vm._v(\"✓\")]):_c('span',{staticClass:\"text-primary\"},[_vm._v(\"—\")])]),_c('div',{staticClass:\"col-6 col-md-2 py-3\"},[_vm._v(\" PV Zähler: \"),(_vm.pvConfigured)?_c('span',{staticClass:\"text-primary\"},[_vm._v(\"✓\")]):_c('span',{staticClass:\"text-primary\"},[_vm._v(\"—\")])]),_c('div',{staticClass:\"col-6 col-md-2 py-3\"},[_vm._v(\" Batteriezähler: \"),(_vm.batteryConfigured)?_c('span',{staticClass:\"text-primary\"},[_vm._v(\"✓\")]):_c('span',{staticClass:\"text-primary\"},[_vm._v(\"—\")])])]),_vm._l((_vm.loadpoints),function(loadpoint,id){return _c('div',{key:id,attrs:{\"loadpoint\":loadpoint,\"id\":'loadpoint-' + id}},[_c('div',{staticClass:\"row mt-4 border-bottom\"},[_c('div',{staticClass:\"col-12\"},[_c('p',{staticClass:\"h1\"},[_vm._v(_vm._s(loadpoint.title || \"Ladepunkt\"))])])]),_c('div',{staticClass:\"row h5\"},[_c('div',{staticClass:\"col-md-4\"}),_c('div',{staticClass:\"col-6 col-md-2 py-3\"},[_vm._v(\" Ladezähler: \"),(loadpoint.chargeConfigured)?_c('span',{staticClass:\"text-primary\"},[_vm._v(\"✓\")]):_c('span',{staticClass:\"text-primary\"},[_vm._v(\"—\")])]),_c('div',{staticClass:\"col-6 col-md-2 py-3\"},[_vm._v(\" Phasen: \"),_c('span',{staticClass:\"text-primary\"},[_vm._v(_vm._s(loadpoint.phases)+\"p\")])]),_c('div',{staticClass:\"col-6 col-md-2 py-3\"},[_vm._v(\" Min. Strom: \"),_c('span',{staticClass:\"text-primary\"},[_vm._v(_vm._s(loadpoint.minCurrent)+\"A\")])]),_c('div',{staticClass:\"col-6 col-md-2 py-3\"},[_vm._v(\" Max. Strom: \"),_c('span',{staticClass:\"text-primary\"},[_vm._v(_vm._s(loadpoint.maxCurrent)+\"A\")])])]),_c('div',{staticClass:\"row h5\"},[_c('div',{staticClass:\"col-md-4\"}),_c('div',{staticClass:\"col-md-8 h2\"},[_vm._m(0,true),_c('div',{staticClass:\"row h5\"},[_c('div',{staticClass:\"col-6 py-3\"},[_vm._v(\" Modell: \"),_c('span',{staticClass:\"text-primary\"},[_vm._v(_vm._s(loadpoint.socTitle || \"—\"))])]),_c('div',{staticClass:\"col-6 py-3\"},[_vm._v(\" Kapazität: \"),_c('span',{staticClass:\"text-primary\"},[_vm._v(_vm._s(loadpoint.socCapacity)+\"kWh\")])])])])])])})],2)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"row py-3 h2 border-bottom\"},[_c('div',{staticClass:\"col-12\"},[_vm._v(\"Fahrzeug\")])])}]\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Config.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Config.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Config.vue?vue&type=template&id=63d7c897&\"\nimport script from \"./Config.vue?vue&type=script&lang=js&\"\nexport * from \"./Config.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import VueRouter from \"vue-router\";\nimport Vue from \"vue\";\nimport Main from \"./views/Main\";\nimport Config from \"./views/Config\";\n\nVue.use(VueRouter);\n\nconst routes = [\n { path: \"/\", component: Main },\n { path: \"/config\", component: Config },\n];\n\nexport default new VueRouter({\n routes,\n linkExactActiveClass: \"active\", // Bootstrap